Bienvenido

"Seja Bem vindo ao Cartola Aberta, aqui você encontra um mundo cheio de ideias e dicas de utilidades para seu crescimento pessoal"

quinta-feira, 19 de dezembro de 2013

Controle de Robô com Arduino e BlueControl

Na postagem anterior (IGNIS 1 - Controle de Robô - Arduino e Android) você viu o controle de carro de robô usando arduino e um app que eu fiz usando o app inventor (IGNIS I). Mas para aqueles que desejam utilizar um programa genérico como o BlueControl reorganizei o código no arduino bastando apenas baixar o app no google play para envio de comandos serialmente.


Descrição do BlueControl
Blue Control é um controle remoto universal básico para Blue-Tooth dispositivos seriais habilitados, tais como módulos de dente azul conectado a um micro-ontroller. Para cada tecla pressionada o código ASCII correspondente para a etiqueta será enviada. Por exemplo pressionando botões AH irá enviar os charactes "A" - "h". A cima, baixo, esquerda, direita, centro e botões irá enviar "U", "D", "L", "R", e os personagens de "C". Esperemos que isto irá inspirar as pessoas a criar um monte de diversão dispositivos controlados Blue-Tooth.
Logo programei o arduino para quando receber o caracter "U" o carro ir pra frente, "D" ir pra trás, "R" ir pra direita, "L" ir pra esquerda e "C" ligar ou desligar o farol.

Demonstração:

Segue o programa do arduino:


/* CONTROLE DE CARRO ROBÔ

Autor: Pedro Vasconcelos
cartolaaberta.blogspot.com
Sobre o programa:
  O programa a seguir é bem simples baseado em uso de
  comunicação serial e um pouco de eletrônica para a ligação
  dos motores
*/
    const int frente_motor1 = 2; //SAÍDA DIGITAL 22
    const int volta_motor1 = 3;
    const int frente_motor2 = 4;
    const int volta_motor2 = 5;
    const int farol = 6;
    int farol_state = 0;
    //char F;
    int tempo_motor = 1000;// Tempo em milisegundo que os motores ficarão ligados
    void setup() {
      Serial.begin(9600);
      pinMode(2, OUTPUT);              // OUTPUT -> Define porta como saída
      pinMode(frente_motor1, OUTPUT); //Motor Esquerdo
      pinMode(volta_motor1, OUTPUT);
      pinMode(frente_motor2, OUTPUT); //Motor Direito
      pinMode(volta_motor2, OUTPUT);
      pinMode(farol, OUTPUT);
    }
    
    void loop() {
      if (Serial.available()) { // se receber algum sinal na serial fazer o que descreve a baixo
        char comando = Serial.read();
        if (comando == 'U'){    // F = Frente
          Serial.print("motor pra frente"); // Não há necessidade desse código (so pra imprimir o estado)
          digitalWrite(2, HIGH);            // pino para estado alto (saída 5v)
          digitalWrite(frente_motor1, HIGH);
          digitalWrite(frente_motor2, HIGH);
          delay (tempo_motor);
          digitalWrite(frente_motor1, LOW); // pino para estado baixo (saída 0v)
          digitalWrite(frente_motor2, LOW);
          digitalWrite(2, LOW);
        }
          if (comando == 'D'){ //V = Volta
            Serial.print("motor pra tras ");// Não há necessidade desse código (so pra imprimir o estado)
            digitalWrite(volta_motor1, HIGH);
            digitalWrite(volta_motor2, HIGH);
            delay (tempo_motor);
            digitalWrite(volta_motor1, LOW);
            digitalWrite(volta_motor2, LOW);
          }
          if (comando == 'R'){    //D = Direita
            Serial.print("carro pra direita ");// Não há necessidade desse código (so pra imprimir o estado)
            digitalWrite(frente_motor1, HIGH);
            delay (tempo_motor);
            digitalWrite(frente_motor1, LOW);
          }
          if (comando == 'L'){    //E = Esquerda
            Serial.print("carro pra esquerda ");// Não há necessidade desse código (so pra imprimir o estado)
            digitalWrite(frente_motor2, HIGH);
            delay (tempo_motor);
            digitalWrite(frente_motor2, LOW);
          }
          if (comando == 'C'){    //E = Esquerda
            farol_state = !farol_state;
            if(farol_state == 1){
            digitalWrite(farol, HIGH);
            }
            else{digitalWrite(farol, LOW);
            }
          }
        }
      }
    

Nenhum comentário: