Come aggiungere relè al progetto senza bloccare la scheda
Molti utenti che hanno realizzato il tutorial Scheda relè remota con Arduino e Webduino, dopo aver constatato il funzionamento del codice hanno poi implementato il codice per la gestione di ulteriori relè. A questo punto si sono accorti che il codice smette di funzionare e Arduino UNO sembra bloccata.
Tutto ciò avviene perché aggiungendo istruzioni contenenti stringhe ad un certo punto si arriva a saturare la memoria SRAM, questo è il motivo per cui la scheda va in blocco. La mancanza di memoria SRAM di fatto non permette di eseguire le istruzioni del nostro sketch.
Come è possibile risolvere il problema senza aumentare la memoria SRAM?
Sapiamo che la scheda possiede anche una memoria EEPROM da 1KB, e che tramite la funzione PROGMEM possiamo memorizzarci delle stringhe.
Anche la libreria Webduino permette di salvare e richiamare le stringhe dalla memoria EEPROM, quindi possiamo usare questa funzionalità per liberare SRAM e permettere la normale esecuzione del codice.
Vediamo come modificare una porzione del codice del precedente articolo:
[c]
if(Rele1 == true)
server.print(“<tr><td style=\”color: red;\”>RELE 1 ON</td><td>”);
else
server.print(“<tr><td style=\”color: black;\”>RELE 1 OFF</td><td>”);
[/c]
utilizzando le funzioni della libreria Webduino, per memorizzare le stringhe nella EEPROM
[c]
//memorizza le stringhe sulla EEPROM
P(str_rele1ON) = “<tr><td style=\”color: red;\”>RELE 1 ON</td><td>”;
P(str_rele1OFF) = “<tr><td style=\”color: black;\”>RELE 1 OFF</td><td>”;
if(Rele1 == true)
//richiama la stringa dalla eeprom
server.printP(str_rele1ON);
else
//richiama la stringa dalla eeprom
server.printP(str_rele1OFF);
[/c]
il codice precedente fa uso dell’istruzione P() e del metodo printP().
P() ha il compito di memorizzare la stringa nella EEPROM proprio come accade con l’istruzione PROGMEM. per richiamare la stringa è sufficiente richiamarla utilizzando il metodo printP() dell’oggetto server.
In definitiva se volete aggiungere più relè è sufficiente modificare il codice del tutorial come nell’esempio precedente.
Related posts
2 Comments
Lascia un commento Annulla risposta
Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.
Articoli popolari
Sorry. No data so far.
.Net micro framework Arduino Arduino Webserver Domotica Flyport I2C IOT Netduino OpenPicus raspberry RTC Speed Test
Vorrei chiedere una cosa,
impostando in questo modo il programma avviene che ad ogni riavvio dell’arduino si vada a scrivere nella EEPROM, ciò a lungo andare comporta un degrado della stessa essendo il numero di scritture limitato…
Non si potrebbe attuare uno stratagemma per cui si legge la EEPROM si scrive solo la 1° volta in assoluto in cui si esegue il codice e le successive con un controllo se si trovano le cose già memorizzate non si va a scrivere?
Mi allego alla richiesta….ho pensato alla stessa cosa che ha scritto Felice.
Si potrebbe implementare un meccanismo per salvare le stringhe “fisse” sulla SD card e da li andarle a richiamare? Un po come si fa per le pagine html,solo che invece di salvare pagine complete si memorizzano stringhe…