banner

Notizia

Jun 05, 2023

Come utilizzare i pulsanti con i pin GPIO Raspberry Pi

Se hai mai utilizzato un LED con un Raspberry Pi, probabilmente sai come funzionano le uscite GPIO. Il codice fa fluire l'elettricità attraverso i pin GPIO (General Purpose Input/Output), passa attraverso i LED e illumina le cose. Ma hai mai provato a fare il contrario? Con i pulsanti puoi fare esattamente il contrario. Questo tutorial ti mostra come trasformare un pin GPIO in un pin di input, ascoltando ogni pulsante che premi!

Un pulsante è un tipo di interruttore. Ha due pin conduttivi separati che impediscono un circuito completo essendo separati l'uno dall'altro. Quando premi un pulsante, in realtà stai spingendo insieme i due pin, completando il circuito. Ma se lasci andare, c'è un meccanismo a molla che separa nuovamente i perni.

Il tipico pulsante nei kit di sensori ha quattro pin, ciascuno separato dagli altri. Una piastra mobile di metallo si trova proprio sotto l'area del pulsante, che scende e collega tutti gli altri pin quando il pulsante viene premuto verso il basso.

Troverai due piastre all'interno di un pulsante a 4 pin. Ciascuno è collegato a due pin esterni. Entrambe le piastre sono tenute separate l'una dall'altra e possono essere collegate solo premendo una terza piastra, la piastra metallica sotto il pulsante.

In un certo senso, ci sono sempre due pin collegati in un pulsante. Quando si preme il pulsante a 4 pin, si collegano tutti e quattro i pin insieme.

Questa volta, stiamo facendo in modo che i pin GPIO del Raspberry Pi rilevino la pressione di un pulsante da un pulsante. Quando l'elettricità lo attraversa, il Raspberry Pi stamperà un messaggio che ti informa che sta funzionando.

Mancia: per trovare il numero pin corretto, tieni il tuo Raspberry Pi in modo che i pin GPIO si trovino nell'angolo in alto a destra. Il pin in alto a sinistra è il pin 1 e alla sua destra c'è il pin 2. Sotto il pin 1 c'è il pin 3, a destra c'è il pin 4 e così via.

Se inverti i pin GND e 3,3 V, con 3,3 V sul resistore e GND sull'altro lato del pulsante, invertirai la logica del pulsante. Verrà visualizzato che il Pin 7 è ALTO! continuamente e diventa il Pin 7 BASSO quando si preme il pulsante.

I pulsanti utilizzano due tipi di resistori: pull-up e pull-down. Quello con 3,3 V collegato al resistore è un resistore pull-up. Tira la tensione verso l'alto. Nel frattempo, i resistori pull-down riducono la tensione avendo un pin GND collegato ad essi.

Puoi comunque utilizzare un pulsante senza un resistore, ma in questo modo il pin GPIO rimane fluttuante. Un pin GPIO flottante non riceve carica elettrica diretta, quindi cerca cariche nell'ambiente circostante. Se c'è un forte campo elettromagnetico vicino ad esso, ad esempio, si limiterà a misurare quello.

Ecco perché hai bisogno di un punto di riferimento. Se colleghi il pin GPIO a 0 V (GND) per impostazione predefinita, misurerà 0 V mentre il pulsante non è premuto. Ma se non lo fai, il valore del pin GPIO può essere ovunque, anche volt negativi!

I perni mobili possono però fare alcune cose interessanti. Se lasci uno spillo fluttuante, può percepire la differenza di tensione nell'aria, misurando anche l'effetto del movimento del dito vicino allo spillo stesso. È come un sensore di presenza elettromagnetico o qualcosa del genere.

È un peccato che tu non possa farlo semplicemente sul Raspberry Pi, però. Affinché ciò sia utile, avrai bisogno di pin analogici e il Raspberry Pi non li ha.

Sapendo questo, dovresti capire che il pin 7 rileva se lo attraversa 3,3 V o 0 V. Se rileva 3,3 V, si segnala come ALTO. Ma se rileva 0 V, allora è BASSO.

Dividiamo il codice in tre parti: comandi di importazione, comandi di configurazione e comandi in loop.

Stiamo utilizzando due comandi di importazione:

import RPi.GPIO as GPIO importa il modulo RPi.GPIO, che ti consente di fare cose con i pin GPIO del tuo Raspberry Pi. Aggiungendo GPIO alla fine, stai dicendo a Python di dire che digitare GPIO equivale a digitare RPi.GPIO. Puoi anche sostituirlo con altre stringhe e il codice dovrebbe continuare a funzionare purché lo formatti correttamente.

D'altra parte, da time import sleep importa solo una parte del modulo time di Python. Ti consente di utilizzare la funzione sleep().

CONDIVIDERE