Ciao a tutti,
grazie ai vostri consigli sono riuscito finalmente a fare quello che avevo in mente, nulla in confronto ai vostri progetti ma tanto per me che mi sono avvicinato da pochissimo ad arduino e C.
Ora però ho bisogno ancora di voi :-[
Vi posto il programma che ho fatto. Praticamente visualizzo data, ora e temperatura su un display e se premo un pulsante entro nella schermata per la regolazione dell'ora/data. Il problema però è che ho scritto "un milione" di righe di codice tutte uguali solamente per incrementare o decrementare i valori. Come posso fare a ridurlo?
Ecco la parte di codice incriminata:
//-------------------------FUNZIONE PER MODIFICA ORA E DATA-----------------------------
void modifica_ora(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Imposta data e ora");
while (true){
Puls_Inc = digitalRead(51);
Puls_Dec = digitalRead(49);
Puls_Ok = digitalRead(45);
//-----------------------------INCREMENTA ORA--------------------------------
if (Puls_Inc == HIGH && Puls_Inc_Old == LOW && Move_Set == 0){
Set_HR = Set_HR + 1;
if (Set_HR >23){
Set_HR = 0;
}
RTC.set(DS1307_HR,Set_HR);
Puls_Inc_Old = Puls_Inc;
}
if (Puls_Inc == LOW && Puls_Inc_Old == HIGH){
Puls_Inc_Old = Puls_Inc;
}
//----------------------------DECREMENTA ORA-----------------------------------
if (Puls_Dec == HIGH && Puls_Dec_Old == LOW && Move_Set == 0){
Set_HR = Set_HR - 1;
if (Set_HR <0){
Set_HR = 23;
}
RTC.set(DS1307_HR,Set_HR);
Puls_Dec_Old = Puls_Dec;
}
if (Puls_Dec == LOW && Puls_Dec_Old == HIGH){
Puls_Dec_Old = Puls_Dec;
}
//-----------------------------INCREMENTA MINUTI--------------------------------
if (Puls_Inc == HIGH && Puls_Inc_Old == LOW && Move_Set == 1){
Set_MIN = Set_MIN + 1;
if (Set_MIN >59){
Set_MIN = 0;
}
RTC.set(DS1307_MIN,Set_MIN);
Puls_Inc_Old = Puls_Inc;
}
if (Puls_Inc == LOW && Puls_Inc_Old == HIGH){
Puls_Inc_Old = Puls_Inc;
}
//----------------------------DECREMENTA MINUTI-----------------------------------
if (Puls_Dec == HIGH && Puls_Dec_Old == LOW && Move_Set == 1){
Set_MIN = Set_MIN - 1;
if (Set_MIN <0){
Set_MIN = 59;
}
RTC.set(DS1307_MIN,Set_MIN);
Puls_Dec_Old = Puls_Dec;
}
if (Puls_Dec == LOW && Puls_Dec_Old == HIGH){
Puls_Dec_Old = Puls_Dec;
}
//-----------------------------INCREMENTA DATA--------------------------------
if (Puls_Inc == HIGH && Puls_Inc_Old == LOW && Move_Set == 2){
Set_DATA = Set_DATA + 1;
if (Set_DATA >31){
Set_DATA = 0;
}
RTC.set(DS1307_DATE,Set_DATA);
Puls_Inc_Old = Puls_Inc;
}
if (Puls_Inc == LOW && Puls_Inc_Old == HIGH){
Puls_Inc_Old = Puls_Inc;
}
//----------------------------DECREMENTA DATA-----------------------------------
if (Puls_Dec == HIGH && Puls_Dec_Old == LOW && Move_Set == 2){
Set_DATA = Set_DATA - 1;
if (Set_DATA <0){
Set_DATA = 31;
}
RTC.set(DS1307_DATE,Set_DATA);
Puls_Dec_Old = Puls_Dec;
}
if (Puls_Dec == LOW && Puls_Dec_Old == HIGH){
Puls_Dec_Old = Puls_Dec;
}
//-----------------------------INCREMENTA MESE--------------------------------
if (Puls_Inc == HIGH && Puls_Inc_Old == LOW && Move_Set == 3){
Set_MESE = Set_MESE + 1;
if (Set_MESE >12){
Set_MESE = 0;
}
RTC.set(DS1307_MTH,Set_MESE);
Puls_Inc_Old = Puls_Inc;
}
if (Puls_Inc == LOW && Puls_Inc_Old == HIGH){
Puls_Inc_Old = Puls_Inc;
}
//----------------------------DECREMENTA MESE-----------------------------------
if (Puls_Dec == HIGH && Puls_Dec_Old == LOW && Move_Set == 3){
Set_MESE = Set_MESE - 1;
if (Set_MESE <0){
Set_MESE = 12;
}
RTC.set(DS1307_MTH,Set_MESE);
Puls_Dec_Old = Puls_Dec;
}
if (Puls_Dec == LOW && Puls_Dec_Old == HIGH){
Puls_Dec_Old = Puls_Dec;
}
//-----------------------------INCREMENTA ANNO--------------------------------
if (Puls_Inc == HIGH && Puls_Inc_Old == LOW && Move_Set == 4){
Set_ANNO = Set_ANNO + 1;
if (Set_ANNO >99){
Set_ANNO = 0;
}
RTC.set(DS1307_YR,Set_ANNO);
Puls_Inc_Old = Puls_Inc;
}
if (Puls_Inc == LOW && Puls_Inc_Old == HIGH){
Puls_Inc_Old = Puls_Inc;
}
//----------------------------DECREMENTA ANNO-----------------------------------
if (Puls_Dec == HIGH && Puls_Dec_Old == LOW && Move_Set == 4){
Set_ANNO = Set_ANNO - 1;
if (Set_ANNO <0){
Set_ANNO = 99;
}
RTC.set(DS1307_YR,Set_ANNO);
Puls_Dec_Old = Puls_Dec;
}
if (Puls_Dec == LOW && Puls_Dec_Old == HIGH){
Puls_Dec_Old = Puls_Dec;
}[code]