.. note:: Ciao, benvenuto nella comunità di appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Immergiti nel mondo affascinante di Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati. **Perché unirti a noi?** - **Supporto esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra comunità e del nostro team. - **Impara e condividi**: Scambia consigli e tutorial per migliorare le tue competenze. - **Anteprime esclusive**: Ottieni accesso anticipato a nuovi annunci di prodotti e contenuti esclusivi. - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni festive e concorsi**: Partecipa a concorsi e promozioni speciali durante le festività. 👉 Sei pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi! .. _ar_analog_write: 1.3 Scrittura Analogica (Analog Write) ======================================== Panoramica ------------- Puoi generare un segnale PWM su un pin utilizzando analogWrite(). Questo metodo può essere utilizzato per regolare la luminosità di un LED, cambiare il colore di un LED RGB, controllare la velocità di un motore e molto altro. Qui useremo un LED come esempio per ottenere una luminosità graduale. Componenti Necessari ---------------------- .. image:: img/list_1.3.png * :ref:`cpn_mega2560` * :ref:`cpn_breadboard` * :ref:`cpn_wires` * :ref:`cpn_led` * :ref:`cpn_resistor` ※ Modulazione a Larghezza di Impulso (PWM) --------------------------------------------- La Modulazione a Larghezza di Impulso (PWM) è una tecnica per ottenere risultati analogici utilizzando mezzi digitali. Viene utilizzato un controllo digitale per creare un'onda quadra, un segnale che alterna tra acceso e spento. Questo schema acceso/spento può simulare tensioni tra completamente acceso (5 Volt) e spento (0 Volt) modificando la proporzione di tempo in cui il segnale rimane acceso rispetto a quanto rimane spento. Il tempo in cui il segnale è acceso viene chiamato larghezza dell'impulso. Per ottenere valori analogici variabili, si modifica o modula questa larghezza. Se questo schema viene ripetuto abbastanza velocemente, ad esempio con un LED, il risultato sembra essere una tensione costante tra 0 e 5 V, controllando la luminosità del LED. Una chiamata a analogWrite() utilizza una scala da 0 a 255, per cui analogWrite(255) richiede un ciclo di lavoro al 100% (sempre acceso), mentre analogWrite(127) rappresenta un ciclo di lavoro del 50% (acceso per metà del tempo). .. image:: img/image402.png Circuito con Fritzing ------------------------ In questo esempio, utilizziamo il pin PWM 9 per controllare il LED. Collega un'estremità della resistenza al pin 9. Collega il pin lungo (anodo) del LED all'altra estremità della resistenza. Collega il pin corto (catodo) del LED al GND. .. note:: I pin PWM della scheda Mega2560 sono dal 2 al 13 e dal 44 al 46. .. image:: img/image30.png Schema del Circuito ---------------------- .. image:: img/image401.png Codice ------- .. note:: * Puoi aprire direttamente il file ``1.3_analogWrite.ino`` che si trova nel percorso ``sunfounder_vincent_kit_for_arduino\code\1.3_analogWrite``. * Oppure copia questo codice nell'Arduino IDE. .. raw:: html Dopo aver caricato il codice sulla scheda Mega2560, vedrai il LED accendersi e spegnersi gradualmente. Analisi del Codice --------------------- Dichiara il pin 9 come ledPin. .. code-block:: arduino int ledPin = 9; In loop(), analogWrite() assegna al ledPin un valore analogico (onda PWM) tra 0 e 255 per cambiare la luminosità del LED. .. code-block:: arduino analogWrite(ledPin, value); Usando un ciclo for, il valore di analogWrite() può essere modificato gradualmente tra il valore minimo (0) e il massimo (255). .. code-block:: arduino for (int value = 0 ; value <= 255; value += 5) { analogWrite(ledPin, value); } Per osservare chiaramente il fenomeno sperimentale, viene aggiunto delay(30) al ciclo for per controllare il tempo di variazione della luminosità. .. code-block:: arduino void loop() { for (int value = 0 ; value <= 255; value += 5) { analogWrite(ledPin, value); delay(30); } } Immagine del Fenomeno ----------------------- .. image:: img/image36.jpeg