quinta-feira, 21 de março de 2013

3º Projeto: Controlar um servo pelo teclado

    Nesse novo projeto iremos controlar um servo utilizando o teclado do PC. É um program simples onde entenderemos mais a fundo sobre os comandos Serial.
 

    Material:

                    - Arduino 
                    - Servo

    Esquema:

    Código:


#include <Servo.h>  //incluir a biblioteca de servo

Servo myservo;  //Inclusao do servo

int n = 0;  //Entradas seriais
int pos = 0;  //Posição zero para o servop

void setup(){
  Serial.begin(9600);  //Ativando a porta serial
  myservo.attach(8);  //Pino do servo+arduino
  myservo.write(0);  //Servo setado com valor zero
  Serial.flush();  //Limpando a memoria do serial
  Serial.println("Digite: \n 2-90 \n 3-180 \n 4-02");  //criação de um cabeçalho no serial
}

void loop(){
  if(Serial.available()>0){  //Teste se porta serial esta recebendo dados
    n = Serial.read();  //leitura de dados
    Serial.print("Valor lido: ");  
    Serial.println(n);  //Printa o valor teclado

    if(n==50){  //girar 90
    myservo.write(90);
    delay(500);
    }

    if(n==51){  //girar 180
    myservo.write(180);
    delay(500);
    }

    if(n==52){  //volta pra 0
    myservo.write(-180);
    delay(500);
    }
  }
  
  Serial.flush();
}

    Vídeo:

    Comentário sobre o código:

    Podemos notar que ao fazer o upload do código e abrirmos o serial(Crtl+Shift+M) aparecerá um tipo de cabeçalho:
                    Digite:
                             - 2-90
                             - 3-180
                             - 4-0

    Isso ocorre porque o Serial.print está no void setup, se estivesse no void loop seria constantemente mostrado na tela. 
    Temos a leitura do valor "n" que é gerado pelo teclado. Como o objetivo é comparar valores lidos pelo teclado precisamos utilizar o valor real do "n" e compara-lo em uma condição: (n==50) "n é igual a 50?", como 50 representa do digito "2", caso você tenha pressionado o número "2" a condição torna-se verdade e uma tarefa é executada.  
É possível usar outros valores e também acionar outros dispositivos como motores/leds usando essa mesma lógica, basta adicionar mais condições.

Agradeço a atenção


Um comentário:

  1. como faço para colocar letras no lugar de números? me ajudaria demais

    ResponderExcluir