dae galera, estou com um problema e nao sei como resolver, tenho um codigo onde existem 4 botoes e um lcd, ao apertar um botao imprime no lcd uma mensagem de chamada para um tecnico em sua sala, porem como sao 4 otoes, pode ocorrer 4 chamadas diferentes.
e pode acontecer de duas ,tres ou ate os quatro botoes estarem chamando.
fiz o seguinte, aperta um botao da o sinal 3 vezes como maquina chamando, logo fica alguns segundos em scroll para esquerda que essa maquina esta chamando.
O que acontece é que quando esta em scroll os outros botoes ficam bloqueados nao conseguem chamar.

Gostaria de que ficasse a mensagem aparecendo ate que se apertasse um botao de reset, e que enquanto estivesse uma mensagem ou mais em scroll liberasse para os outros poerem chamar, e iria incrementando as mensagens no scroll.

se alguem puder ajudar agradeço.

segue código.

#include
int luz = 11; //porta 11 para o led
int botao = 15; //porta A1 botao robo 1
int botao2 = 16; //porta A2 botao Marlene
int botao3 = 17; //porta A3 botao robo 2
int botao4 = 18; //porta A4 botao robo 3
int liberaLcd = true;
int liberaLcd2 = true;
int liberaLcd3 = true;
int liberaLcd4 = true;

LiquidCrystal lcd(8,9,4,5,6,7); //criando objeto da classe liquid
//cristal e definindo suas portas

void setup()
{
lcd.begin(16, 2); //inicia o lcd informando 16 linhas x 2 colunas
pinMode(luz,OUTPUT); // define o pino do led(11) como saida
pinMode(botao,INPUT); //define o pino botao(15) como entrada
pinMode(botao2,INPUT); //define o pino botao2 (16) como entrada
pinMode(botao3,INPUT); // define o pino botao3 (17) como entrada
pinMode(botao4, INPUT); //define o pino botao 4 (18) como entrada

}

void loop()
//fazendo leitura do pino botao
//se o valor do pino botao(15) for = a zero
{
if(digitalRead(botao) == LOW && liberaLcd == true)
{
delay(100);

// fara isso

lcd.setCursor(0,0);
lcd.print("ROBO 1");
lcd.setCursor(0,1);
lcd.print("CHAMANDO");
digitalWrite(luz,HIGH);
delay(500);
digitalWrite(luz,LOW);
delay(500);
digitalWrite(luz,HIGH);
delay(500);
digitalWrite(luz,LOW);
delay(500);
digitalWrite(luz,HIGH);
delay(500);
digitalWrite(luz,LOW);
delay(500);

lcd.clear(); //limpa lcd
lcd.setCursor(0,0);
lcd.print("Robo 1 chamou...aguardando tecnico");
delay(1000);

//enquanto variavel i for menor que 100 faz scroll para esquerda

for (int i = 0; i < 100; i++) {
lcd.scrollDisplayLeft();
delay(300);
}
liberaLcd == true;
}
//quando o estado do botao for maior que zero

if (digitalRead (botao) == HIGH && liberaLcd == true)
{
delay(100);

// fara isso

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Aguardando");
lcd.setCursor(0,1);
lcd.print("chamado...");
digitalWrite(luz,LOW);
liberaLcd == true;

}
if (digitalRead(botao2) == LOW && liberaLcd2 == true)
{
delay(100);
lcd.setCursor(0,0);
lcd.print("MARLENE ");
lcd.setCursor(0,1);
lcd.print("CHAMANDO");
digitalWrite(luz,HIGH);
delay(500);
digitalWrite(luz,LOW);
delay(500);
digitalWrite(luz,HIGH);
delay(500);
digitalWrite(luz,LOW);
delay(500);
digitalWrite(luz,HIGH);
delay(500);
digitalWrite(luz,LOW);
delay(500);

lcd.clear();
lcd.setCursor(1,1);
lcd.print("Marlene chamou...aguardando tecnico");
delay(1000);

for (int i = 0; i < 100; i++) {
lcd.scrollDisplayLeft();
delay(300);
}
liberaLcd2 == true;
}
if (digitalRead (botao2) == HIGH && liberaLcd2 == true)
{
delay(100);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Aguardando");
lcd.setCursor(0,1);
lcd.print("chamado...");
digitalWrite(luz,LOW);
liberaLcd2 == true;

}
if(digitalRead(botao3) == LOW && liberaLcd3 == true)
{
delay(100);
lcd.setCursor(0,0);
lcd.print("ROBO 2 ");
lcd.setCursor(0,1);
lcd.print("CHAMANDO");
digitalWrite(luz,HIGH);
delay(500);
digitalWrite(luz,LOW);
delay(500);
digitalWrite(luz,HIGH);
delay(500);
digitalWrite(luz,LOW);
delay(500);
digitalWrite(luz,HIGH);
delay(500);
digitalWrite(luz,LOW);
delay(500);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Robo 2 chamou...aguardando tecnico");
delay(1000);

for (int i = 0; i < 100; i++) {
lcd.scrollDisplayLeft();
delay(300);
}
liberaLcd3 == true;
}
if (digitalRead (botao3) == HIGH && liberaLcd3 == true)
{
delay(100);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Aguardando");
lcd.setCursor(0,1);
lcd.print("chamado...");
digitalWrite(luz,LOW);
liberaLcd3 == true;

}
if(digitalRead(botao4) == LOW && liberaLcd == true)
{
delay(100);
lcd.setCursor(0,0);
lcd.print("ROBO 3");
lcd.setCursor(0,1);
lcd.print("CHAMANDO");
digitalWrite(luz,HIGH);
delay(500);
digitalWrite(luz,LOW);
delay(500);
digitalWrite(luz,HIGH);
delay(500);
digitalWrite(luz,LOW);
delay(500);
digitalWrite(luz,HIGH);
delay(500);
digitalWrite(luz,LOW);
delay(500);

lcd.clear();
lcd.setCursor(1,1);
lcd.print("Robo 3 chamou...aguardando tecnico");
delay(1000);

for (int i = 0; i < 100; i++) {
lcd.scrollDisplayLeft();
delay(300);
}
liberaLcd == true;
}
if (digitalRead (botao4) == HIGH && liberaLcd == true)
{
delay(100);

lcd.clear();
lcd.setCursor(0,0);
lcd.print("Aguardando");
lcd.setCursor(0,1);
lcd.print("chamado...");
digitalWrite(luz,LOW);
liberaLcd == true;

}
}

Exibições: 217

Responder esta

Respostas a este tópico

rapaz vc tem que simplificar esse código eu fiz um para acesso que fica o nome da minha empresa e uando aciono um botão eu mando para o lcd acesso entrada e ai volta para o nome da minha empresa.

pode se que vc preciso incrementar um if .

testa o meu faz as suas modificações no meu que é mais simplificado e reenvia com o que vc quer que eu te ajudo.

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
     

void setup() {
 

  pinMode(8, OUTPUT);// pino relacionado porta de saida escolhi a porta 8
  pinMode(13, INPUT);// pino relacionado ao botão porta de entrada escolhi a porta numero 13
  digitalWrite(13, 1);
  pinMode(12, OUTPUT);// pino relacionado porta de saida DO DISPLAY escolhi a porta 12
  pinMode(9, OUTPUT);// pino relacionado porta de saida escolhi a porta 9
  pinMode (10, INPUT);// pino relacionado ao botão porta de entrada escolhi a porta numero 10
  digitalWrite(10, 1);
 
   lcd.begin(16, 2);
}
 
void loop() {
 
 
  lcd.setCursor(0,0);   //posiciona cursor na coluna 0 linha 1 do LCD.
 
  lcd.print("   Protection  "); //imprime a string no display do LCD.
 
  lcd.setCursor(0,1);   //posiciona cursor na coluna 0 linha 1 do LCD
 
  lcd.print(" Security Gold  "); //imprime a string no display do LCD.
 
  int leitura = digitalRead(13); //porta acionada
  if(leitura == 0) {// se a operação ocorrer certo acione os seguintes pinos
    
  digitalWrite,lcd.begin(16, 2);
 
  lcd.clear();          //limpa o display do LCD.    
  lcd.print("    Aguarde  ");  //imprime a string no display do LCD.              
  lcd.setCursor(0,1);   //posiciona cursor na coluna 0 linha 1 do LCD
  lcd.print("    Leitura  "); //imprime a string no display do LCD.
  delay(1500);  
 
  lcd.clear();          //limpa o display do LCD.    
  lcd.print("     Acesso  ");  //imprime a string no display do LCD.              
  lcd.setCursor(0,1);   //posiciona cursor na coluna 0 linha 1 do LCD
  lcd.print("   ENTRADA  "); //imprime a string no display do LCD.
  delay(500);  
 digitalWrite(8,1);
delay(1000);
digitalWrite(8,0);
delay(1000);

  lcd.clear();          //limpa o display do LCD.    
  lcd.print("    Obrigado   ");  //imprime a string no display do LCD.              
  lcd.setCursor(0,1);   //posiciona cursor na coluna 0 linha 1 do LCD
  lcd.print("  volte sempre  "); //imprime a string no display do LCD.
  delay(1000);  
   lcd.clear();
   lcd.setCursor(0,0);   //posiciona cursor na coluna 0 linha 1 do LCD
   lcd.print("     PSG  ");
 
  }
 
 
   int leitura1 = digitalRead(10); //porta acionada
   if(leitura1 == 0) {// se a operação ocorrer certo acione os seguintes pinos
    
 
  digitalWrite,lcd.begin(16, 2);
 
  lcd.clear();          //limpa o display do LCD.    
  lcd.print("    Aguarde  ");  //imprime a string no display do LCD.              
  lcd.setCursor(0,1);   //posiciona cursor na coluna 0 linha 1 do LCD
  lcd.print("    Leitura  "); //imprime a string no display do LCD.
  delay(1500);  
 
  lcd.clear();          //limpa o display do LCD.    
  lcd.print("     Acesso  ");  //imprime a string no display do LCD.              
  lcd.setCursor(0,1);   //posiciona cursor na coluna 0 linha 1 do LCD
  lcd.print("   SAIDA  "); //imprime a string no display do LCD.
  delay(500);   
  digitalWrite(9,1);
  delay(1000);
  digitalWrite(9,0);
  delay(1000);
 
  lcd.clear();          //limpa o display do LCD.    
  lcd.print("    Obrigado   ");  //imprime a string no display do LCD.              
  lcd.setCursor(0,1);   //posiciona cursor na coluna 0 linha 1 do LCD
  lcd.print("  volte sempre  "); //imprime a string no display do LCD.
  delay(1000);  
   lcd.clear();
   lcd.setCursor(0,0);   //posiciona cursor na coluna 0 linha 1 do LCD
   lcd.print("     PSG  ");
 

 
   
   }
  }
 

 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço