Ponte H com 8 Transistores TIP120 ligado ao Arduino. |
Visão frontal do projeto, faróis mencionados anteriormente. |
A Finalidade desse chassi que ajeitei e para estudar o arduino usando diversos controles (PS1, PS3, Joystick) e fazer controles dos projetos também por sem fio (Bluetooth, WiFi, RF, etc.), mas vai ser tudo com calma.
Para começar com esse projeto, eu mesmo fiz um controle, me baseei em um controle de Master System II... Sendo que no controle possui 6 botões, no que eu mesmo montei possui 5 botões (direcionais e botão para qualquer função determinada). Com esse controle não precisa de biblioteca só usei pushbutton, mas nos controles em que me referi anteriormente, precisa sim de biblioteca no arduino. Logo abaixo mostra o layout e a foto de como ficou o controle.
Na programação, os botões ficaram nas portas digitais... Praticamente usei quase todas as portas digitais do arduino com esse projeto do Carrinho sendo controlado por um controle de Game. A programação é bem fácil, praticamente é idem ao do Sensor de Toque.
Programação:
//Farol
int led1 = 11;
int led2 = 12;
//Motores
int direcaoE = 5;
int direcaoD = 6;
int motorF = 9;
int motorT = 10;
//Controle
int cima = 2;
int vcima = 0;
int baixo = 3;
int vbaixo = 0;
int direito = 4;
int vdireito = 0;
int esquerdo = 7;
int vesquerdo = 0;
int tecla = 8;
int vtecla = 0;
void farol_ligado()
{
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
}
void farol_desligado()
{
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
void direcao(int dE, int dD)
{
analogWrite(direcaoE, dE);
analogWrite(direcaoD, dD);
}
void movimento(int mF, int mT)
{
analogWrite(motorF, mF);
analogWrite(motorT, mT);
}
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(direcaoE, OUTPUT);
pinMode(direcaoD, OUTPUT);
pinMode(motorF, OUTPUT);
pinMode(motorT, OUTPUT);
pinMode(cima, INPUT);
pinMode(baixo, INPUT);
pinMode(esquerdo, INPUT);
pinMode(direito, INPUT);
pinMode(tecla, INPUT);
}
void loop()
{
vcima=digitalRead(cima);
vbaixo=digitalRead(baixo);
vesquerdo=digitalRead(esquerdo);
vdireito=digitalRead(direito);
vtecla=digitalRead(tecla);
if(vcima == HIGH)
{
movimento(255,0);
}
if(vbaixo == HIGH)
{
movimento(0,255);
}
if(vesquerdo == HIGH)
{
direcao(255,0);
}
if(vdireito == HIGH)
{
direcao(0,255);
}
if(vtecla == HIGH)
{
farol_ligado();
}
else
{
farol_desligado();
movimento(0,0);
direcao(0,0);
}
}
Na programação, antes de fazer a
preparação de tudo no void
setup() criei 4 novas funções... Essas funções que criei são para
facilitar a programação, para não ficar repetindo varias vezes a mesma
programação. Criando uma função (um void), invés de digitar varia vezes a mesma programação que
deseja, com isso só ao digitar o nome da função irá executar o que está dentro
dela... Com isso diminui muito a quantidade de linhas na programação e pode
deixar mais claro para entendê-lo. As funções são para ligar e desligar o
farol, outra que irá servir para o controle da direção e outro para aceleração
(se irá se movimentar para frente ou para trás).
Depois que calibrei os botões, digitalRead(),
a programação era quando eu pressionar o botão determinado e der o valor 1 no
arduino, irá executar o que programação (e: apertei o botão cima, quando
pressionei o arduino estava lendo 0 passou a ler para 1, quando estiver em 1 o
carrinho irá para frente). Mas se nenhuns dos botões forem apertados, o
carrinho irá ficar parado, como mostra no else (desativei todas as funções).
Vídeo:
1 comentários:
Amigo, é bem bacana esse teu projeto, tens o esquema de ligação
no carrinho e qual aplicativo via bluetooth no celular baseou-se para construir o teu controle?
Postar um comentário