segunda-feira, 13 de maio de 2013

Controlando Leds e Servo Motor pelo teclado usando CASE

Com os conhecimentos que possuimos ao longo do nosso curso, já podemos fazer uso da porta serial, a Serial Monitor, para a entrada e monitoramento de dados.
Podemos nos comunicar com o Arduíno de maneira que o mesmo responda ou execute alguma funçao ao receber um comendo via teclado. Isso é primordial para o nosso próximo passo, que será a comunicação sem fio e o envio de dados para um display.
No código abaixo podemos perceber que o Arduino vai esperar algum dado na serial ( pois fizemos uso da condicional "if" seguida de "serial.available". Lemos esse dado através do comando "Serial.read()"
Chamamos esse dado e armazenamos o valor na variável "posicao"
Usando a SWICTH CASE, estrutura que estudamos em C++ com "caso", facilita nossa vida ao invés de usarmos uma ifinidade de "IF". No lugar da estrutura se usamos a estrutura caso.
Caso o valor de posicao seja '1' ele liga o Led da porta 11, usamos 'q' para desliga-lo. O Led da porta 10 liga em '2' e desliga em 'w', e assim quantps quisessemos criar. Fiqeum livres para criar....
Ao digitarmos '3' na Serial, o nosso servo mortor ligado a porta que escolhemos ( no caso a 9 por ser PWM), o servo ficará em 180°, ou seja, com o braço para a direita, e assim seguindo as demais chaves.
Vejam o código :

#include <Servo.h>
Servo myservo;
void setup()
{
Serial.begin(9600);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
myservo.attach(9);  // Porta de Ataque do servo
}

void loop(){
  if (Serial.available())
     {
      char posicao = Serial.read();          
      switch (posicao){
      case '1':
        digitalWrite(11,HIGH);
        break;
      case '2':
        digitalWrite(10,HIGH);
        break;
      case 'q':
        digitalWrite(11,LOW);
        break;
      case 'w':
        digitalWrite(10,LOW);
        break;
      case '3':
        myservo.write(180);
        break;
      case '4':
        myservo.write(90);
        break;
      case '5':
        myservo.write(0);
        break;

      }
      delay(10);
      Serial.println(posicao);
  }
}


Veja o resultado no video.
http://www.youtube.com/watch?v=zIGOWM8MDwo&feature=youtu.be
Usando a imagição ou sua necessidade, podemos implementar qq circuito eletrônico e condicioná-lo.


Um comentário:


  1. Legal, obrigado.

    Me pareceu bem simples. para nos iniciantes em programação.

    ResponderExcluir