problematica con cambio valore variabile

salve, sto lavorando a questo progetto da qualche mese, e per essere un neofita sto avendo grande soddisfazioni.
veniamo al dunque, il problema che non si incrementano delle variabili da tasto. per non farvi ammattire vi spiego un po il ciclo.
da pagina 3 chiamo le pagine da 30 a 37 e a loro volta la pagina 30 richiama la 300 e 301 la 31 la 310 e 311 e così via. nella versione originale le pagine (void pagina_300 pagina_310 pagina_320 pagina330... e void pagina_301 pagina_311 pagina_321 pagina331 sono tutte uguali ma cambiano solo le variabili.

per questo motivo nella versione modificata
void pagina_300 pagina_310 pagina_320 pagina330 richiamano void fase_data_ora(byte fase_HH,byte fase_MM) {....}
void pagina_301 pagina_311 pagina_321 pagina331 richiamano void fase_durata(byte fase_DM) {..}

il problema sussiste nel fatto che il valore delle variabili è esatto perché andando a scorrere le pagine il valore corrisponde a quello impostato precedentemente. ps il programma in fase di setup legge il valore dell'eeprom e lo trascrive nelle variabili..
lo scopo della modifica è quello di alleggerire lo spazio del programma che si abbasserebbe dal 82% al 62%. la versione 0.7 è totalmente funzionante ma vorrei apportare la modifica per alleggerirlo

ho caricato anche i sorgenti visto che sono divisi per schede e più leggibili.

grazie mille

versione 0.7

1_Gestione_Menu.ino (10.4 KB)

2_Pagina_principale_set_data_ora.ino (9.7 KB)

3_Configura_ciclo_automatico.ino (22.2 KB)

4_stato_ciclo_e_test_uscite.ino (4.16 KB)

5_gestione_luci.ino (6.35 KB)

6_procedure_personali.ino (1.09 KB)

7_eeprom.ino (1.54 KB)

Gestione_Acquario_V0.7.ino (5.88 KB)

versione 0.8

1_Gestione_Menu.ino (10.4 KB)

2_Pagina_principale_set_data_ora.ino (9.7 KB)

3_Configura_ciclo_automatico.ino (4.52 KB)

4_stato_ciclo_e_test_uscite.ino (4.16 KB)

5_gestione_luci.ino (6.35 KB)

6_procedure_personali.ino (1.09 KB)

7_eeprom.ino (1.54 KB)

Gestione_Acquario_V0.8.ino (5.88 KB)

ciao...sinceramente io non ho capito qual'è il problema...anche perchè scrivi: "il problema sussiste nel fatto che il valore delle variabili è esatto ".

hai messo a disposizione una serie di sketch, non li ho scaricati ed aperti, c'è il principale che racchiude gli altri? o sono file singoli che dovresti unire?

Hai ragione, ho omesso una parte. In fase di cambio valore da tasto il valore non cambia. Ho usato un tasto che incrementa e uno che decrementa il valore della variabile della pagina richiamata ma nella versione 0.7 tutto ok invece nella versione 0.8 non va

quindi il problema è che il dato non si aggiorna su display quando lo incrementi o decrementi...però le modifiche che fai vengono comunque recepite ed il valore salvato su EEPROM...giusto?

Il valore che visualizzo è il valore della registrazione dell'eeprom prima di aggiornare il programma. Nel sistema ho creato due procedure. Una di lettura e una di scrittura eeprom. Quella di lettura la faccio girare nel setup così al riavvio da un black out mi ritorna tutto parametrizzato. La prova che posso fare domani è tentare di modificare i valori dove ho i problemi, provo a scrivere nell'eeprom e riavvio e vedo se mi si aggiornano di dati.

test effettuato, ma non funziona

nella funzione "scrivi eprom" inserisci un Serial.print() per ogni valore che dovresti scrivere nella EPROM e verifica che siano quelli che vuoi

Il problema non sta nell'eprom ma nella procedura void 300 310 320 che richiama una procedura per la formattazione del display e cambio valore di variabili passate nell'intestazione. La differenza tra la versione 0.7 e 0.8 che nella pagine 300 310 320.....370 che fanno la stessa funzione, quella di impostare ora e minuto di inizio transizione (alba giorno tramonto notte) ho creato la procedura per una e poi di volta in volta per creare le altre ho fatto copia e sostituisci testo cambiando il nome delle variabili. Per questo motivo per evitate questa ripetizione dal void 300 310 ....370 richiamo una procedura passando le variabili.
Il richiamo delle procedure funziona ad hoc perché con i valori mi ci trovo ma non riesco a cambiare i valori. Spero di essere stato chiaro

forse ho capito...forse...quando tu abiliti le pagine 300, 301, 310, 311 etc...i parametri/variabili che passi a queste funzioni non cambiano...giusto!?

se è così sai la differenza tra passare, ad una funzione, una variabile per valore o per riferimento?

il primo caso è questo:

void foo(int boo){boo++;}

il secondo è questo:

void foo(int &boo){boo++;}

nel primo caso la variabile che inserisci come boo passerà il suo valore ma NON verrà mutata; nel secondo caso passa il suo indirizzo di memoria il cui contenuto verrà modificato.

quindi penso che a tutte le tue funzioni con le quali vuoi modificare il valore delle variabili passate...devi aggiungere un bel '&' ad ogni variabile.

Grazie mille, oggi pomeriggio proverò. Credo e spero che sia quello il problema

testato adesso, problema risolto in meno di un minuto. grazie mille