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 basei 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 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 é 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 varias 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
entende-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 dar 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 nenhum dos botões forem
apertados, o carrinho irá ficar parado, como mostra no else (desativei todas as funções).
Chupado no Blog do Nareba
3 comentários:
boa noite mano, adorei o projeto. gostaria de saber si vc tem algum tutorial pratico de programação ai. Ja faz tempo que tento aprender trabalhar com programação. valeu mano, posta mais muito bem feito.
parabéns pelo projeto. Vc tem algum tutorial pratico ai como trabalhar com programação, eu não tenho nenhum conhecimento nessa area. valeu, continue assim
Olá Nilson, não e meu o projeto, participo de vários grupos e divulgo as tecnologias e projetos. Procure referencia em arduino que e o mais fácil para começar nessa área. Hoje existe até arduino com Android.
Postar um comentário