Show Posts
Pages: 1 ... 17 18 [19] 20 21 ... 34
271  International / Portugues / Re: COMUNICAÇÃO I2C COM VARIOS ATMEGA8 on: May 08, 2013, 05:38:54 pm
Perdoe-me, mas tens de usar 1 atmega8 e poder usar alguns ADC (conversor analogo para digital) ou tens realmente de usar todos esses atmega8?

Aqui tem um exemplo usando I2c com dois arduinos (leia-se atmega ^^), parece-se exatamente o que queres =)
http://karlbenzrobotica.blogspot.com.br/2012/04/o-protocolo-i2c-no-arduino.html

+1 http://www.uchobby.com/index.php/2008/09/16/introduction-to-i2c/

Tem mais no google se procurarmos por arduino i2c smiley-wink
272  International / Portugues / Re: COMUNICAÇÃO I2C COM VARIOS ATMEGA8 on: May 08, 2013, 12:33:59 pm
Opa... Eu tinha esse site http://www.hobbytronics.co.uk/arduino-adc-i2c-slave guardado para a prosperidade.

Vamos ver se outros colegas apresentam outras opções =)
273  International / Portugues / Re: Erro a enviar programa para um arduino Mega 2560 on: May 07, 2013, 08:07:53 pm
Eu li muitas discussões sobre esses fuses, mas por enquanto é muito para eu entender (já estou nos tarja preta rs)

Inclusive salvei o link http://www.engbedded.com/fusecalc e a discussão http://arduino.cc/forum/index.php?topic=22777.0

Achei mais seguro fazer o upload do bootloader do arduino (que pelo que entendi já seta os fuzes) e depois apenas gravar os hex quando for deixar em um circuito definitivo.

É isso ai, obrigado por compartilhar!
274  International / Portugues / Re: Problema com motor de passo. on: May 07, 2013, 07:55:51 pm
Olá...

Também não entendi o objetivo dos loops que estão no teu código (os while e for).

Quando usamos entradas digitais (botões ou sensores), Delays longos (e agora eu incluo os loops smiley-evil) atrapalham bastante a interação, pois enquanto o arduino esta no delay (ou no loop) "tudo para".

No início eu tive problemas com a livraria, então resolvi ver como a coisa funciona, passo a passo, e escrevi o código abaixo (coisa de novato  smiley-draw).

Code:
//Set Pins for Motor 2
int mLeftP1 = 8;
int mLeftP2 = 9;
int mLeftP3 = 10;
int mLeftP4 = 11;
//Set Pins for Motor 1
int mRightP1 = 4;
int mRightP2 = 5;
int mRightP3 = 6;
int mRightP4 = 7;

int mLeftNextStep = 1;
int mRigthNextStep = 1;

int mDelayTime = 10;
unsigned long mLastTime;

void setup(){
  Serial.begin(9600);
  Serial.println("Let's Play");
 
  //Set Pins for Motor Left
  pinMode(mLeftP1, OUTPUT);
  pinMode(mLeftP2, OUTPUT);
  pinMode(mLeftP3, OUTPUT);
  pinMode(mLeftP4, OUTPUT);
 
  //Set Pins for Motor Right
  pinMode(mRightP1, OUTPUT);
  pinMode(mRightP2, OUTPUT);
  pinMode(mRightP3, OUTPUT);
  pinMode(mRightP4, OUTPUT);
}

void loop(){
  if (Serial .available() > 0){
    char inChar = (char) Serial.read();
    if (inChar == '1'){
        //forward
      mLeftNextStep = MotorCCW(mLeftNextStep, mLeftP1, mLeftP2, mLeftP3, mLeftP4);
      mRigthNextStep = MotorCW(mRigthNextStep, mRightP1, mRightP2, mRightP3, mRightP4);
    }
    else if(inChar == '2'){//backward
      mLeftNextStep = MotorCW(mLeftNextStep, mLeftP1, mLeftP2, mLeftP3, mLeftP4);
      mRigthNextStep = MotorCCW(mRigthNextStep, mRightP1, mRightP2, mRightP3, mRightP4);
    }
    else if(inChar == '3'){//left
      mLeftNextStep = MotorCW(mLeftNextStep, mLeftP1, mLeftP2, mLeftP3, mLeftP4);
      mRigthNextStep = MotorCW(mRigthNextStep, mRightP1, mRightP2, mRightP3, mRightP4);
    }
    else if(inChar == '4'){//right
      mLeftNextStep = MotorCCW(mLeftNextStep, mLeftP1, mLeftP2, mLeftP3, mLeftP4);
      mRigthNextStep = MotorCCW(mRigthNextStep, mRightP1, mRightP2, mRightP3, mRightP4);
    }
    else if(inChar == '0') {//Stop
      MotorStop(mLeftP1, mLeftP2, mLeftP3, mLeftP4);
      MotorStop(mRightP1, mRightP2, mRightP3, mRightP4);}
    else
      Serial.println("Bad Command");
  }
}

void MotorStop(int mPin1, int mPin2, int mPin3, int mPin4){
  digitalWrite(mPin4, LOW);
  digitalWrite(mPin3, LOW);
  digitalWrite(mPin2, LOW);
  digitalWrite(mPin1, LOW);
}

int MotorCW(int Step, int mPin1, int mPin2, int mPin3, int mPin4){ 
  switch(Step){
    case 1:
      digitalWrite(mPin4, HIGH);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, LOW);
      break;
    case 2:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, HIGH);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, LOW);
      break;
    case 3:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, HIGH);
      digitalWrite(mPin1, LOW);
      break;
    case 4:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, HIGH);
      break;
  }
 
  if (Step == 4)
    Step = 1;
  else
    Step++;
   
    return Step;
}

int MotorCCW(int Step, int mPin1, int mPin2, int mPin3, int mPin4){
  switch(Step) {
    case 4:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, HIGH);
      break;
    case 3:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, HIGH);
      digitalWrite(mPin1, LOW);
      break;
    case 2:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, HIGH);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, LOW);
      break;
    case 1:
      digitalWrite(mPin4, HIGH);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, LOW);
      break;
  }
 
  if (Step == 1)
     Step = 4;
   else
     Step--;
     
   return Step;
}

int HalfMotorCW(int Step,int mPin1, int mPin2, int mPin3, int mPin4){
  switch(Step) {
    case 1:
      digitalWrite(mPin4, HIGH);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, LOW);
      break;
    case 2:
      digitalWrite(mPin4, HIGH);
      digitalWrite(mPin3, HIGH);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, LOW);
      break;
    case 3:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, HIGH);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, LOW);
      break;
    case 4:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, HIGH);
      digitalWrite(mPin2, HIGH);
      digitalWrite(mPin1, LOW);
      break;
    case 5:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, HIGH);
      digitalWrite(mPin1, LOW);
      break;
    case 6:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, HIGH);
      digitalWrite(mPin1, HIGH);
      break;
    case 7:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, HIGH);
      break;
    case 8:
      digitalWrite(mPin4, HIGH);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, HIGH);
      break;
  }
 
  if (Step == 1)
     Step = 4;
   else
     Step--;
     
   return Step;
}

int HalfMotorCCW(int Step,int mPin1, int mPin2, int mPin3, int mPin4){
  switch(Step) {
    case 8:
      digitalWrite(mPin4, HIGH);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, HIGH);
      break;
    case 7:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, HIGH);
      break;
    case 6:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, HIGH);
      digitalWrite(mPin1, HIGH);
      break;
    case 5:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, HIGH);
      digitalWrite(mPin1, LOW);
      break;
    case 4:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, HIGH);
      digitalWrite(mPin2, HIGH);
      digitalWrite(mPin1, LOW);
      break;
    case 3:
      digitalWrite(mPin4, LOW);
      digitalWrite(mPin3, HIGH);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, LOW);
      break;
    case 2:
      digitalWrite(mPin4, HIGH);
      digitalWrite(mPin3, HIGH);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, LOW);
      break;
    case 1:
      digitalWrite(mPin4, HIGH);
      digitalWrite(mPin3, LOW);
      digitalWrite(mPin2, LOW);
      digitalWrite(mPin1, LOW);
      break;
  }
 
  if (Step == 1)
     Step = 4;
   else
     Step--;
     
   return Step;
}

Sobre o resto, não há mais nada a acrescentar ao que o bubulindo já falou.
275  International / Portugues / Re: AJUDA - projecto residencial on: May 07, 2013, 03:51:03 pm
Precisas colocar um resistor entre o pino digital e o ground, veja neste post

edit: corrigido o link


No teu setup coloca isto:

Code:
pinMode(bot1, INPUT_PULLUP);
pinMode(bot2, INPUT_PULLUP);
pinMode(reset, INPUT_PULLUP);

E deixa os botões do pino para o GND.

Esta certo! Teu código usa o estado LOW para ativar a zona.
276  International / Portugues / Re: AJUDA - projecto residencial on: May 07, 2013, 11:48:47 am
Precisas colocar um resistor entre o pino digital e o ground, veja neste post

edit: corrigido o link
277  International / Portugues / Re: Alarme Paradox e Arduino Mega on: May 06, 2013, 06:58:46 pm
Sim, 7 volts são suficientes para o arduino, e a capacidade de 1.5A está alem das expectativas ^^

Sobre as demais ligações eu não percebi bem, e não conheço os sensores, precisaríamos mesmo de um multímetro rs... Mas se os sensores trabalham com 12v, soa estranho fazê-los trabalhar com 5v, e também não tenho como imaginar qual a tensão de saída dos sensores...

A tensão necessária para colocar a porta digital do arduino é 3v, ou seja, de 3v até 5v, abaixo de 3v o estado será LOW. Como você disse que a tensão parece baixa, uma alternativa seria usar um um transistor ou um optoacoplador (este último te dá a segurança de não misturar os 5v do arduino com os 12v da central), pois para o circuito funcionar corretamente com duas fontes (estou imaginando as ligações) seria necessário compartilhar o ground.


Edit: ops... agora que percebi que o disparo dos sensores é feito por reles  smiley-zipper e o tamper é um interruptor ^^

Foi mal a viagem (passou o tempo de ir dormir) lol
278  International / Portugues / Re: Alarme Paradox e Arduino Mega on: May 06, 2013, 01:31:12 pm
Se forem todos ligados em serie só precisas de uma resistência.

Verdade, ai não importa qual sensor disparou.

Só é interessante usar portas distintas se for executar ações distintas para cada sensor. ^^

Creio que o máximo que o regulador do arduino oferece (na porta 5v) é 500mA, é preciso verificar essa capacidade e o quanto ele vai esquentar com essa corrente.

Retormando, encontrei esse site, fizeram uns testes http://australianrobotics.com.au/news/fuelling-your-arduino-why-you-should-use-an-external-power-breakout
279  International / Portugues / Re: Alarme Paradox e Arduino Mega on: May 06, 2013, 01:07:56 pm
Sim, um multímetro é essencial! Eu tenho um minipa, não me recordo agora o modelo (ele já tem mais de 15 anos ^^), mas depende do que você vai usar, veja as funções e os preços e o que te cabe.

Acabei de indicar esse link em outro post, considero o máximo de 20mA por porta e 100mA para o conjunto de portas com o mesmo endereço, mas prefiro gastar uns transistores smiley-wink ...no link tem mais detalhes.
http://playground.arduino.cc/Main/ArduinoPinCurrentLimitations
veja também as especificações das boads, é importante:
http://arduino.cc/en/Main/arduinoBoardUno

Creio que o máximo que o regulador do arduino oferece (na porta 5v) é 500mA, é preciso verificar essa capacidade e o quanto ele vai esquentar com essa corrente. Então, creio que o melhor seria você usar o Vin (que é a mesma entrada externa do arduino, antes do regulador) e usar um outro regulador de tensão, ou então uma fonte separada para para os sendores pode ser o ideal.
280  International / Portugues / Re: [Ajuda] Como descobrir a resistência de um determinado componente? on: May 06, 2013, 12:04:28 pm
Primeiro a resposta, a resistência pode ser medida usando um multímetro, cada ponta em um extremo do componente! smiley-yell

Deixando a brincadeira de lado, tua pergunta ficou confusa, pois o que acontece é que o motor consome 0,070mA (pode ocorrer de o motor consumir mais ao ser iniciado ou se algo oferecer resistência para a rotação, exemplo torque), ou seja, o problema não é o motor, mas a capacidade do circuito (da bateria) de fornecer corrente. Se colocares um resistor estarás limitando o funcionamento do motor, baixando a potência dele, e desperdiçando energia.

Como para ligá-lo ao arduino precisarás de uma interface (drive, transistores, shields, etc), podes usar uma porta com PWM, que é útil tanto na "economia" de corrente (é isso mesmo? rs) quanto na redução da rotação.

Sempre alertam de não ligar motores direto nas portas do arduino, pois as portas do arduino não possuem capacidade para alimentar esses motores, por serem "capazes" de fornecer corrente de até 20mA por porta, limitado à 100mA a soma de todas as portas do mesmo sitio.
Code:
http://arduino-info.wikispaces.com/ArduinoPinCurrent
281  International / Portugues / Re: Alarme Paradox e Arduino Mega on: May 06, 2013, 11:46:56 am
Carmolim,

Todas as tuas perguntas podem ser respondidas com um multímetro. Podes alimentar o sistema usando os 5V do arduino, se a corrente estiver dentro das especificações do regulador de tensão, mas creio que seja mais interessante outra fonte, de tensão igual a 5v e maior corrente (amperagem).

Sim, você terá de usar uma porta para cada sensor e um resistor para manter cada porta em baixa.

Sobre a energia do sistema de alarme, precisaríamos saber qual é ela, e aqui entra novamente o multímetro. O resto seria suposição.

282  International / Portugues / Re: [Dúvida] Dúvida sobre utilização de bateria de 9v na UNO. on: May 05, 2013, 07:22:41 am
Complementando ^^

Quando usas o conector USB, a tensão (que deve ser sempre 5v) alimenta diretamente o circuito, sem passar por qualquer regulagem.

Quando usas o conector de entrada externa (que é o mesmo que usar o pino VIn e o GND), a tensão passa por um regulador de tenção, que "reduz" a tensão para 5v, sendo assim, não importa a entrada que utilizas (POWER com 7v até 12v ou USB 5v) as saídas de 5v e 3.3v sempre terão essa tensão. Você pode conectar a bateria na entrada externa ou no Vin, pois são a mesma trilha na placa.
283  International / Portugues / Re: arduino, relay shield, controlar 12v on: May 05, 2013, 07:02:26 am
Sim
284  International / Portugues / Re: Comunicação Android com Arduino por USB on: May 03, 2013, 07:32:21 pm
http://arduino.cc/forum/index.php/topic,91261.msg875134.html#msg875134
285  International / Portugues / Re: Duvida codigo com receptor RXFLEX PLT263 (RESOLVIDO) on: May 02, 2013, 09:14:20 pm
É isso ai... E quanto mais aprendemos mais possibilidades encontramos, o único problema é que parece nunca ser suficiente para tudo o que queremos! rs

Bom divertimento com o teu arduino smiley-wink

Até
Pages: 1 ... 17 18 [19] 20 21 ... 34