LEZIONE 23
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Andiamo quindi a vedere come è fatto il codice e come si usano questi registri. Questo è un
programma che interroga l’accelerometro.
Seguo i seguenti passaggi:
includo la libreria;
definisco un oggetto di nome ‘acc’ di classe SPI sui tre pin che definiscono MISO, MOSI e clock;
poi definisco a parte un Digital Out (il microcontrollore fa da master) che è il chip select;
poi definisco la porta seriale per andare verso il computer per inviare i dati;
poi definisco un buffer di 6 byte: 6 byte perché dovrà contenere le tre accelerazioni, ognuna delle
quali codificata su 16 bit. Quindi ogni accelerazione su 16 bit, cioè 2 byte, e avendo 3 accelerazioni:
3x2=6 byte. Quindi devo avere un buffer dove quando vado a leggere i dati che vengono dal
sensore, metto dentro i valori appena letti;
poi abbiamo un vettore di tre interi a 16 bit perché io una volta che ho letto il buffer che proviene
dal sensore che contiene i 6 byte della mia informazione, poi a coppie questi byte li devo unire e
ricostruire l’accelerazione lungo x, y e z.
Perché non posso definire direttamente data da 3? Perché li devo accomunare a due a due. Il sensore
mi restituisce un blocco, lui capisce che devo fare una lettura e quindi in successione mi spara fuori
6 byte, poi sarà un mio problema sapere che quei 6 byte li devo prendere a coppia, cioè a due a due,
metterli insieme e creare l’accelerazione di x, l’accelerazione di y e l’accelerazione di z.
Poi abbiamo 3 float che saranno il valore numerico convertito dell’accelerazione perché dentro data
io metterò il valore numerico del convertitore analogico/digitale, poi lo dovrò trasformare in
un’accelerazione che è un float.
Passo al main:
la prima cosa che faccio è deselezionare il sensore perché metto il chip select alto; quindi, non sto
parlando con il sensore, in questo caso il sensore sta in una condizione di stand-by.
Dapprima devo configurare il mio canale SPI e quindi definisco il format 8 bit in modalità 3, perché
modalità 3? Perché così ha deciso il costruttore dell’ADXL345;