un saluto a tutti
Sto mettendo assieme un circuito con arduino uno che regola temp, umidità, concentrazione di co2
ed anche altri parametri.
Mi sono trovato di fronte a una problematica: il blackout.... insomma se manca la corrente perdo le mie impostazioni dell igrostato, termostato ect. Scartando le possibilità ups, batteria tampone ect poiche subordinate alla vita della batteria mi resta una soluzione: regolare quei valori non da pulsantini digitali ma da potenziometri analogici,usando naturalmante gli ingresssi AO,in modo che a un possibile reset i valori siano reimpostati subito.
Capisco che potrei ovviare al problema impostando i valori direttamente nel codice... ma io voglio una soluzione + flessibile.
Ecco la mia domanda dovrei associare i valori da 0 a 1024 provenienti dai potenziometri in valori reali.
esempio: valori impostazione temperatura da 5 a 40 gradi associati alla scala da 0 a 1024
questo si fa con una sfilza di if? non ce qualcosa di + immediato?
E salvarli nella EEPROM?
Per fare il mapping di cui parli puoi comunque usare la funzione map(), cercala nel referente.
no, senza salvare nulla su eprom.
ora studio questo map e se ho ancora bisogno chiedo
molte grazie
ancora grazie , ho risolto facilmente con
tempSoglia = map(analogRead(A1), 0, 1023, 5, 40);//temperature potenziometro
Bene, ma perché non vuoi usare la EEPROM?
per via della limitazione dei numeri interi, si possono usare solo numeri integer a 3 cifre da 0 fino a 250.
Dovrei trasformarli i decimali in numeri interi, speriamo i valori con i potenziometri non sfarfallino in tal caso prenderò in considerazione l eeprom
Guarda che hai capito male, non c'è nessuna limitazione, in EEPROM puoi scrivere quello che vuoi, basta farlo nel modo giusto! Usa EEPROM.get() e .put()!
ho avuto del tempo libero e mi sono riscritto tutto ma con l uso della eeprom
ma limitando lo script a numeri interi per il settaggio temp ad esempio non potrò settare 25,5
ma solo 25 oppure 24 .... non è così male, mi può andare bene.
Ho trovato problemi con il valore da impostare per la co2 che è nell'ordine di 8000-15000
ma girando in rete ho risolto con:
EEPROM.write(5, highByte(co2Soglia));
EEPROM.write(6, lowByte(co2Soglia));
co2Soglia = (EEPROM.read(3)*256)+EEPROM.read(4);
A parte che mi sfugge come può funzionare se scrivi in una locazione e leggi da un'altra, ma se leggevi il mio post precedente ti risparmiavi la fatica e potevi leggere/scrivere con una sola istruzione.
hehehe , ho copiato da due finestre dell ide di arduino i 2 comandi