Home » dia-a-dia » exemplo arduino, lcd, botões entrada analógica, led, serial
formats

exemplo arduino, lcd, botões entrada analógica, led, serial

Todo estudo feito, foi baseado nos tutoriais do site arduino.cc,  esse código e esquema já tem alguma vantagem eu mostro como fazer um código e organizado e fácil de entender, também fiz um esquema diferente da ligação do LCD pois o exemplo do site, usa pinos digitais distantes na placa, eu alterei para ficar com os pinos mais perto um do outro.
Outro ponto forte foi fazer os botões usando uma entrada Analógica, podendo por quantos botões eu quiser.  Dica do Guto guru da Eletrônica e meu chefe. Agradeço também ao Reche que me emprestou a câmera e a Empresa Tato por nacionalizar essa fantástica Placa, e ao Leandro que trabalha comigo que me emprestou o LCD e deu dicas.

Próximo Passo esperar o Receptor Infrared e fazer as brincadeiras com Controle de TV.

Segue o Código, espero que entendam, a IDE de programação usada foi a Arduino 0018 e rodou perfeitamente no Linux.
Veja o código :

/*
 Software: Serial, Escreve no Display e acend Leds, Le botões saida analógica.
 Hardware: LCD e Serial e Botões Analógicos
 LCD: Conexão no LCD Marrom no 1 do Display;
 LCD >>>> ARDUINO: (1 Vermelho > GND),(2 Marrom > 5v),(3 Amarelo > Potenciometro),
 (4 Laranja > Pino 7),(5 Azul > GND),(6 Verde > Pino 06), (11 Vermelho > Pino 05),
 (12 Marrom > Pino 04),(13 Amarelo > Pino 03),
 (14 Laranja > Pino 02); 
 Botões Analogica, 4 resistores de 4K7, 1 no GND, 1 no 5V, e 2 Entre os Botões.
   analogPin                 +5 V
       |                         |
       |                         \
       ----------------          /    4K7
                      |          \    
                      |          /
                      |          \
                      |____ \____|
                      |   BT1    |
                      |          \
                      |          /  
                      |          \    4K7
                      |          /
                      |          \
                      |____ \____|
                      |   BT2    |
                      |          |
                      |          \
                      |          /  
                      |          \    4K7
                      |          /
                      |          \
                      |____ \____|
                                 |
                                 |
                                 \
                                 /    4K7
                                 \
                                 /
                                 \
                                 /
                               _____  
                                ___     GND
                                 _
 
  A referência usada é a Default 5V analogReference(DEFAULT);
 
 Autor: Rafael Gimenes Leite - 06/04/2010
 */

#include <LiquidCrystal.h>              // incluindo a biblioteca do LCD
LiquidCrystal buy doxycycline online  lcd(7, 6, 5, 4, 3, 2); // iniciando o lcd com os numeros dos pinos que serão usados
int DigPin08 = 8;                    // setando o pino 10 usado pra led
int DigPin09 = 9;                    // setando o pino 9  usado pra led
int AnalogPin = 5;                  // setando o pino analogico
int Botao = -1;                     // variavel do botão
// setup
void setup() {
  lcd.begin(16, 2);               // configurando o numero de colunas e linhas do lcd
  lcd.print("iniciando hacks");  // Colocando uma mensagem no LCD
  pinMode(DigPin08,OUTPUT);     //setando o sinal como saida LED
  pinMode(DigPin09,OUTPUT);    //setando o sinal como saida LED
  Serial.begin(9600);         // setando a serial
  delay(1000);
}
// principal
void loop() {
  if (Botao < 0 ){
    Botao = RetornaBotaoAnalogico(AnalogPin,1,0); // lê os botões
  }
  switch (Botao) {
    case 0:
      ModoInicio();
    break;
    case 1:
      ModoSerial();
    break;
  case 2:
      ModoBeta();
    break;
  case 3:
      ModoAlpha();
    break;
  }
    delay(500);
}
/*
 Ativa ou Desativa um Pino
*/
void AtivarDesativarPinoDig(char estatus,int qualPino,int tempo){
  tempo = tempo * 1000;        //  mutiplicando por 1000
  digitalWrite(qualPino, estatus);   // liga o pino 
  if (tempo > 0){
    delay(tempo);
  }    // espera tempoAtivado segundos 
}
/*
 ModoSerial, Le a porta serial e plota no display.
*/
void ModoSerial(){
  delay(1000);
  lcd.clear();
  lcd.setCursor(0, 0);  // setando coluna zero linha 1;
  lcd.print("   LENDO SERIAL   ");
  delay(1000) ;
  if (Serial.available() > 0) {
    delay(100);  // delay de 100 ms
    lcd.clear();    // limpa o display
    AtivarDesativarPinoDig(LOW,DigPin08,0.1);     // apagando led pino
    AtivarDesativarPinoDig(HIGH,DigPin09,0.1);   // acendendo led pin
    lcd.clear();
    lcd.setCursor(0, 0);
     while (Serial.available() > 0) {  // ler direto o que vier
      lcd.write(Serial.read());   // joga no lcd o que recebe
     }
     FazScroll();
     delay(200);
  }else {
    lcd.clear();
    lcd.setCursor(0, 1);
    lcd.print("NADA NA SERIAL");
    delay(2000);
    Botao = RetornaBotaoAnalogico(AnalogPin,1,1);
  }
}
void ModoBeta() {
    AtivarDesativarPinoDig(LOW,DigPin08,0.1);     //apagando led pino
    AtivarDesativarPinoDig(HIGH,DigPin09,0.1);    //acendendo led pino
    lcd.clear();                                    //limpa lcd

    lcd.print("  Podia estar matando           ");    // escreve algo
    lcd.setCursor(0,1);
    lcd.print("       com o arduino eh claro         ");
    FazScroll();
    Botao = RetornaBotaoAnalogico(AnalogPin,1,1); // lê os botões
}
void ModoAlpha() {
    AtivarDesativarPinoDig(LOW,DigPin09,0.1);     //apagando led pino
    AtivarDesativarPinoDig(HIGH,DigPin08,0.1);    //acendendo led pino
    lcd.clear();                                    //limpa lcd
    lcd.print("   www.RafaelGimenes.net    ");    // escreve e algo
    lcd.setCursor(0,1);
    lcd.print("        100% SOFTWARE LIVRE    ");
    FazScroll();

    Botao = RetornaBotaoAnalogico(AnalogPin,1,1); // lê os botões
}
void ModoInicio() {
    lcd.clear();                                           //limpa lcd
    lcd.print("   EXEMPLO v2   ");
    lcd.setCursor(0, 1);
    lcd.print("by RafaelGimenes");                        // escreve algo

    AtivarDesativarPinoDig(LOW,DigPin09,0.1);     //apagando led pino
    AtivarDesativarPinoDig(HIGH,DigPin08,0.1);    //acendendo led pino
    delay(500);
    AtivarDesativarPinoDig(LOW,DigPin08,0.1);     //apagando led pino
    AtivarDesativarPinoDig(HIGH,DigPin09,0.1);    //acendendo led pino

    Botao = RetornaBotaoAnalogico(AnalogPin,1,0); // lê os botões
}
/*
  Faz o Scroll pra  Esquerda
*/
void FazScroll(){
  for (int i = 0; i < 16; i++) {
      lcd.scrollDisplayLeft();
      delay(600);
    }

}

/*
 Retorna o Botão Pressionado
 Lendo a saida analogica setada
 E Vendo a Variação dos resistores
*/
int RetornaBotaoAnalogico (int AnaPin, int tempoEspera, int tipo){
  int ErroJanela = 50;
  int ValorLido = 0;
  tempoEspera=tempoEspera*1000;
  analogReference(DEFAULT);
  ValorLido = analogRead(AnaPin);
   if (tipo == 0){ // tipo = 0 mostra labels
      //lcd.clear();
      lcd.setCursor(0, 1);
      lcd.print("ESPERANDO BOTAO ");
    }
  if ((ValorLido > 740 ) && (ValorLido < 790)){
    if (tipo == 0){
      lcd.setCursor(0, 1);
      lcd.print("BT01 PRESSIONADO");
      delay(tempoEspera);
    }
    return 1;
  } else if((ValorLido > 640 ) && (ValorLido < 690)){
    if (tipo == 0){
      lcd.setCursor(0, 1);
      lcd.print("BT02 PRESSIONADO");
      delay(tempoEspera);
    }
    return 2;
  } else if((ValorLido > 500 ) && (ValorLido < 560)){
   if (tipo == 0){
    lcd.setCursor(0, 1);
    lcd.print("BT03 PRESSIONADO");
    delay(tempoEspera);
   }
    return 3;
  } else {
    return 0;
  } 

  // debug
  //lcd.clear();lcd.setCursor(1, 10);lcd.print(ValorLido);delay(500);
}

É isso até a próxima.

 

One Response

  1. Filipe Silva

    e ai Rafael… to curioso sobre o modelo do teu lcd… afinal tenho um aqui e nao consigo usar a biblioteca do arduino…

    grato desde já…

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>