Nota: per questo programma è necessario un cicalino attivo (la spiegazione seguirà più avanti); è necessario prestare attenzione alla polarità. Non è necessaria una resistenza in serie per il cicalino (altoparlante).
In questo post vogliamo far illuminare o suonare un cicalino e un LED con l'aiuto di un microcontrollore Raspberry Pi. Questo programma viene spesso utilizzato nelle scuole per mostrare come sia possibile utilizzare semplici segnali di uscita utilizzando un Raspberry Pi con semplici componenti.
Prima di entrare nel merito della differenza tra un altoparlante attivo e uno passivo, diamo un'occhiata allo schema del circuito e al codice del programma.
Lo schema del circuito: Collegamento del cicalino e del LED al Raspberry Pi
Il codice sorgente: Collegamento del cicalino e del LED al Raspberry Pi
# Questa volta utilizziamo anche la prima sezione del programma. Le variabili vengono inserite qui. Ciò significa che c'è un numero dietro una lettera o una parola. Nel nostro caso, il LED è collegato al pin 23 e l'altoparlante piezoelettrico al pin 4. Per evitare di confondere i due pin in seguito, rinominiamo semplicemente il pin 23 e il pin 24.
# Iniziamo importando i moduli del programma
importa RPI.GPIO come GPIO
importare tempo
GPIO.setmode(GPIO.BCM) # Impostiamo la modalità su BCM
LED=23; # La parola "LED" ora sta per il numero "23".
Beep=24; # La parola "Beep" ora corrisponde al numero "24".
GPIO.setup(LED,GPIO.OUT) # Il pin "LED" (pin 23) è un'uscita.
GPIO.setup(Pieps,GPIO.OUT) # Il pin "Pieps" (pin 24) è un'uscita
# Il ciclo inizia qui
try:
while True: # ciclo while in modo che il programma venga eseguito continuamente
GPIO.output(LED,GPIO.HIGH) # Accende il LED.
GPIO.output(Pieps,GPIO.HIGH) # Accende l'altoparlante piezoelettrico.
time.sleep(1) # Aspetta 1 secondo
GPIO.output(LED,GPIO.LOW) # Spegne il LED.
GPIO.output(Pieps,GPIO.LOW) # Spegne l'altoparlante piezoelettrico.
time.sleep(1)
# Alla fine, il programma salta all'inizio del ciclo while. Quindi sta per emettere un segnale acustico e accendersi di nuovo. Se aumenti o diminuisci la pausa (time.sleep), il bip e le luci si accendono più velocemente o più lentamente.
except KeyboardInterrupt: # Con CTRL+C interrompiamo il programma
print ("Finito") # Scrivi "Finito" nella finestra della shell
GPIO.cleanup() # Esci dal programma
Differenza tra cicalino attivo e passivo
Il cicalino attivo ha un oscillatore incorporato che produce un ronzio quando viene applicata una tensione di 3,3V o 5V. A causa del design, devi prestare attenzione alla polarità del cicalino. Alla consegna, questi cicalini hanno solitamente un piccolo adesivo con il segno più e l'indicazione "RIMUOVERE IL SIGILLO DOPO IL LAVAGGIO". C'è anche un segno più + sempre sul corpo del componente stesso. Devi guardare due volte per vedere la parte più lunga. Oppure puoi prendere una piccola scheda breakout; in questo caso i contatti sono contrassegnati da S (che sta per segnale) e - (meno, terra).
Puoi provare il cicalino con un semplice programma come quello per il LED lampeggiante, in cui il pin (quasi) qualsiasi viene commutato su HIGH per un secondo e su LOW per un secondo.
Il cicalino passivo non ha un oscillatore incorporato, quindi è il Raspberry Pi a doversi occupare di questa funzione. Se provi il programma di cui sopra su un cicalino passivo, sentirai un leggero "click" ogni secondo.
Tuttavia, se accorci il tempo di pausa (sleep(0.001) o sleep(0.002)) e ripeti l'accensione e lo spegnimento per una certa durata, potrai sentire un suono la cui frequenza può essere facilmente calcolata: un millisecondo di HIGH o LOW significa (trascurando il tempo di esecuzione degli altri comandi) circa 500 cicli di accensione e spegnimento al secondo, cioè circa 500Hz.
Se vuoi emettere un breve segnale acustico, devi utilizzare un cicalino attivo che si accende e si spegne come un LED. Bisogna prestare attenzione alla polarità.
Se vuoi programmare una sirena a due toni (che si sente più chiaramente) o una breve melodia di riconoscimento (jingle), devi utilizzare un cicalino passivo o un piccolo altoparlante.