30.11.2022 Views

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;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!