Nota

Ciao, benvenuto nella Comunità di appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci le tue competenze su Raspberry Pi, Arduino e ESP32 insieme ad altri entusiasti.

Perché unirsi?

  • Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara & Condividi: Condividi suggerimenti e tutorial per accrescere le tue competenze.

  • Anteprime esclusive: Accedi in anteprima a nuovi annunci di prodotto e contenuti esclusivi.

  • Sconti speciali: Approfitta di offerte esclusive sui nostri prodotti più recenti.

  • Promozioni festive e giveaway: Partecipa a promozioni stagionali e concorsi a premi.

👉 Pronto a esplorare e creare con noi? Clicca [qui] e unisciti subito!

Lezione 10: Modulo Convertitore ADC DAC PCF8591

In questa lezione imparerai a collegare il Raspberry Pi Pico W al modulo convertitore ADC DAC PCF8591 utilizzando MicroPython. Imposterai una connessione I2C, inizializzerai il modulo PCF8591 e leggerai i valori analogici dai suoi canali. Questa esercitazione pratica ti aiuterà a comprendere meglio la conversione analogico-digitale e la comunicazione I2C sul Raspberry Pi Pico W. Il potenziometro integrato è collegato ad AIN0 tramite ponticelli, mentre il LED D2 è connesso ad AOUT: ruotando il potenziometro potrai osservare la variazione dell’intensità luminosa del LED.

Componenti necessari

Per questo progetto sono necessari i seguenti componenti.

È sicuramente conveniente acquistare un kit completo. Ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Kit Sensori Universali per Maker

94

Universal Maker Sensor Kit

Puoi anche acquistare i componenti separatamente dai link riportati di seguito.

Introduzione ai Componenti

Link per l’acquisto

Raspberry Pi Pico W

ACQUISTA

Modulo Convertitore ADC/DAC PCF8591

ACQUISTA

Breadboard

ACQUISTA

Cablaggio

../_images/Lesson_10_PCF8591_Module_bb.png

Codice

Nota

  • Apri il file 10_pcf8591_module.py nel percorso universal-maker-sensor-kit-main/pico/Lesson_10_PCF8591_Module oppure copia questo codice in Thonny, quindi clicca su «Run Current Script» o premi F5 per eseguirlo. Per il tutorial completo, vedi Apri ed Esegui Codice Direttamente.

  • È necessario utilizzare il file PCF8591.py: assicurati che sia stato caricato su Pico W. Per istruzioni dettagliate consulta Caricare le Librerie su Pico.

  • Non dimenticare di selezionare l’interprete «MicroPython (Raspberry Pi Pico)» nell’angolo in basso a destra.

from machine import I2C, Pin
import time
from PCF8591 import PCF8591

# Configura la connessione I2C sui pin 20 (SDA) e 21 (SCL)
i2c = I2C(0, sda=Pin(20), scl=Pin(21))

# Inizializza il modulo PCF8591 con l'indirizzo 0x48
pcf8591 = PCF8591(0x48, i2c)  # Modifica l’indirizzo se necessario

# Verifica se il modulo PCF8591 è connesso correttamente
if pcf8591.begin():
    print("PCF8591 found")

# Ciclo principale per leggere valori analogici
while True:
    # Legge e stampa il valore analogico dal canale AIN0
    AIN0 = pcf8591.analog_read(PCF8591.AIN0)
    print("AIN0 ", AIN0)  # Può essere usato anche PCF8591.CHANNEL_0
    # È possibile leggere anche altri canali rimuovendo i commenti qui sotto
    # print("AIN1 ", pcf8591.analog_read(PCF8591.AIN1))
    # print("AIN2 ", pcf8591.analog_read(PCF8591.AIN2))
    # print("AIN3 ", pcf8591.analog_read(PCF8591.AIN3))

    # Scrive il valore su AOUT. Questo cambia la luminosità del LED D2 sul modulo.
    pcf8591.analog_write(AIN0)

    # Attende 0,2 secondi prima della prossima lettura
    time.sleep(0.2)

Analisi del Codice

  1. Importazione delle Librerie e Configurazione I2C

    • Il modulo machine viene importato per la comunicazione I2C e l’uso dei pin.

    • Il modulo time è importato per introdurre ritardi nel programma.

    • La libreria PCF8591 semplifica l’interazione con il modulo. Per maggiori informazioni visita xreef/PCF8591_micropython_library.


    from machine import I2C, Pin
    import time
    from PCF8591 import PCF8591
    
  2. Inizializzazione della Connessione I2C

    La comunicazione I2C viene configurata usando i pin GPIO 20 (SDA) e 21 (SCL) del Raspberry Pi Pico W.

    i2c = I2C(0, sda=Pin(20), scl=Pin(21))
    
  3. Inizializzazione del Modulo PCF8591

    Il modulo viene inizializzato con l’indirizzo I2C 0x48. Questo può variare in base alla configurazione del modulo.

    pcf8591 = PCF8591(0x48, i2c)
    
  4. Verifica della Connessione

    Il programma verifica che il modulo PCF8591 sia correttamente rilevato.

    if pcf8591.begin():
        print("PCF8591 found")
    
  5. Ciclo Principale per la Lettura dei Valori Analogici

    • Il programma entra in un ciclo infinito in cui legge costantemente il valore analogico dal canale AIN0.

    • Usa analog_read per acquisire il dato dal canale specificato.

    • Usa analog_write per inviare il valore ad AOUT.

    • Il potenziometro è collegato ad AIN0, il LED D2 ad AOUT, quindi la rotazione del potenziometro influisce sull’intensità luminosa del LED.

    • Consulta lo schema del modulo PCF8591 in schematic per maggiori dettagli.

    • Un ritardo di 0,2 secondi è introdotto per stabilizzare le letture.


    while True:
        # Legge e stampa il valore analogico dal canale AIN0
        AIN0 = pcf8591.analog_read(PCF8591.AIN0)
        print("AIN0 ", AIN0)  # Può essere utilizzato anche PCF8591.CHANNEL_0
        # È possibile leggere altri canali rimuovendo i commenti dalle righe seguenti
        # print("AIN1 ", pcf8591.analog_read(PCF8591.AIN1))
        # print("AIN2 ", pcf8591.analog_read(PCF8591.AIN2))
        # print("AIN3 ", pcf8591.analog_read(PCF8591.AIN3))
    
        # Scrive il valore su AOUT. Questo modifica la luminosità del LED D2 sul modulo.
        pcf8591.analog_write(AIN0)
    
        # Attende 0,2 secondi prima della lettura successiva
        time.sleep(0.2)