SALUDOS ,
YA pude resolver el ingreso de los valores minimos y maximo para poder setear , lo que quedaria es resolver GRABAR LOS DATOS en la memoria eeprom ,
si alguien me puede dar una idea , si se podra mejorar este codigo , con respecto a los botones y los rebotes , lo botones andan bien o quizas este equivocado en alguna parte del programa algo q nod eba estar , asi como esta hace lo quiero solo falta q grabe en la eeprom
sugerencia , comentario de los expertos
gracias saludos
#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 = 100;
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 (led, OUTPUT);
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)) {
if ( adjV1MIN <= 105) {
adjV1MIN = adjV1MIN + 5;
lcd.setCursor(12, 2);
lcd.print((char)126);
}
while (!digitalRead(upButton));
}
else if (!digitalRead(downButton))
{
if ( adjV1MIN >= 95) {
adjV1MIN = adjV1MIN - 5;
lcd.setCursor(12, 2);
lcd.print((char)127);
}
while (!digitalRead(downButton));
}
if (nPulso == 1) // VALOR MAX
if (!digitalRead(upButton)) {
if ( adjV1MAX >= 135) {
adjV1MAX = adjV1MAX - 5;
lcd.setCursor(12, 2);
lcd.print((char)127);
}
while (!digitalRead(upButton));
}
if (!digitalRead(downButton))
{
if ( adjV1MAX <= 145) {
adjV1MAX = adjV1MAX + 5;
lcd.setCursor(12, 2);
lcd.print((char)126);
}
while (!digitalRead(downButton));
}
if (nPulso == 2)
if (!digitalRead(upButton)) {
if ( adjV2MIN <= 205) {
adjV2MIN = adjV2MIN + 5;
lcd.setCursor(12, 2);
lcd.print((char)126);
}
// Serial.print (nPulso);
while (!digitalRead(upButton));
}
else if (!digitalRead(downButton))
{
if ( adjV2MIN >= 195) {
adjV2MIN = adjV2MIN - 5;
lcd.setCursor(12, 2);
lcd.print((char)127);
}
while (!digitalRead(downButton));
}
if (nPulso == 3)
if (!digitalRead(upButton)) {
if ( adjV2MAX >= 235) {
adjV2MAX = adjV2MAX - 5;
lcd.setCursor(12, 2);
lcd.print((char)127);
}
// Serial.print (nPulso);
while (!digitalRead(upButton));
}
else if (!digitalRead(downButton))
{
if ( adjV2MAX <= 245) {
adjV2MAX = adjV2MAX + 5;
lcd.setCursor(12, 2);
lcd.print((char)126);
}
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("AJUSTE FASE [120]");
lcd.setCursor(0, 2);
lcd.print("> Set Vmin");
lcd.setCursor(13, 2);
lcd.print(" ");
lcd.setCursor(14, 2);
lcd.print (adjV1MIN);
break;
case 1:
// lcd.clear();
lcd.setCursor(1, 1);
lcd.print("AJUSTE FASE [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("AJUSTE FASE [220]"); //alt 126 249
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("AJUSTE FASE [220]");
lcd.setCursor(0, 2);
lcd.print("> Set Vmax");
lcd.setCursor(14, 2);
lcd.print (adjV2MAX);
break;
case 4:
break;
}
}