Mi scuso se disturbo ancora, grazie al Vostro aiuto, ho quasi ultimato il progetto della mia centralina di gestione dell'Acquario, ho ancora un piccolo ma fastidioso problema da risolvere, ho implementato un menù per la gestione dei vari parametri, spesso premendo il tasto "set" che è quello che permette di spostarsi nelle varie sezioni, alcune di esse saltano, dovrebbe essere un problema di rimbalzo del pulsante, secondo voi posso risolvere via software questa problematica, non vorrei porre mano alla parte hardware con l'aggiunta di condensatori e resistenze. Grazie mille,
// Hour Lamp 1 On
void SetLamp1On(){
LampOn1= EEPROM.read(0);
while(digitalRead(P1)==HIGH){
if(digitalRead(P2)==LOW)
{
if(LampOn1==23)
{LampOn1=0;}
else
{LampOn1=LampOn1+1;}
}
if(digitalRead(P3)==LOW)
{
if(LampOn1==0)
{
LampOn1=23;
}
else
{
LampOn1=LampOn1-1;
}
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Lamp1 On:");
if (LampOn1<=9)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Lamp1 On:");
}
//lcd.setCursor(0,1);
lcd.print(LampOn1,DEC);
delay(200);
}
EEPROM.write(0, LampOn1);
delay(200);
}
// Hour Lamp 1 Off
void SetLamp1Off(){
LampOff1= EEPROM.read(1);
while(digitalRead(P1)==HIGH){
if(digitalRead(P2)==LOW)
{
if(LampOff1==23)
{
LampOff1=0;
}
else
{
LampOff1=LampOff1+1;
}
}
if(digitalRead(P3)==LOW)
{
if(LampOff1==0)
{
LampOff1=23;
}
else
{
LampOff1=LampOff1-1;
}
}
lcd.setCursor(12,0);
lcd.print("Off:");
if (LampOff1<=9)
{
lcd.clear();
lcd.setCursor(12,0);
lcd.print("Off:");
}
lcd.print(LampOff1,DEC);
delay(200);
}
EEPROM.write(1, LampOff1);
delay(200);
}
// Hour Lamp 2 On
void SetLamp2On(){
LampOn2= EEPROM.read(2);
while(digitalRead(P1)==HIGH){
if(digitalRead(P2)==LOW)
{
if(LampOn2==23)
{
LampOn2=0;
}
else
{
LampOn2=LampOn2+1;
}
}
if(digitalRead(P3)==LOW)
{
if(LampOn2==0)
{
LampOn2=23;
}
else
{
LampOn2=LampOn2-1;
}
}
lcd.setCursor(0,1);
lcd.print("Lamp2 On:");
if (LampOn2<=9)
{
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Lamp2 On:");
}
lcd.print(LampOn2,DEC);
delay(200);
}
EEPROM.write(2, LampOn2);
delay(200);
}
// Hour Lamp 2 Off
void SetLamp2Off(){
LampOff2= EEPROM.read(3);
while(digitalRead(P1)==HIGH){
if(digitalRead(P2)==LOW)
{
if(LampOff2==23)
{
LampOff2=0;
}
else
{
LampOff2=LampOff2+1;
}
}
if(digitalRead(P3)==LOW)
{
if(LampOff2==0)
{
LampOff2=23;
}
else
{
LampOff2=LampOff2-1;
}
}
lcd.setCursor(12,1);
lcd.print("Off:");
if (LampOff2<=9)
{
lcd.clear();
lcd.setCursor(12,1);
lcd.print("Off:");
}
lcd.print(LampOff2,DEC);
delay(200);
}
EEPROM.write(3, LampOff2);
delay(200);
}
// Hour Lamp 3 On
void SetLamp3On(){
LampOn3= EEPROM.read(4);
while(digitalRead(P1)==HIGH){
if(digitalRead(P2)==LOW)
{
if(LampOn3==23)
{
LampOn3=0;
}
else
{
LampOn3=LampOn3+1;
}
}
if(digitalRead(P3)==LOW)
{
if(LampOn3==0)
{
LampOn3=23;
}
else
{
LampOn3=LampOn3-1;
}
}
lcd.setCursor(0,2);
lcd.print("Lamp3 On:");
if (LampOn3<=9)
{
lcd.clear();
lcd.setCursor(0,2);
lcd.print("Lamp3 On:");
}
lcd.print(LampOn3,DEC);
delay(200);
}
EEPROM.write(4, LampOn3);
delay(200);
}
// Hour Lamp 3 On
void SetLamp3Off(){
LampOff1= EEPROM.read(5);
while(digitalRead(P1)==HIGH){
if(digitalRead(P2)==LOW)
{
if(LampOff3==23)
{
LampOff3=0;
}
else
{
LampOff3=LampOff3+1;
}
}
if(digitalRead(P3)==LOW)
{
if(LampOff3==0)
{
LampOff3=23;
}
else
{
LampOff3=LampOff3-1;
}
}
lcd.setCursor(12,2);
lcd.print("Off:");
if (LampOff3<=9)
{
lcd.clear();
lcd.setCursor(12,2);
lcd.print("Off:");
}
lcd.print(LampOff3,DEC);
delay(200);
}
EEPROM.write(5, LampOff3);
delay(200);
}
// Riscaldatore ON
void SetRison(){
Rison= EEPROM.read(6);
while(digitalRead(P1)==HIGH){
if(digitalRead(P2)==LOW)
{
if(Rison==32)
{
Rison=18;
}
else
{
Rison=Rison+1;
}
}
if(digitalRead(P3)==LOW)
{
if(Rison==18)
{
Rison=32;
}
else
{
Rison=Rison-1;
}
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Risc. ON:");
if (Rison<=9)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Risc. ON:");
}
lcd.print(Rison,DEC);
delay(200);
}
EEPROM.write(6, Rison);
delay(200);
}
// Lcd ON
void SetLcdon(){
Lcdon= EEPROM.read(7);
while(digitalRead(P1)==HIGH){
if(digitalRead(P2)==LOW)
{
if(Lcdon==23)
{Lcdon=0;}
else
{Lcdon=Lcdon+1;}
}
if(digitalRead(P3)==LOW)
{
if(Lcdon==0)
{
Lcdon=23;
}
else
{
Lcdon=Lcdon-1;
}
}
lcd.setCursor(0,1);
lcd.print("Lcd . ON:");
if (Lcdon<=9)
{
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Lcd . ON:");
}
lcd.print(Lcdon,DEC);
delay(200);
}
EEPROM.write(7, Lcdon);
delay(200);
}
// Lcd OFF
void SetLcdoff(){
Lcdoff= EEPROM.read(8);
while(digitalRead(P1)==HIGH){
if(digitalRead(P2)==LOW)
{
if(Lcdoff==23)
{Lcdoff=0;}
else
{Lcdoff=Lcdoff+1;}
}
if(digitalRead(P3)==LOW)
{
if(Lcdoff==0)
{
Lcdoff=23;
}
else
{
Lcdoff=Lcdoff-1;
}
}
lcd.setCursor(12,1);
lcd.print("OFF:");
if (Lcdoff<=9)
{
lcd.clear();
lcd.setCursor(12,1);
lcd.print("OFF:");
}
lcd.print(Lcdoff,DEC);
delay(200);
}
EEPROM.write(8, Lcdoff);
delay(200);
}
// Co2 ON
void SetCo2on(){
Co2on= EEPROM.read(9);
while(digitalRead(P1)==HIGH){
if(digitalRead(P2)==LOW)
{
if(Co2on==23)
{Co2on=0;}
else
{Co2on=Co2on+1;}
}
if(digitalRead(P3)==LOW)
{
if(Co2on==0)
{
Co2on=23;
}
else
{
Co2on=Co2on-1;
}
}
;
lcd.setCursor(0,2);
lcd.print("Co2 . ON:");
if (Co2on<=9)
{
lcd.clear();
lcd.setCursor(0,2);
lcd.print("Co2 . ON:");
}
lcd.print(Co2on,DEC);
delay(200);
}
EEPROM.write(9, Lcdon);
delay(200);
}
// Co2 OFF
void SetCo2off(){
Co2off= EEPROM.read(10);
while(digitalRead(P1)==HIGH){
if(digitalRead(P2)==LOW)
{
if(Co2off==23)
{Co2off=0;}
else
{Co2off=Co2off+1;}
}
if(digitalRead(P3)==LOW)
{
if(Co2off==0)
{
Co2off=23;
}
else
{
Co2off=Co2off-1;
}
}
lcd.setCursor(12,2);
lcd.print("OFF:");
if (Co2off<=9)
{
lcd.clear();
lcd.setCursor(12,2);
lcd.print("OFF:");
}
lcd.print(Co2off,DEC);
delay(200);
EEPROM.write(10, Co2off);
delay(200);
}
}
// Ventola raffreddamento
void SetVon(){
Von = EEPROM.read(11);
while(digitalRead(P1)==HIGH){
if(digitalRead(P2)==LOW)
{
if(Von==35)
{Von=25;}
else
{Von=Von+1;}
}
if(digitalRead(P3)==LOW)
{
if(Von==25)
{
Von=35;
}
else
{
Von=Von-1;
}
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Ventola On:");
if (LampOn1<=9)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Ventola On:");
}
//lcd.setCursor(0,1);
lcd.print(Von,DEC);
delay(200);
}
EEPROM.write(11, Von);
delay(200);
}