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.

Scheda relè con Arduino UNO e webduino

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:

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>");

utilizzando le funzioni della libreria Webduino, per memorizzare le stringhe nella EEPROM

//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);

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.