Boas pessoal 

Gostava que alguém me ajudasse a fazer o código para mudar de tela no LCD 20x4 através de um botão switch pois não estou a conseguir fazer o código para que isso aconteça.

Cumprimentos

Wilson Alves

Exibições: 732

Responder esta

Respostas a este tópico

Boa tarde, voce pode utilizar na sua lógica uma int, para que seja o seu indice, voce pode utilizar ele deste modo:

if (indice = 0)

{

    lcd.write(tela1)//por exemplo

    if(botao foi pressionado)

    {

        indice++

    }

}

if (indice = 1)

{

    lcd.write(tela2)

    if(botao foi pressionado)

    {

        indice = o;

    }

}

aqui no caso, quando ele apertar o botao, irá mudar de tela.... apenas para esclarecer seus pensamentos...

Eu fiz o código assim e compila tudo bem só tem dois problemas que não estou a conseguir resolver o primeiro é assim que ligo o arduino e faço upload o "menu 0" fica a piscar completamente despercebido mal se vê. O segundo problema é carrego no switch na boa muda para o "menu 2" mas quando volto a carregar no switch volta a não mudar para o 0.

#include<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Pinos digitais onde o lcd esté conetado 12, 11, 5, 4, 3, 2
#define SWITCH 10
#define NUM_MENUS 2 //exemplo, 2 menus...
unsigned char var_menus = 0;
unsigned char encrava = 0;
unsigned long refresh = 0;

void setup(){
pinMode(SWITCH, INPUT_PULLUP);
lcd.begin(20, 4);
}


void loop(){

if (digitalRead(SWITCH) == HIGH && encrava == 0){
var_menus++;
trata_lcd();
encrava = 1;
}
if (digitalRead(SWITCH == LOW) && encrava == 0)

//refresca o LCD de segundo a segundo.
if (millis() - refresh >= 1000) {
trata_lcd();
}

}

void trata_lcd() {
switch(var_menus%NUM_MENUS) {

case 0:
lcd.clear();
lcd.print("menu 0");
break;

case 1:
lcd.clear();
lcd.print("menu 1");
break;
default: ;
}
}

//--------------------Definir LCD----------------------------------------------------------------------------------------------
#include<LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Pinos digitais onde o lcd esté conetado 12, 11, 5, 4, 3, 2

//-----------------Definir mudança do LCD--------------------------------------------------------------------------------------
#define SWITCH 10 //Ligação do Switch no pino digital 10
#define NUM_MENUS 2 //exemplo, 2 menus...
unsigned char var_menus = 0;
unsigned char encrava = 0;
unsigned long refresh = 0;

//------------------Defenir variáveis para sensor de 45A------------------------------------------------------------------------
unsigned long antes45 = 0;
int valor45 = 0;
long corrente45 = 0;
float minimo45 =0; //Valor minimo do map()
float maximo45 =0; //Valor máximo do map()

//------------------Defenir vaiáveis para sensor de 100A-------------------------------------------------------------------------
unsigned long antes100 = 0;
int valor100 = 0;
float corrente100 = 0;
float minimo100 =0; //Valor minimo do map()
float maximo100 =0; //Valor máximo do map()


//------------------Defenir variáveis para sensor de 235A-------------------------------------------------------------------------
unsigned long antes235 = 0;
int valor235 = 0;
float corrente235 = 0;
float minimo235 =0; //Valor minimo do map()
float maximo235 =0; //Valor máximo do map()

//-------------------Definir variáveis de tensão(V)--------------------------------------------------------------------------------
int TAC = 230; //Tensão de AC
int TRC = 12 ; //Tensão do regulador de Carga
int TBAT = 12; //Tensão das baterias

//------------------Definir Variáveis de Potência(W)-------------------------------------------------------------------------------
int PAC ; //Potência em AC
int PRC ; //Potência no regulador de carga
int PBAT; //Potência nas baterias
/*
//---------------Declarando os Sensores de temperatura-----------------------------------------------------------------------------
int SENSOR1 = A0; // Sensor 1 está no pino Analógico 0
int SENSOR2 = A1; // Sensor 2 está no pino Analógico 1
int SENSOR3 = A2; // Sensor 3 está no pino Analógico 3

float A = 0; // Sensor 1
float B = 0; // Sensor 1

float C = 0; // Sensor 2
float D = 0; // Sensor 2

float E = 0; // Sensor 3
float F = 0; // Sensor 3
*/
//----------------------------------------------------------------------------------------------------------------------------------

void setup(){
lcd.begin(20, 4); // LCD 20x4
Serial.begin(9600); // Saída para o Serial Monitor
pinMode(SWITCH, INPUT); //Switch funciona como entrada
}


/*
//----------------------Sensor de Temperatura 1 -----------------------------------------------------------------------------------
{
lcd.setCursor(0, 0); // Sensor de temperatura 1 Coluna 0 linha 0
lcd.print("T1-"); // Sensor de temperatura 1
lcd.setCursor(3, 0); // Colocando o cursor na coluna 0 e linha 1
A = analogRead(SENSOR1);
B = (A * 500.0)/1024.0; // Calculo da temperatura
Serial.println("T1-"); // Sensor de temperatura 1
Serial.print(B); // Apresentação do resultado/temperatura no Serial Monitor
Serial.println("C");
lcd.print(B); // Apresentação do resultado/temperatura no LCD
lcd.print("C");
delay(2000); // Atualização dos dados a cada 1 segundo
}

//---------------------Sensor de Temperatura 2 -------------------------------------------------------------------------------------
{
lcd.setCursor(0, 1); // Sensor de temperatura 2 Coluna 0 linha 1
lcd.print("T2-"); // Sensor de temperatura 2
lcd.setCursor(3, 1); // Colocando o cursor na coluna 7 e linha 2
C= analogRead(SENSOR2);
D = (C * 500.0)/1024.0; // Calculo da temperatura
Serial.println("T2-"); // Sensor de temperatura 2
Serial.print(D); // Apresentação do resultado/temperatura no Serial Monitor
Serial.println("C");
lcd.print(D); // Apresentação do resultado/temperatura no LCD
lcd.print("C");
delay(2000); // Atualização dos dados a cada 1 segundo
}

//----------------------Sensor de Temperatura 3 -------------------------------------------------------------------------------------
{
lcd.setCursor(0, 2); // Sensor de temperatura 3 Coluna 0 linha 2
lcd.print("T3-"); // Sensor de temperatura 3
lcd.setCursor(3, 2); // Colocando o cursor na coluna 7 e linha 2
E= analogRead(SENSOR3);
F = (E * 500.0)/1024.0; // Calculo da temperatura
Serial.println("T3-"); // Sensor de temperatura 3
Serial.print(F); // Apresentação do resultado/temperatura no Serial Monitor
Serial.println("C");
lcd.print(F); // Apresentação do resultado/temperatura no LCD
lcd.print("C");
delay(2000); // Atualização dos dados a cada 1 segundo
*/


//------------------------Arreio com os valores instantaneos--------------------------------------------------------------------------
void vinstantaneo()
{
//-------------------------------Estrutura do LCD-----------------------------------------------------------------------------------
lcd.setCursor(2,0); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,1); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,2); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,3); // Linha vertical na coluna 2
lcd.print("|");

lcd.setCursor(8,0); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,1); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,2); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,3); // Linha vertical na coluna 8
lcd.print("|");

lcd.setCursor(13,0); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,1); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,2); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,3); // Linha vertical na coluna 13
lcd.print("|");

lcd.setCursor(18,0); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,1); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,2); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,3); // Linha vertical na coluna 18
lcd.print("|");

// ----------------------------------- 1ªLinha ----------------------------------------------------------------------------------
lcd.setCursor(0, 0); // Coluna 0,1 linha 0(com traços)para criação de tabelas
lcd.print("__");
lcd.setCursor(3, 0); // Coluna 4,5,6 Linha 0 (BAT)
lcd.print("_BAT_");
lcd.setCursor(9,0); // Coluna 10,11 Linha 0 (AC)
lcd.print("_AC_");
lcd.setCursor(14,0); // Coluna 15,16 Linha 0 (RC)
lcd.print("_RC_");

//-------------------------------------1ªColuna----------------------------------------------------------------------------------
lcd.setCursor(0,1); // Coluna 0,1 Linha 0 (V)
lcd.print("V=");
lcd.setCursor(0,2); // Coluna 0,1 Linha 1 (I)
lcd.print("I=");
lcd.setCursor(0,3); // Coluna 0.1 Linha 2 (P)
lcd.print("P=");

//-------------------------------------Coluna 19---------------------------------------------------------------------------------
lcd.setCursor(19,0); // Linha 0 (__)
lcd.print("_");
lcd.setCursor(19,1); // Linha 1 (V)
lcd.print("V");
lcd.setCursor(19,2); // Linha 2 (A)
lcd.print("A");
lcd.setCursor(19,3); // Linha 3 (W)
lcd.print("W");

//----------------------------------Sensor de corrente 45A(AC)--------------------------------------------------------------------
/* lcd.setCursor(9,1); // Local no Lcd onde vai ser apresentada a tensão de AC
lcd.print("230"); // Valor da Tensão em AC

valor45 = analogRead(A5); // Valor do pino Analógico 3
//Sinal entre 1V e 3V
//5V=1024 1V = (1.02*1024)/5 = 208.896 ~ 209 // 1.96-(0.045*4.5)=1.02
//5V=1024 3V = (2.9*1024)/5 = 593.92 ~ 594 // 1.96+(0.045*9.4)=2.9
minimo45=((1.96-(0.045*12))*1024/5); // Calculo do valor minimo
maximo45=((1.96+(0.045*12))*1024/5); // Calculo do valor máximo
corrente45 = map(valor45, minimo45, maximo45, -45, 45); // Calculo corrente
Serial.print("AC:"); // Apresentação da sigla de AC no Serial Monitor
Serial.print(corrente45); // Apresentação dos resultados da corrente de AC no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(9, 2); // Local no LCD onde se vi iniciar o resultado da corrente de AC
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(9, 2); // Local onde se vai iniciar no LCD o resultado da corrente em AC
lcd.print(corrente45); // Apresentação da corrente de AC no LCD

PAC=TAC*corrente45; // Calculo da potência de AC
lcd.setCursor(9,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência em AC
lcd.print(" "); // Limpeza do resultado anterior da potência em AC
lcd.setCursor(9,3); // Local no LCD onde se vi iniciar o resultado da Potência em AC
lcd.print(PAC); // Aprsentação do resultado da potência do regulador de carga no LCD
delay(2000); // Tempo em milisegundos do refresh dos dados
*/
//-----------------------Sensor de corrente 100A(RC)----------------------------------------------------------------------------------------
lcd.setCursor(14,1); // Local no Lcd onde vai der apresentada a tensão do regulador
lcd.print(12); // Valor da Tensão no regulador de carga

valor100 = analogRead(A4); // Valor do pino Analógico 4
//Sinal entre 1V e 3V
//5V=1024 1V = (0.97*1023)/5 = 198.656 ~ 199 // 1.95-(0.1*9.4)=0.97
//5V=1024 3V = (2.85*1023)/5 = 583.68 ~ 584 // 1.95+(0.1*9.4)=2.85
minimo100=((1.9175-(0.1*9.7515))*1024/5); // Calculo do valor minimo
maximo100=((1.9175+(0.1*9.7515))*1024/5); // Calculo do valor máximo
corrente100 = map(valor100, minimo100, maximo100, -10000, 10000);// Calculo da corrente
corrente100 = corrente100/10000;
/* if 1.9765 <= 0*/
Serial.print("RC:"); // Apresentação da sigla do regulador de carga no Serial Monitor
Serial.print(corrente100); // Apresentação dos resultados da corrente no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(14,2); // Local no LCD onde se vi iniciar o resultado da corrente do regulador de carga
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(14, 2); // Local onde se vi iniciar no LCD o resultado da corrente no regulador de carga
lcd.print(corrente100); // Apresentação da corrente do regulador de carga no LCD

PRC=TRC*corrente100; // Calculo da potência de RC
lcd.setCursor(14,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência do regulador de carga
lcd.print(" "); // Limpeza do resultado anterior da potência do regulador de carga
lcd.setCursor(14,3); // Local no LCD onde se vi iniciar o resultado da Potência do regulador de carga
lcd.print(PRC); // Aprsentação do resultado da potência do regulador de carga no LCD
delay(500);


//-----------------------Sensor de corrente 235A(BAT)------------------------------------------------------------------------------------------
lcd.setCursor(3,1); // Local no Lcd onde vai der apresentada a tensão da bateria
lcd.print(12); // Valor de tensão na bateria

valor235 = analogRead(A3); // Valor do pino Analógico 5
//Sinal entre 1V e 3V
//5V=1024 1.47mV = (0.8085*1024)/5 = 165.5808 // 1.96-(0.235*4.9)=0.8085
//5V=1024 2.45mV = (3.115*1024)/5 = 638,952 ~639 // 1.96+(0.235*4.9)=3.115
minimo235=((1.9700-(0.235*4.8265))*1024/5); // Calculo do valor minimo
maximo235=((1.9700+(0.235*4.8265))*1024/5); // Calculo do valor máximo
corrente235 = map(valor235, minimo235, maximo235, -23500, 23500);// Calculo da corrente
corrente235 = corrente235/10000;
Serial.print("BAT:"); // Apresentação da sigla da bateria no Serial Monitor
Serial.print(corrente235); // Apresentação dos resultados da corrente no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(3, 2); // Local no LCD onde se vi iniciar o resultado da corrente da bateria
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(3, 2); // Local onde se vi iniciar no LCD o resultado da corrente na batreria
lcd.print(corrente235); // Apresentação da corrente no LCD

PBAT=TBAT*corrente235; // Calculo da potência da bateria
lcd.setCursor(3,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência da bateria
lcd.print(" "); // Limpeza do resultado anterior da potência da bateria
lcd.setCursor(3,3); // Local no LCD onde se vi iniciar o resultado da Potência da bateria
lcd.print(PBAT); // Apresentação resultado da Potência da bateria
delay(500); // Tempo em milisegundos do refresh dos dados
}
//-----------------------------------------------------------------------------------------------------------------------------------------------

//----------------Arrio com valores hora----------------------------------------------------------------------------------------------------------

void vhora()
{

//-------------------------------Estrutura do LCD--------------------------------------------------------------------------------------------------
lcd.setCursor(2,0); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,1); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,2); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,3); // Linha vertical na coluna 2
lcd.print("|");

lcd.setCursor(8,0); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,1); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,2); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,3); // Linha vertical na coluna 8
lcd.print("|");

lcd.setCursor(13,0); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,1); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,2); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,3); // Linha vertical na coluna 13
lcd.print("|");

lcd.setCursor(18,0); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,1); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,2); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,3); // Linha vertical na coluna 18
lcd.print("|");

// ----------------------------------- 1ªLinha ------------------------------------------------------------------------------------------------
lcd.setCursor(0, 0); // Coluna 0,1 linha 0(com traços)para criação de tabelas
lcd.print("__");
lcd.setCursor(3, 0); // Coluna 4,5,6 Linha 0 (BAT)
lcd.print("_BAT-");
lcd.setCursor(9,0); // Coluna 10,11 Linha 0 (AC)
lcd.print("_AC_");
lcd.setCursor(14,0); // Coluna 15,16 Linha 0 (RC)
lcd.print("_RC_");

//-------------------------------------1ªColuna-------------------------------------------------------------------------------------------------
lcd.setCursor(0,1); // Coluna 0,1 Linha 0 (V)
lcd.print("V=");
lcd.setCursor(0,2); // Coluna 0,1 Linha 1 (I)
lcd.print("I=");
lcd.setCursor(0,3); // Coluna 0.1 Linha 2 (P)
lcd.print("P=");

//-------------------------------------Coluna 19------------------------------------------------------------------------------------------------
lcd.setCursor(19,0); // Linha 0 (__)
lcd.print("_");
lcd.setCursor(19,1); // Linha 1 (V)
lcd.print("V");
lcd.setCursor(19,2); // Linha 2 (A)
lcd.print("A");
lcd.setCursor(19,3); // Linha 3 (W)
lcd.print("W");

//----------------------------------Sensor de corrente 45A(AC)-----------------------------------------------------------------------------------
/* lcd.setCursor(9,1); // Local no Lcd onde vai ser apresentada a tensão de AC
lcd.print("230"); // Valor da Tensão em AC

valor45 = analogRead(A5); // Valor do pino Analógico 3
//Sinal entre 1V e 3V
//5V=1024 1V = (1.02*1024)/5 = 208.896 ~ 209 // 1.96-(0.045*4.5)=1.02
//5V=1024 3V = (2.9*1024)/5 = 593.92 ~ 594 // 1.96+(0.045*9.4)=2.9
minimo45=((1.96-(0.045*12))*1024/5); // Calculo do valor minimo
maximo45=((1.96+(0.045*12))*1024/5); // Calculo do valor máximo
corrente45 = map(valor45, minimo45, maximo45, -45, 45); // Calculo corrente
Serial.print("AC:"); // Apresentação da sigla de AC no Serial Monitor
Serial.print(corrente45); // Apresentação dos resultados da corrente de AC no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(9, 2); // Local no LCD onde se vi iniciar o resultado da corrente de AC
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(9, 2); // Local onde se vai iniciar no LCD o resultado da corrente em AC
lcd.print(corrente45); // Apresentação da corrente de AC no LCD

PAC=TAC*corrente45; // Calculo da potência de AC
lcd.setCursor(9,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência em AC
lcd.print(" "); // Limpeza do resultado anterior da potência em AC
lcd.setCursor(9,3); // Local no LCD onde se vi iniciar o resultado da Potência em AC
lcd.print(PAC); // Aprsentação do resultado da potência do regulador de carga no LCD
delay(2000); // Tempo em milisegundos do refresh dos dados
*/

//-----------------------Sensor de corrente 100A(RC)-----------------------------------------------------------------------------------------
lcd.setCursor(14,1); // Local no Lcd onde vai der apresentada a tensão do regulador
lcd.print(12); // Valor da Tensão no regulador de carga

valor100 = analogRead(A4); // Valor do pino Analógico 4
//Sinal entre 1V e 3V
//5V=1024 1V = (0.97*1023)/5 = 198.656 ~ 199 // 1.95-(0.1*9.4)=0.97
//5V=1024 3V = (2.85*1023)/5 = 583.68 ~ 584 // 1.95+(0.1*9.4)=2.85
minimo100=((1.9175-(0.1*9.7515))*1024/5); // Calculo do valor minimo
maximo100=((1.9175+(0.1*9.7515))*1024/5); // Calculo do valor máximo
corrente100 = map(valor100, minimo100, maximo100, -10000, 10000);// Calculo da corrente
corrente100 = corrente100/10000;
/* if 1.9765 <= 0*/
Serial.print("RC:"); // Apresentação da sigla do regulador de carga no Serial Monitor
Serial.print(corrente100); // Apresentação dos resultados da corrente no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(14,2); // Local no LCD onde se vi iniciar o resultado da corrente do regulador de carga
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(14, 2); // Local onde se vi iniciar no LCD o resultado da corrente no regulador de carga
lcd.print(corrente100); // Apresentação da corrente do regulador de carga no LCD

PRC=TRC*corrente100; // Calculo da potência de RC
lcd.setCursor(14,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência do regulador de carga
lcd.print(" "); // Limpeza do resultado anterior da potência do regulador de carga
lcd.setCursor(14,3); // Local no LCD onde se vi iniciar o resultado da Potência do regulador de carga
lcd.print(PRC); // Aprsentação do resultado da potência do regulador de carga no LCD
delay(500);


//-----------------------Sensor de corrente 235A(BAT)------------------------------------------------------------------------------------------
lcd.setCursor(3,1); // Local no Lcd onde vai der apresentada a tensão da bateria
lcd.print(12); // Valor de tensão na bateria

valor235 = analogRead(A3); // Valor do pino Analógico 5
//Sinal entre 1V e 3V
//5V=1024 1.47mV = (0.8085*1024)/5 = 165.5808 // 1.96-(0.235*4.9)=0.8085
//5V=1024 2.45mV = (3.115*1024)/5 = 638,952 ~639 // 1.96+(0.235*4.9)=3.115
minimo235=((1.9700-(0.235*4.8265))*1024/5); // Calculo do valor minimo
maximo235=((1.9700+(0.235*4.8265))*1024/5); // Calculo do valor máximo
corrente235 = map(valor235, minimo235, maximo235, -23500, 23500);// Calculo da corrente
corrente235 = corrente235/10000;
Serial.print("BAT:"); // Apresentação da sigla da bateria no Serial Monitor
Serial.print(corrente235); // Apresentação dos resultados da corrente no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(3, 2); // Local no LCD onde se vi iniciar o resultado da corrente da bateria
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(3, 2); // Local onde se vi iniciar no LCD o resultado da corrente na batreria
lcd.print(corrente235); // Apresentação da corrente no LCD

PBAT=TBAT*corrente235; // Calculo da potência da bateria
lcd.setCursor(3,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência da bateria
lcd.print(" "); // Limpeza do resultado anterior da potência da bateria
lcd.setCursor(3,3); // Local no LCD onde se vi iniciar o resultado da Potência da bateria
lcd.print(PBAT); // Apresentação resultado da Potência da bateria
delay(500); // Tempo em milisegundos do refresh dos dados
}
//------------------------------------------------------------------------------------------------------------------------------------------

void loop()
{
if (digitalRead(SWITCH) == HIGH && encrava == 0){
var_menus++;
trata_lcd();
encrava = 1;
}
if (digitalRead(SWITCH) == LOW) encrava = 0;

//refresca o LCD de segundo a segundo.
if (millis() - refresh >= 1000) {
trata_lcd();
refresh = millis(); //actualiza a contagem.
}

}

void trata_lcd()
{
switch(var_menus%NUM_MENUS) {

case 0:
lcd.clear();
lcd.print(vinstantaneo());
break;

case 1:
lcd.clear();
lcd.print(vhora());
break;
}
}

Pessoal já consegui pôr o lcd a interagir com o botão só estou com um problema o lcd fica a (piscar) criei arrays com os pedaços de código que quero que apareça em cada uma das telas e depois no void loop pus este pedaço de código!!!!

void loop()
{
if (digitalRead(SWITCH) == HIGH && encrava == 0){
var_menus++;
trata_lcd();
encrava = 1;
}
if (digitalRead(SWITCH) == LOW) encrava = 0;
//refresca o LCD de segundo a segundo.
if (millis() - refresh >= 500) {
trata_lcd();
refresh = millis(); //actualiza a contagem.
}
}
void trata_lcd()
{
switch(var_menus%NUM_MENUS) {

case 0:
lcd.clear();
vinstantaneo();
break;

case 1:
lcd.clear();
vhora();
break;
}
}

 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço