Componenti utilizzati: Arduino UNO, PROCESSING, led.
Descrizione:
ArduinoUNO è dotato di 1Kb (1024byte) di memoria EEPROM per cui avremo spazio per 1024 dati da salvare.
Avendo a disposizione solamente 8 bit, ogni dato che salveremo nella EEPROM non dovrà superare il valore 255, in quanto con 8 bit possiamo esprimere al massimo 256 numeri.
Per facilitare le cose e, per il motivo sopra citato, ho deciso di creare una finestra di disegno con PROCESSING che non supera i 255 pixel d' altezza e di larghezza!
Per gestire la memoria EEPROM di Arduino ho usato la libreria "EEPROM.h" dove le tre funzioni principali sono:
-"EEPROM.clear()" per azzerare la memoria;
-"EEPROM.write(indirizzo,valore)" per scrivere i dati in memoria;
-"EEPROM.read(indirizzo)" per leggere i dati in memoria;
Con PROCESSING ho scritto un semplice programma che creare una finestra (255 x 255) e trasmette i dati delle coordinate X e Y del mouse (solamente se premuto) ad Arduino tramite porta seriale.
Il primo dato inviato su seriale corrisponde alla coordinata X del mouse, mentre il secondo dato inviato corrisponde alla coordinata Y del mouse.
Avendo a disposizione solamente 1024 indirizzi di memoria EEPROM di Arduino ho deciso di salvare nei primi 512 indirizzi le coordinate di X e nei restanti 512 indirizzi le coordinate di Y, per cui dall'indirizzo 0 all'indirizzo 511 ci saranno le coordinate X e dall'indirizzo 512 all'indirizzo 1023 ci saranno le coordinate di Y.
La prima operazione che svolge lo Sketch di Arduino è quella di azzerare la memoria, dopo di che si mette in attesa di ricevere dati dalla porta seriale. Il primo dato che leggerà (coordinata X del mouse) verrà salvato all'indirizzo di memoria 0, mentre il secondo dato che riceverà (coordinata Y del mouse) verrà salvato all'indirizzo di memoria 512. IL dato successivo (coordinata X) verrà salvato all'indirizzo di memoria 1 e il dato dopo (coordinata Y) verrà salvato all'indirizzo 513, e così via.
Finiti gli indirizzi di memoria a disposizione, Arduino accenderà un led di avviso collegato al pin 13.
Così facendo abbiamo salvato le coordinate di dove siamo passati con il mouse nella nostra EEPROM.
Per fare una verifica basterà caricare su Arduino lo Sketch d'esempio "eeprom_read" per andare a leggere tutti i nostri dati salvati nella EEPROM.
Attenzione!!! bisogna modificare lo Sketch nellla riga dove c'è:
(if == 512)
sostituendo il 512 con 1024. In questo modo il programma ci stamperà tutti i 1024 dati che abbiamo salvato.
Osservazioni:
Prima di effettuare la verifica dell'avvenuta memorizzazione delle coordinate X eY del mouse nella memoria EEPROM è necessario terminare l'esecuzione del programma scritto con PROCESSING altrimenti ci sarà la comunicazione seriale di Arduino occupata e non possiamo utilizzare il nostro monitor seriale.
Nello sketch di Arduino creato da me al termine della scrittura dei dati in memoria c'è una funzione chiamata "inizio()" che fa attendere ad Arduino 1 minuto prima di ricominciare il ciclo. Questa funzione potrà essere modificata in modo da utilizzare i dati salvati nella EEPROM per svolgere determinate azioni:
per esempio si potrebbero collegare due attuatori lineari (formati da due motori passo a passo) che eseguono su un foglio di carta la scritta o il disegno fatti con il muose nella finestra di PROCESSING.
Programma con PROCESSING:
Puoi scaricare il file qui!
Sketch per Arduino:
Puoi scaricare il file qui!
Video: