LusoRobótica - Robótica em Português
Sobre o LusoRobótica - antigo => Sugestões e Questões => Tópico iniciado por: zordlyon em 25 de Fevereiro de 2010, 16:55
-
Bem pessoal, sou novo aqui, e ja tenho o arduino a uns tempos...
Entao deu me na ideia de construir um pequeno robo com o comando nunchuck...
entao andei a procurar se alguem ja tinha feito algo assim, e depois no youtube, deparei com o sr. Fifas tinha aqui a mesma coisa que eu tentei fazer...
so que tenho uma duvida...
Supostamente segundo ja li, o L293D para controlar motores DC, tem o VSS que e uma alimentaçao externa...entao para testar os motores DC, eu liguei o VSS a porta 5v e GND do arduino e depois coloquei uns botoes, e com um simples codigo la consegui colocar os motores DC a funcionar quando carregasse nos botoes...Ate ai tudo bem...
Entao depois de ter testado os motores pensei, "bem agora e so passar para as funçoes do nunchuck e ja esta"....mas deparei me com um se....
Como o comando nunckuck tb precisa de alimentaçao, eu entao liguei o Vcc e Gnd do comando ao msm sitio onde liguei o VSS do chip L293, como se ve na imagem a baixo, e la esta nao funciona....pergunto e se esta ligaçao esta correta? Ou se poderá ser o codigo que esta mal...
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg684.imageshack.us%2Fimg684%2F4180%2Fesquemamotores.png&hash=7338fba7d88b250536f3748b7a978ef220588524)
Cumprimentos...
Ora bem ja resolvi o problema, mas agora estou com outro problema...
if (c_button==0){//verifica se o botao C esta pressionado ou nao, caso esteja pressionado liga os 4 LED's
digitalWrite(motor2Pin, HIGH);
digitalWrite(enablePin1, HIGH);
digitalWrite(motor3Pin, HIGH);
digitalWrite(enablePin2, HIGH);
}
if(joy_y_axis<115){//Verifica o eixo dos Y se estiver menor que 115 liga o LED 2 (de baixo)
digitalWrite(motor2Pin, HIGH);
digitalWrite(motor3Pin, HIGH);
digitalWrite(enablePin2, HIGH);
digitalWrite(enablePin1, HIGH);
}
else{
digitalWrite(enablePin1, LOW);
digitalWrite(enablePin2, LOW);
}
if(joy_y_axis>140 && joy_y_axis<=255){//Verifica se o Eixo dos Y esta entre 140 e 255, caso esteja liga o LED 3(de cima)
digitalWrite(motor1Pin, HIGH);
digitalWrite(motor4Pin, HIGH);
digitalWrite(enablePin2, HIGH);
digitalWrite(enablePin1, HIGH);
}
else{
digitalWrite(enablePin1, LOW);
digitalWrite(enablePin2, LOW);
}
Ao ter este codigo para o por a andar para a frente e para traz com o joystick, por exemplo carrego para a frente e ele anda, e se carregar de seguida para traz ele deixa de andar...tnh que fazer reset e se fizer reset, carrego para tras e ele ja anda para tras, mas se carregar para a frente ele ja nao anda para a frente...
Conclusao queria tentar resolver isto, porque ele so faz uma instruçao...para fazer outro movimento tenho que fazer reset...
Cumprimentos...
-
Como estás a alimentar o Arduino?
Não é por USB, certo? É que as portas USB têm 5v, e não têm corrente para tanta coisa.
Conselho: Alimenta os motores com uma fonte externa. (8 pino do L293D)
Isto partindo do pressuposto que usaste a alimentação do USB.
-
Sim ja esta... Obrigado na mesma pela resposta, estive a programar as funçoes do nunchuck, tenho agora aqui um comando nunchuck com uma L293D a controlar 2 Motores DC quer com o joystick ou com o Acelerometro....
Vou ver se faço mais umas coisitas estes dias e depois deixo aqui o codigo para quem quiser experimentar, assim como a montagem...
Cumprimentos...
-
Boas
desculpa não ter respondido à PM mais cedo:P
Ainda bem que já está. Já agora, sempre era da alimentação, certo?
Cumprimentos.
-
sim.. Alimentei a L293D com uma pilha de 9v e ja esta a andar ;D ;D
vou ver se coloco aqui um pequeno video e o codigo para se alguem quiser saber...
Cumprimentos..
-
Adorei! ;) ;D ::)