.. note::
Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 con altri appassionati.
**Perché Unirsi?**
- **Supporto Esperto**: Risolvi problemi post-vendita e sfide tecniche con il supporto della nostra comunità e del nostro team.
- **Impara e Condividi**: Scambia consigli e tutorial per migliorare le tue competenze.
- **Anteprime Esclusive**: Accedi in anteprima a nuovi annunci di prodotti e anticipazioni.
- **Sconti Speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
- **Promozioni Festive e Giveaway**: Partecipa a giveaway e promozioni durante le festività.
👉 Pronto per esplorare e creare con noi? Clicca [|link_sf_facebook|] e unisciti oggi stesso!
1.2.1 Cicalino Attivo
=======================
Introduzione
-----------------
In questa lezione, impareremo a far suonare un cicalino attivo usando un
transistor PNP.
Componenti
--------------
.. image:: img/list_1.2.1.png
Principio
---------
**Cicalino**
Il cicalino è un tipo di dispositivo elettronico integrato, alimentato in
corrente continua, ampiamente utilizzato in computer, stampanti, fotocopiatrici,
allarmi, giocattoli elettronici, dispositivi elettronici per auto, telefoni,
timer e altri prodotti o dispositivi a voce. I cicalini si dividono in attivi e
passivi (vedi immagine seguente). Ruota il cicalino in modo che i pin siano
rivolti verso l’alto: il cicalino con una scheda verde è passivo, mentre quello
con nastro nero è attivo.
Differenza tra un cicalino attivo e uno passivo:
.. image:: img/image101.png
:width: 400
:align: center
La differenza principale è che un cicalino attivo ha una sorgente di
oscillazione interna, quindi emette suoni quando è alimentato. Al contrario,
il cicalino passivo non ha questa sorgente e non suona se alimentato da corrente
continua; richiede onde quadre con frequenza tra 2K e 5K per funzionare.
I cicalini attivi, a causa dei circuiti oscillanti interni, tendono ad essere più
costosi di quelli passivi.
Ecco il simbolo elettrico di un cicalino. Ha due pin, uno positivo e uno negativo.
Il pin contrassegnato con un + sulla superficie è l'anodo e l'altro è il catodo.
.. image:: img/image102.png
:width: 150
:align: center
Controlla i pin del cicalino: il pin più lungo è l'anodo e quello più corto è il catodo.
Assicurati di non invertirli durante il collegamento, altrimenti il cicalino non emetterà suoni.
Schema Elettrico
-----------------
In questo esperimento, si utilizza un cicalino attivo, un transistor PNP e una
resistenza da 1k tra la base del transistor e il GPIO per proteggere il transistor.
Quando il GPIO17 del Raspberry Pi viene impostato a livello basso (0V) tramite
programmazione, il transistor si satura di corrente e il cicalino emette suoni.
Quando, invece, il GPIO è impostato a livello alto, il transistor si spegne e il
cicalino non suona.
.. image:: img/image332.png
Procedure Sperimentali
---------------------------
**Step 1:** Costruisci il circuito. (Fai attenzione ai poli del cicalino: quello
con l'etichetta + è il polo positivo e l'altro è il negativo.)
.. image:: img/image104.png
:width: 800
**Step 2**: Apri il file di codice.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/c/1.2.1/
**Step 3**: Compila il codice.
.. raw:: html
.. code-block::
gcc 1.2.1_ActiveBuzzer.c -lwiringPi
**Step 4**: Esegui il file eseguibile.
.. raw:: html
.. code-block::
sudo ./a.out
Quando il codice viene eseguito, il cicalino suona.
.. note::
Se il programma non funziona o appare un errore come "wiringPi.h: No such file or directory", consulta :ref:`faq_c_nowork`.
**Codice**
.. code-block:: c
#include
#include
#define BeepPin 0
int main(void){
if(wiringPiSetup() == -1){ //se l'inizializzazione fallisce, stampa un messaggio
printf("setup wiringPi failed !");
return 1;
}
pinMode(BeepPin, OUTPUT); //imposta GPIO0 come uscita
while(1){
//accendi il cicalino
printf("Buzzer on\n");
digitalWrite(BeepPin, LOW);
delay(100);
printf("Buzzer off\n");
//spegni il cicalino
digitalWrite(BeepPin, HIGH);
delay(100);
}
return 0;
}
**Spiegazione del Codice**
.. code-block:: c
digitalWrite(BeepPin, LOW);
Usiamo un cicalino attivo in questo esperimento, quindi suonerà automaticamente
quando collegato alla corrente continua. Questo comando imposta la porta I/O a
livello basso (0V), attivando il transistor e facendo suonare il cicalino.
.. code-block:: c
digitalWrite(BeepPin, HIGH);
Imposta la porta I/O a livello alto (3.3V), disattivando il transistor, e il
cicalino non suona.