saludos,
ya pude resolver parte del problema que tenia al principo modificando, simplificando y agregando estructura de ontrol y otras variables y alguna cosas solo me quedaria poner limite en los valores min y max y que pueda guardar lo seteado en la memoria eeprom algun , sugerencia ayuda para seguir avanzando
saludos
comparto el codigo
#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;
int nPulso;
unsigned long time ;
unsigned long t = 0;
int dt = 200;
int adjV1MIN;
int adjV1MAX;
int adjV2MIN;
int adjV2MAX;
//Configuracion Pines y puerto serie
void setup ()
{
adjV1MIN = 90; // VOLTAJE FASE1 MIN
adjV1MAX = 150; // VOLTAJE FASE1 MAX
adjV2MIN = 190; // VFASE2
adjV2MAX = 250; // VFASE2
lcd.begin();
lcd.backlight();
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
pinMode(selectButton, INPUT_PULLUP);
// pinMode(NavgLeftBtn, INPUT_PULLUP);
// pinMode(NavgRightBtn, INPUT_PULLUP);
Serial.begin (9600);
// updateMenu();
}
void loop ()
{
time = millis();
if (time - t > dt) {
t = time;
if (!digitalRead(selectButton)) {
// updateMenu();
nPulso ++;
Serial.print (nPulso);
while (!digitalRead(selectButton));
}
if (nPulso == 0)
if (!digitalRead(upButton)) {
adjV1MIN = adjV1MIN + 5;
// Serial.print (nPulso);
while (!digitalRead(upButton));
}
else if (!digitalRead(downButton))
{
adjV1MIN = adjV1MIN - 5;
while (!digitalRead(downButton));
}
if (nPulso == 1)
if (!digitalRead(upButton)) {
adjV1MAX = adjV1MAX + 5;
// Serial.print (nPulso);
while (!digitalRead(upButton));
}
else if (!digitalRead(downButton))
{
adjV1MAX = adjV1MAX - 5;
while (!digitalRead(downButton));
}
if (nPulso == 2)
if (!digitalRead(upButton)) {
adjV2MIN = adjV2MIN + 5;
// Serial.print (nPulso);
while (!digitalRead(upButton));
}
else if (!digitalRead(downButton))
{
adjV2MIN = adjV2MIN - 5;
while (!digitalRead(downButton));
}
if (nPulso == 3)
if (!digitalRead(upButton)) {
adjV2MAX = adjV2MAX + 5;
// Serial.print (nPulso);
while (!digitalRead(upButton));
}
else if (!digitalRead(downButton))
{
adjV2MAX = adjV2MAX - 5;
while (!digitalRead(downButton));
}
if (nPulso == 4) // vuelve a 0.
nPulso = 0;
updateMenu();
}
}
void updateMenu() {
switch (nPulso) // definido 4 cases.
{
case 0:
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 1:
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 2:
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 3:
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 4:
break;
}
}