sexta-feira, 23 de setembro de 2011

Carrinho com Controle Caseiro

     Primeiramente montei uma base de um carrinho de controle velho (Meu amigo Francisco me doou) e refiz o circuito interno. Coloquei a ponte H com transistores no projeto, o circuito da ponte H na postagem logo abaixo a essa. O carrinho possui também faróis, usei 2 LEDs de alto brilho.
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.
     Aproveitei os Direcionais de um controle de video game velho e coloquei no novo controle, usei resistores de 1kohm. O cabo eu aproveitei um que tinha, é um cabo de rede. O layout e para fazer a caneta na placa nos furos logo acima (7 furos): 5v, Botão Desce, Botão Direito, Botão Cima, Botão Esquerdo, Botão Solto e GND
     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:

Unknown disse...

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

 
Blogger Templates