programmazione settimanale cronotermostato


salve tutti,
mi piacerebbe per diletto realizzare un cronotermostato con arduino mega, e sto facendo un po' di brain storming sulla programmazione delle temperature giornaliere, in quanto è il pensiero maggiore al momento.

l'idea è quella di avere 3 temperature programmabili all'interno della giornata con salti di 30 minuti:
- t1 = temperatura della casa regime (quindi quando si sta casa, es: 20°)
- t2 = temperatura della casa di mantenimento, quando praticamente non c'è nessuno (es: 17°)
- t3 = temperatura minima della casa (es: 4°) sotto la quale non deve mai scendere (utilizzabile anche come caldaia spenta)


2 programmazioni settimanali configurabili

per fare ciò, stavo pensando di utilizzare, 3 float per ogni programma dove salvo t1, t2 e t3 ed un array per ogni programma per ogni giorno della settimana di 48 float per contenere le temperature desiderate...

il problema è che l'array, che salverei poi nell'eeprom, sarebbe di 4 byte (float) * 48 (le "mezz'ore" del giorno) * 7 (giorni della settimana) * 2 (programmi) =2688 byte

a questo dovrei aggiungere qualche libreria che utilizza il progmem che se non sbaglio appoggia dati nella eeprom (in che posizione? rischio l'accavallassi con miei dati?),  qualche altro dato come t1, t2 e t2 sempre di tipo float, ho timore che inizio starci un po' stretto...

in primo luogo avevo pensato di farmi una bitfield, ma avendo t1, t2 e t3 starei decisamente stretto, potrei però fare una bitfield per ogni temperatura e per ogni giorno, quindi avrei:
3 (bit per t1, t2 e t3) * 48 (le "mezz'ore" del giorno) * 7(giorni della settimana) * 2 (programmi) = 2016 bit/8 = 252 byte

vorrei chiedervi: quale metodo è preferibile secondo voi? conoscete alternative?

grazie 1000

ciao

ma perché sprecare un float per memorizzare una temperatura quando basta un byte?

se t1, t2 e t3 sono sempre le stesse non devi memorizzare ogni mezz'ora la temperatura voluta ma solo quale delle 3 che vuoi.

per usare meno memoria possibile ti bastato 6 byte (48 bit) dove ogni bit rappresenta mezz'ora e ti dice se la (ad esempio) t1 è "attiva".
ad esempio:
code: [select]
00000000-00000000-001111111-11111111-00000000-000000
leggilo da sinistra destra: ogni mezz'ora leggi il bit che ti dice che t1 è attiva o no.

in questo modo ti serve 1 byte per memorizzare la temperatura voluta e 42 byte (6 * 7 giorni) per il programma settimanale.
moltiplica per 3 temperature possibili e 2 programmi settimanali fanno 258 byte.

ciao
pippo72


Arduino Forum > International > Italiano > Software (Moderator: leo72) > programmazione settimanale cronotermostato


arduino

Comments

Popular posts from this blog

Error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode - Raspberry Pi Forums

class MPU6050 has no member named begin

missing filename after '-o'