In questa seconda lezione su Arduino e MATLAB vediamo come ricevere in input il segnale da un pin della scheda Arduino e visualizzare in real time il suo andamento.
Prima di iniziare con l’acquisizione dei dati dobbiamo stabilire la connessione tra la scheda e il softwre MATLAB, per fare questo vi rimando alla prima lezione “ARDUINO & MATLAB – COMUNICAZIONE SERIALE“.
Vedremo come acquisire il segnale da un sensore, nel nostro caso una fororesistenza, tramite il pin analogico 0. Lo schema di collegamento è il seguente
Programma Test
Analizziamo il programma che andremo a scrivere in MATLAB per avviare l’acquisizione e visualizzare il grafico:
a = arduino(‘/dev/cu.usbmodemfa131’); %Avvia la connessione con Arduino
x=0; %Inizializza il vettore in cui verranno salvati i valori acquisiti
interv=500; %Intervallo di tempo
for k=1:1:interv %Ciclo for da 1 a N con incremento di 1
b=a.analogRead(0)*5/1023; %Preleva il dato dal pin analogico 0 e lo salva in b
x=[x,b]; %Inserisce il valore di b in coda al vettore x
plot(x,‘LineWidth’,2); %Plotta il vettore x e imposto lo spessore del grafico a 2
grid on; %Attiva la griglia
axis([0 interv -0.1 5.1]); %Imposta la scala degli assi del grafico
pause(0.01); %Ritardo di 0.01 secondi
end
Al primo rigo avviamo la connessione creando un nuovo oggetto arduino e specifichiamo tra virgolette la porta del nostro computer a cui è collegata la scheda. Creaiamo il vettore in cui andremo a salvare i dati acquisiti e in interv specifichiamo per quanto tempo vogliamo acquisire il segnale. Iniziamo un ciclo for e preleviamo il segnale dal pin analogico 0, notiamo che abbiamo convertito il segnale che va da 0 a 1023 in un valore di tensione che va da 0 a 5, semplicemente moltiplicando per 5 e dividendo per 1023. Salviamo il valore in coda al vettore e lo plottiamo. Infine con il comando axis impostiamo la scala degli assi.