| Il
Raspberry PI 3/4/5 non ha disponibili porte analogiche,per
motivi concettuali. E' evidente che normalmente non si userà
un costoso Raspberry per controllare un motore elettrico con
un potenziometro, perché lo si può fare molto più facilmente
ed economicamente con un qualsiasi Arduino, o con ESP32,
ecc. Però è interessante implementare questa potenzialità, non fosse solo per motivi didattici o di sperimentazione. |
| Sulla
BDS è stato inserito un circuito integrato convertitore
analogico/digitale MCP3008, che si collega al Raspberry con
il porocollo SPI e mette a disposizione ben otto porte
analogiche a 10 bit (ovvero una gamma da 0 a 1023 passi
discreti). Sulla destra appare lo schema di collegaemento del circuito integrato. CH0 corrisponde ad A0, fino aCH7 che corrisponde ad A7 Gli altri pin: Vdd (16) e Vref (15) corrispondono all'alimentazione a 3,3v; AGND (14) corrisponde alla massa (GND); CLK(13) " GPIO11 protocollo SPI Dout(12) " GPIO9 protocollo SPI Din(11) " GPIO10 protocollo SPI CS/SHDN(10) " GPIO8 protocollo SPI DGND " a un'altra massa (GND) |
![]() Lo schema di MCP3008 |
| |
|
|
| |
| Connessione
dei moduli sulla BDS |
![]() Il
riquadro principale per le connessioni analogiche.
|
|
Le connessioni per periferiche analogiche sono un po' sparse in vari punti della basetta. A sinistra si vede il punto principale, che verrà illustrato dettagliatamente. In alto si trova in un riquadro verde "AN1", un ingresso analogico per moduli a tre pin, si connette al GPIO A2. Di fianco ad esso, sempre in un riquadro verde, si trovano tre file di connettori paralleli, ognuno da sei pin. La fila superiore GND è la massa; quella intermedia l'alimentazione positiva, VCC; quella inferiore propone sei ingressi analogici; partendo da destra, da A0 ad A5. Nel riquadro rosso è presente la selezione di alimentazione per le periferiche, che può essere fissata sia a 3,33v che a 5v. In questo caso, porre molta attenzione a non danneggiare il Raspberry con l'alimentazione e 5v. L'ultimo riquadro giallo presenta in orizzontale quattro file di jumper, che possono essere inseriti (per usare le porte analogiche) o disconnessi, nel caso si usino altre periferiche SPI, come il lettore RFID (che usa lo stesso protocollo) , per evitare conflitti. |
| Altre
connessioni analogiche |
| |
![]() |
|
La principale connessione analogica, che utilizzeremo nei programmi presenti in questa pagina, riguarda l'uso di potenziometri. Nelle due immagini si vede TRM1 (A7) e TRM2 (A6). Essi sono utilizzati principalmente per controllare la velocità si motori, la luminosità di led o la frequenza sonora dei buzzer. |
![]() |
| |
| Altre
connessioni analogiche: clicca
qui per la pagina relativa ai motori elettrici clicca qui per la pagina relativa ai motori elettrici + display SSD1306 clicca qui per la pagina relativa al joystick clicca qui per la pagina relativa al servomotore clicca qui per la pagina relativa ai sensori di gas |
||
| |
|
|
| |
| Moduli
che si connettono alle porte analogiche |
![]() Un potenziometro |
![]() KY-018: ldr (fotoresistenza) |
![]() Un joystick |
![]() |
Sensori
che idealmente possono utilizzare le porte analogiche. Non tutti sono ancora stati testati., ed è necessario valutare se funzionano correttamente a 3,3v. Dalla tabella si possono visualizzare gli zoccoli su cui possono essere collocati. |
| |
|
|
| |
| Preperazione dell'ambiente virtuale e
salvataggio delle librerie |
| Ipotizziamo che sul desktop del proprio Raspberry si crei una cartella "Projects" e all'interno una sottocartella " " in cui creeremo l'ambiente virtuale (che chiameremo " "), le librerie necessarie e i programmi. Nota: naturalmente i nomi dati alle sottocartelle possono essere variati a piacere. Postulando che si siano create le cartelle indicate, si può iniziare con la programmazione. Aprire un terminale (la quarta icona in alto a destra) e digitare quanto segue:cd Desktop/Projects/analogic per spostarsi nella cartella "analogic"; python3 -m venv/logic per creare l'ambiente virtuale "logic "; source logic/bin/activate per attivare l'ambiente virtuale: apparirà (logic) all'inizio della nuova riga; A questo punto è possibile installare le librerie richieste, quali "RPi.GPIO" oppure "GPIOZERO"; ma cè anche un'altra soluzione, quella di rendere disponibile nell'ambiente virtuale le librerie "di base" installate con Python, digitando il comando "python -m venv --system-site-packages env" (al posto di "env" si può inserire il nome dell'ambiente virtuale preferito. In questo caso sarà poi sufficiente installare solo le librerie specifiche per i vari sensori, guadagnando in semplicità e risparmio di occupazione di scheda SD o di disco. |
| |
|
|
| |
| Primo
programma: un led che cambia luminosità |
| Usando il primo programma, per mezzo del potenziometro TRM1 (A6), possiamo variare la luminosità di un led (Led1, GPIO19). |
| Clicca qui per scaricare il programma in formato ".zip" Clicca qui per visualizzare il programma in formato testo. Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella "Desktop/Projects/analogic" e lanciarlo con il seguente comando: "python analog_pot.py" Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
| |
|
|
| |
| Secondo programma: due led che cambiano alternativamente luminosità |
| Usando il secondo programma, per mezzo del potenziometro TRM1 (A6), possiamo variare la luminosità di due led: Led4 (GPIO12) e Led5 (GPIO5). Quando uno aumenta di luminosità, l'altro decresce e viceversa. |
| Clicca qui per scaricare il programma in formato ".zip" Clicca qui per visualizzare il programma in formato testo. Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella "Desktop/Projects/analogic" e lanciarlo con il seguente comando: "python analog_pot1.py" Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
| |
|
|
| Terzo programma: accensione/spegnimento di 5 led in sequenza |
Con questo programma, ruotando l'asta del potenziometro, si accenderanno (uno per volta) i cinue led, dando l'impressione del movimento. Verranno utilizzati i led da Led1 a Led5. |
Clicca qui per scaricare il programma in formato ".zip" Clicca qui per visualizzare il programma in formato testo. Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella "Desktop/Projects/analogic" e lanciarlo con il comando: "python analog_pot2.py" Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
|
|
| Quarto programma: accensione progressiva di cinque led |
Questo programma è simile al precedente e usa ancora cinque led. Però, ruotando l'asta del potenziometro, si accenderanno in sequenza i cinque led, senza però che si spenga il precedente, dando l'illusione di una barra crescente. Verranno utilizzati i led da Led1 a Led5. |
Clicca qui per scaricare il programma in formato ".zip" Clicca qui per visualizzare il programma in formato testo. Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella "Desktop/Projects/analogic" e lanciarlo con il seguente comando: "python analog_pot3.py" Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie. |
|
|