Hola buenos dias/tardes/noches, tengo un pequeño problema con un proyecto de comunicación mediante modulos xbee, y un I2C, funciona mediante dos botones que accionandolos se entra a un menu en donde muestra los datos.
Mi problema es el siguiente:
Cuando mando los datos al modulo receptor en el LCD solo los muestra una vez cada que entro al submenu, y solo los actualiza si salgo y vuelvo a entrar, lo que necesito es que entrando al submenu me muestre los datos de la temperatura y los este actualizando constantemente ):
La programacion es la siguiente:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define menu 12
#define enter 11
void readButts();
void list_menu();
void menu_select();
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE);
String cadena;
int line[5] = {0,1,2,3,4},
line_bk[5],
index,
menu_number = 1;
boolean menu_flag = 0,
enter_flag = 0,
sub_menu = 0;
void setup()
{
Serial.begin(9600);
pinMode(menu, INPUT_PULLUP);
pinMode(enter, INPUT_PULLUP);
lcd.begin (16,4);
lcd.setBacklight(HIGH);
lcd.setCursor(0,0);
lcd.print(">");
}
void loop()
{
if(!sub_menu)
{
lcd.setCursor(1,line[0]);
lcd.print("1)TEMPERATURA ");
lcd.setCursor(1,line[1]);
lcd.print("2)TURBIDEZ ");
lcd.setCursor(1,line[2]);
lcd.print("3)PH ");
lcd.setCursor(1,line[3]);
lcd.print("4)CONDUCTIVIDAD E. ");
lcd.setCursor(1,line[4]);
lcd.print("5)AYUDA ");
}
readButts();
}
void readButts()
{
if(!digitalRead(menu)) menu_flag = 0x01;
if(!digitalRead(enter)) enter_flag = 0x01;
if(digitalRead(menu) && menu_flag)
{
menu_flag = 0x00;
list_menu();
menu_number+=1;
if(menu_number > 5) menu_number = 1;
}
if(digitalRead(enter) && enter_flag)
{
enter_flag = 0x00;
sub_menu = !sub_menu;
menu_select();
}
}
void list_menu()
{
for(int i=4; i>-1; i--)
{
index = i-1;
line_bk = line*;*
if(index < 0) line = line_bk[i+4];
_ else line = line[i-1];
* }
}
void menu_select()
{_
switch(menu_number)
_ {*_
* case 1:*
* while(Serial.available()){*
* cadena = Serial.readString();*
* lcd.setCursor(0,1);*
* lcd.println(" "+cadena);*
* delayMicroseconds(1000);*
* }*
* lcd.setCursor(0,0);*
* lcd.print(" TEMPERATURA");*
* break;*
* case 2:*
* lcd.setCursor(1,0);*
* lcd.print(" TURBIDEZ ");*
* lcd.setCursor(0,1);*
* lcd.print(" ");*
* break;*
* case 3:*
* lcd.setCursor(1,0);*
* lcd.print(" pH ");*
* lcd.setCursor(0,1);*
* lcd.print(" ");*
* break;*
* case 4:*
* lcd.setCursor(1,0);*
* lcd.print(" CONDUCTIVIDAD ");*
* lcd.setCursor(0,1);*
* lcd.print(" ");*
* break;*
* case 5:*
* lcd.setCursor(1,0);*
* lcd.print("LINK DE INTERNET");*
* lcd.setCursor(0,1);*
* lcd.print(" ");*
* break;*
* }*
}
Pero solo me interesa esto:
void menu_select()
{
* switch(menu_number)
_ {*_
* case 1:*
* while(Serial.available()){*
* cadena = Serial.readString();*
* lcd.setCursor(0,1);*
* lcd.println(" "+cadena);*
* delayMicroseconds(1000);*
* }*
* lcd.setCursor(0,0);*
* lcd.print(" TEMPERATURA");*
* break;*
En esa parte no actualiza los datos en el LCD ):
Gracias por ayudar c: