hola saludos
El codigo esta hecho para irlo mejorando , para ir aprendiendo pero se me tranco el juego el codigo es como se podra ver que es un menu que tiene cuatro valores para ser ajustado
esta relacionado con voltaje AC , en mi pais tenemos 2 tipos de voltaje 1 ) 120v y otro 220v
pero es muy inestable
tienes 4 valores valorMIN , valorMax para el 120 , valorMin , valorMax para el 220
he puesto 5 botones , 2 para la naveg izq , der , que funcionan , me quedan 3 que seria uno para select y 2 para subir y baja los valores a partir del valor min y max aqui es donde se me tranca el juego he intentado de hacerlo funcionar el boton select seria para entrar y salir o activar y desactivar con lo botones de navg cae valores min o max y con los 2 botones up , down aumentar o disminuir el valor,
1 problema seria el ajuste de cada valor de la navegacion min , max subi , bajr y
bton select activar o desactivar el menu
quiero ir por parte despues con la ayuda de ustedes , agregar otras cosas como guardar los valores setado en la memora eeprom
sugerencia , ayudas , ideas
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int upButton = 6;
int downButton = 7;
int selectButton = 8;
int NavgLeftBtn = 9;
int NavgRightBtn = 10;
unsigned long time ;
unsigned long t = 0;
int dt = 200;
int adjV1MIN;
int adjV1MAX;
int adjV2MIN;
int adjV2MAX;
int menu = 1;
void setup() {
adjV1MIN = 90; // VOLTAJE FASE1 MIN
adjV1MAX = 140; // VOLTAJE FASE1 MAX
adjV2MIN = 190; // VFASE2 min
adjV2MAX = 240; // VFASE2 max
lcd.begin();
lcd.backlight();
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
pinMode(selectButton, INPUT_PULLUP);
pinMode(NavgLeftBtn, INPUT_PULLUP);
pinMode(NavgRightBtn, INPUT_PULLUP);
updateMenu();
}
void loop() {
time = millis();
if (time - t > dt) {
t = time;
NavgPressbtn ();
if (!digitalRead(downButton)) {
// adjV1MIN = adjV1MIN + 5;
// updateMenu();
while (!digitalRead(downButton));
}
if (!digitalRead(upButton)) {
// adjV1MIN = adjV1MIN - 5;
// updateMenu();
while (!digitalRead(upButton));
}
if (!digitalRead(selectButton)) {
// updateMenu();
while (!digitalRead(selectButton));
}
}
}
void updateMenu() {
switch (menu) {
case 0:
menu = 1;
break;
case 1:
lcd.clear();
lcd.setCursor(1, 1);
lcd.print("ADJ TENSION [120]");
lcd.setCursor(0, 2);
lcd.print("> Set Vmin");
lcd.setCursor(14, 2);
lcd.print (adjV1MIN);
break;
case 2:
lcd.clear();
lcd.setCursor(1, 1);
lcd.print("ADJ TENSION [120]");
lcd.setCursor(0, 2);
lcd.print("> Set Vmax");
lcd.setCursor(14, 2);
lcd.print (adjV1MAX);
break;
case 3:
lcd.clear();
lcd.setCursor(1, 1);
lcd.print("ADJ TENSION [220]");
lcd.setCursor(0, 2);
lcd.print("> Set Vmin");
lcd.setCursor(14, 2);
lcd.print (adjV2MIN);
break;
case 4:
lcd.clear();
lcd.setCursor(1, 1);
lcd.print("ADJ TENSION [220]");
lcd.setCursor(0, 2);
lcd.print("> Set Vmax");
lcd.setCursor(14, 2);
lcd.print (adjV2MAX);
break;
case 5:
menu = 4;
break;
}
}
void NavgPressbtn()
{
if (!digitalRead (NavgLeftBtn) == HIGH)
{
menu--;
updateMenu();
while (!digitalRead(NavgLeftBtn));
}
if (!digitalRead (NavgRightBtn) == HIGH) {
menu++;
updateMenu();
while (!digitalRead(NavgRightBtn));
}
}