.. 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.