terça-feira, 14 de janeiro de 2014

Arduino - Menu em LCD 16x2 ( Parte 2 )


Bom , vamos  a segunda parte do post .
Adicione 3leds para saber o que está sendo acionado pelo menu.
não se esqueça de colocar em serie resistores de  2,2KΩ .
Cada led será ligado a uma porta do arduino , no caso serão as portas A5 , A4 e A3 .

Para ligar o background do display , vamos usar um transistor BC337 ,o coletor vai ao 5v do arduino , a base vai em série com um resistor de 56Ω  e o emissor vai ao positivo do display . o outro terminal do resistor vai ligado a porta A2 do arduino .


---



Se voce ligou tudo certinho a montagem deverá ficar assim 


--

E agora é só programar .



#include <LiquidCrystal.h>
int contador=0;

const int botao = 6; 
const int botao2 = 7;
const int botao3 = 8;
boolean troca = false ;
boolean troca1 = false ;
boolean troca2 = false ;
boolean troca3= false;


//inicia o display e seleciona as entradas e saidas
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {

  lcd.begin(16, 2);
    pinMode(botao, INPUT); 
     pinMode(botao2, INPUT);  
      pinMode(botao3, INPUT);
       pinMode(A5, OUTPUT);
        pinMode(A4, OUTPUT);
         pinMode(A3, OUTPUT);
      pinMode(A2,OUTPUT);
    

  
}

void loop() {

  int estado =0;
  int estado2 =0;
  int estado3 =0;
  int estado4=0;
//faz a leitura do estado dos botoes
estado = digitalRead(botao);
  estado2 = digitalRead(botao2);
  estado3 = digitalRead(botao3);
  estado4=digitalRead(botao3);
//controle da sequencia do menu
if (estado == HIGH) {     
  delay(250);  
   contador=contador+1;
  } 
  if (estado2 == HIGH) {     
  delay(250);  
   contador=contador-1;
  } 
  
  if (contador<0){
  contador=3;
  }

   
//menu
 switch(contador){
   case 0:
      if (estado3 == HIGH & troca==false ){
         delay(150);
         troca=true;
         }else{
          delay(150);
      if(troca==true & estado3==HIGH){ 
           troca=false;
          }
       }
   
     lcd.setCursor(0, 0);
       lcd.print("LED-1");
       lcd.setCursor(0,1);
     if (troca==1){
        lcd.print("ON ");
        digitalWrite(A3,HIGH);
           }else{
         lcd.print("OFF");
         digitalWrite(A3,LOW);
     } 
    
   break;
   case 1:
   
if (estado3 == HIGH & troca1==false ){
         delay(150);
         troca1=true;
         }else{
          delay(150);
      if(troca1==true & estado3==HIGH){ 
           troca1=false;
          }
       }

   lcd.setCursor(0, 0);
   
   lcd.print("LED-2");
          lcd.setCursor(0,1);
     if (troca1==1){
        lcd.print("ON ");
        digitalWrite(A4,HIGH);
           }else{
         lcd.print("OFF");
         digitalWrite(A4,LOW);
     } 
   break;
   case 2:
      if (estado3 == HIGH & troca2==false ){
         delay(150);
         troca2=true;
         }else{
          delay(150);
      if(troca2==true & estado3==HIGH){ 
           troca2=false;
          }
       }
      
    lcd.setCursor(0, 0);
   lcd.print("LED-3");
          lcd.setCursor(0,1);
     if (troca2==1){
        lcd.print("ON ");
        digitalWrite(A5,HIGH);
           }else{
         lcd.print("OFF");
         digitalWrite(A5,LOW);
     } 
   break;
   
      case 3:
      if (estado4 == HIGH & troca3==false ){
         delay(150);
         troca3=true;
         }else{
          delay(150);
      if(troca3==true & estado4==HIGH){ 
           troca3=false;
          }
       }
      
    lcd.setCursor(0, 0);
   lcd.print("BG   ");
          lcd.setCursor(0,1);
     if (troca3==1){
        lcd.print("ON ");
        digitalWrite(A2,HIGH);
           }else{
         lcd.print("OFF");
         digitalWrite(A2,LOW);
     } 
   break;
   
   default:
   contador=0;
 }

  


}
    




  



Nenhum comentário:

Postar um comentário