Uma protoboard é uma plaquinha de plástico, cheia de furinhos. O que a torna importante é o que ela tem por dentro. Filosófico, não?
Dentro da protoboard, há ligações elétricas entre os buraquinhos do meio, na vertical, e entre os buraquinhos das extremidades, na horizontal, como nesse desenho:
Protoboard e suas conexões verticais e horizontais |
Ficou claro, então, que a protoboard, sozinha, não faz nada. Você precisa ter um monte de componentes eletrônicos para fazer coisas interessantes, como isso aqui:
Robô feito com protoboard, arduino e servo motores |
Neste meu robozinho, eu usei:
- Uma protoboard;
- Um Arduino Uno (uma plaquinha programável);
- Quatro (4) servo motores de 9g;
- Dois suportes para duas pilhas AA;
- Três pilhas AA;
- Vários jumpers (fios com conectores) coloridos;
- Vários pedaços de fio flexível;
- Fita isolante;
- Fita crepe.
Se vocês quiserem ver o robô em movimento, aqui está um vídeo:
Os servo motores que eu usei, no entanto, só giram 180°. Ou seja, cada perna não pode dar uma volta completa, então cada perna tem que ir e voltar. Para o robô não ficar indo e voltando sem sair do lugar, eu tive que fazer um pé para ele. Cortei uma embalagem de plástico e dobrei para ficar como um joelho. Ela dobra para trás para sair do caminho, mas fica firme na frente para dar propulsão ao robô quando o motor desce. Prendi essa pecinha com um arame que acabou ajudando mais ainda na propulsão. É como se o robô estivesse de salto alto, tocando o salto primeiro no chão. As analogias que eu tinha em mente eram muito mais másculas. Pensei num elefante, ficou uma galinha. Funcionou melhor, na verdade.
Eu pluguei os servos de trás nos pinos 9 (esquerda) e 10 (direita) e os da frente nos pinos 6 (esquerda) e 5 (direita). Estes pinos transmitem um sinal modularizado. Eu ainda não sei bem o que é isso, mas o fato é que esse sinal não é suficiente para energizar os motores. O arduino tem saídas de 5V e 3,3V que até poderiam energizar os motores, mas são só duas. Além disso, os motores usam muito energia e, ligados nessas portas, fazem o arduino que ficar desligando por falta de força. Então tive que colocar uma fonte extra de energia.
Arduino com servos conectados aos pinos 10, 9, 6 e 5 |
De forma bem esquemática, as ligações ficaram assim:
Ligações dos servos e pilhas ao Arduino |
O Fritzing, programa que usei para desenhar, não tem um desenhinho de suporte de pilha capenga, mas você pode usar três ou quatro pilhas.
Uma coisa importante a se notar é que, mesmo não usando o Arduino como fonte de energia, você precisa conectar o negativo das suas pilhas ao negativo dele, pois só assim a corrente elétrica pode sair dele e chegar até os motores.
Espero ter conseguido explicar em linhas gerais como conectar múltiplos servo motores ao Arduino. Se tiverem mais dúvidas, deixem nos comentários que eu vou tentando explicar.
Quem leu até aqui pode se interessar em saber que não precisava ter lido nada, pois eu fiz um segundo vídeo explicando essas mesmas coisas...
E quem resolver tentar fazer em casa, vai precisar do código para rodar no Arduino, então vou colá-lo aqui embaixo. Fiquem à vontade para usar o código, os desenhos, os vídeos e as fotos desse post como quiserem, só não me responsabilizem pelo que vier a dar errado.
Abraços,
Otávio
// Walking Breadboard / Protoboard Ambulante
// by Otavio Carneiro dos Santos <http://umcarneiro.blogspot.com>
// based on Sweep, by BARRAGAN (example in Arduino)
// This code is in the public domain.
#include <Servo.h>
Servo pataEsquerdaTras;
Servo pataEsquerdaFrente;
Servo pataDireitaTras;
Servo pataDireitaFrente;
int pos = 0; //variavel temporaria
//guarda a posicao atual do servo
void setup()
{
pataEsquerdaTras.attach(9);
pataDireitaTras.attach(10);
pataEsquerdaFrente.attach(6);
pataDireitaFrente.attach(5);
}
void loop()
{
movePataEsquerdaParaFrente(pataEsquerdaTras);
movePataEsquerdaParaTras(pataEsquerdaTras);
delay(1000);
movePataDireitaParaFrente(pataDireitaFrente);
movePataDireitaParaTras(pataDireitaFrente);
delay(1000);
movePataEsquerdaParaFrente(pataEsquerdaFrente);
movePataEsquerdaParaTras(pataEsquerdaFrente);
delay(1000);
movePataDireitaParaFrente(pataDireitaTras);
movePataDireitaParaTras(pataDireitaTras);
delay(1000);
}
//move o servo esquerdo informado para frente
//nota: os servos do lado esquerdo ficam espelhados em relacao
// aos do lado direito, por isso ha metodos distintos
// para cada lado.
void movePataEsquerdaParaTras(Servo servoToMove)
{
int posInicial = 1;
int posFinal = 90;
for(pos = posInicial; pos < posFinal; pos += 1)
{
servoToMove.write(pos);
delay(15);
}
}
void movePataEsquerdaParaFrente(Servo servoToMove)
{
int posInicial = 1;
int posFinal = 90;
for(pos = posFinal; pos>=posInicial; pos-=1)
{
servoToMove.write(pos);
delay(15);
}
}
void movePataDireitaParaTras(Servo servoToMove)
{
int posInicial = 90;
int posFinal = 180;
for(pos = posFinal; pos>=posInicial; pos-=1)
{
servoToMove.write(pos);
delay(15);
}
}
void movePataDireitaParaFrente(Servo servoToMove)
{
int posInicial = 90;
int posFinal = 180;
for(pos = posInicial; pos < posFinal; pos += 1)
{
servoToMove.write(pos);
delay(15);
}
}
Otávio,
ResponderExcluirAcho que posso te ajudar. Para movimentar os motores use as saídas analógicas do arduíno. Para não ter problemas de potência recomendo fortemente que você utilize relés. Eles permitirão ao arduíno fornecer mais potência.
Um abraço,
Areno.
Legal, Areno, obrigado!
ExcluirÉ bom saber que tem engenheiro lendo o blog ;).
Abraço,
Otávio
Que isso Otávio precisando é só chamar. O blog é bom!!! Qualquer coisa estamos aí. Também estou pensando em programar no arduíno, mas estou que o PIC é bem mais barato...
ResponderExcluirAbraço,
Areno.
Otávio, seu post está cadastrado em no site DevTronic (www.devtronic.com.br). Muito obrigado. Assim que tiver mais postagens, por favor, envie-nos. Abraços. Marcelo Cuin
ResponderExcluir