.. note:: Ciao, benvenuto nella community di appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Esplora più a fondo Raspberry Pi, Arduino ed ESP32 con altri appassionati. **Perché unirsi a noi?** - **Supporto esperto**: Risolvi problemi post-vendita e sfide tecniche grazie al supporto della nostra community e del nostro team. - **Impara e condividi**: Scambia suggerimenti e tutorial per migliorare le tue competenze. - **Anteprime esclusive**: Ottieni l'accesso anticipato a nuovi annunci di prodotto e anteprime. - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni festive e omaggi**: Partecipa a giveaway e promozioni durante le festività. 👉 Pronto a esplorare e creare con noi? Clicca [|link_sf_facebook|] e unisciti oggi stesso! .. _ar_passive_buzzer: 2.11 Buzzer Passivo =================== Panoramica ---------- In questa lezione conoscerai il buzzer passivo. Come tipo di buzzer elettronico con una struttura integrata, il buzzer passivo è alimentato da corrente continua (DC) ed è ampiamente utilizzato in computer, allarmi, giocattoli elettronici, telefoni, timer e altri dispositivi elettronici o vocali. Componenti necessari --------------------- .. image:: img/image451.png * :ref:`cpn_mega2560` * :ref:`cpn_breadboard` * :ref:`cpn_wires` * :ref:`cpn_buzzer` Circuito Fritzing -------------------- .. image:: img/image448.png In questo esempio, utilizziamo il pin digitale 9 per pilotare il buzzer, collegando il catodo del buzzer a GND e l'anodo al pin digitale 9. Schema elettrico ------------------- .. image:: img/image450.png Codice -------- .. note:: * Puoi aprire direttamente il file ``2.11_passiveBuzzer.ino`` nella cartella ``sunfounder_vincent_kit_for_arduino\code\2.11_passiveBuzzer``. * Oppure copia questo codice nell'IDE di Arduino. .. raw:: html Una volta caricato il codice sulla scheda Mega2560, sentirai una melodia composta da sette note. Analisi del codice --------------------- Ci sono due punti che richiedono attenzione: 1. ``tone()`` & ``noTone()``: Questa funzione viene utilizzata per controllare direttamente il suono del buzzer passivo e il suo prototipo è il seguente: .. code-block:: arduino void tone(int pin, unsigned int frequency) void tone(int pin, unsigned int frequency, unsigned long duration) Genera un'onda quadra con la frequenza specificata (e un ciclo di lavoro del 50%) su un pin (facendo vibrare il buzzer passivo per emettere un suono). È possibile specificare una durata, altrimenti l'onda continua fino a una chiamata a ``noTone()``. Il pin può essere collegato a un buzzer piezoelettrico o ad altri altoparlanti per riprodurre toni. È possibile generare un solo tono alla volta. Se un tono è già in riproduzione su un altro pin, la chiamata a ``tone()`` non avrà effetto. Se il tono è in riproduzione sullo stesso pin, la chiamata ne imposterà la frequenza. L'uso della funzione ``tone()`` interferisce con l'output PWM sui pin 3 e 11 (su schede diverse dalla Mega). Non è possibile generare toni inferiori a 31Hz. **pin**: Il pin di Arduino su cui generare il tono. **frequency**: La frequenza del tono in hertz. **duration**: La durata del tono in millisecondi (opzionale). .. code-block:: arduino void noTone(int pin) Interrompe la generazione di un'onda quadra attivata da ``tone()``. Non ha effetto se nessun tono è in riproduzione. **pin**: Il pin di Arduino su cui generare il tono. Conoscendo queste due funzioni, puoi comprendere meglio il codice—la configurazione degli array ``melody[]`` e ``noteDurations[]`` prepara le successive chiamate multiple della funzione ``tone()`` e il cambiamento di tono e durata nel ciclo per ottenere un effetto musicale migliore. 2. ``pitches.h``: Il codice utilizza un file aggiuntivo, ``pitches.h``. Questo file contiene tutti i valori di frequenza per le note tipiche. Ad esempio, NOTE_C4 è il Do centrale, NOTE_FS4 è il Fa diesis, e così via. Questa tabella delle note è stata originariamente scritta da Brett Hagman, il cui lavoro ha ispirato il comando ``tone()``. Può essere utile ogni volta che desideri creare note musicali. .. code-block:: arduino #include "pitches.h" .. note:: Questo programma di esempio include già un file ``pitches.h``. Se lo posizioniamo nella stessa cartella del codice principale, i passaggi successivi per installare ``pitches.h`` possono essere saltati. .. image:: img/image123.png Se, aprendo il codice ``2.11_passiveBuzzer``, non riesci ad accedere a ``pitches.h``, puoi semplicemente installarlo manualmente seguendo questi passaggi: Per creare il file ``pitches.h``, clicca sul pulsante appena sotto l'icona del monitor seriale e scegli "New Tab", oppure usa Ctrl+Shift+N. .. image:: img/image124.png Quindi incolla il seguente codice e salvalo come ``pitches.h``: .. code-block:: arduino /***************** Public Constants *****************/ #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 58 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_AS2 117 #define NOTE_B2 123 #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #define NOTE_AS3 233 #define NOTE_B3 247 #define NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 622 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS7 3729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 49 Immagine del risultato -------------------------- .. image:: img/image125.jpeg