Nota
Ciao e benvenuto nella Community Facebook degli appassionati di SunFounder Raspberry Pi, Arduino ed ESP32! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri maker come te.
Perché unirsi?
Supporto Esperto: Risolvi problemi post-vendita e affronta sfide tecniche grazie all’aiuto della nostra community e del nostro team.
Impara e Condividi: Scambia suggerimenti e tutorial per potenziare le tue competenze.
Anteprime Esclusive: Accedi in anticipo a novità sui prodotti e contenuti in anteprima.
Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni e Giveaway Festivi: Partecipa a promozioni festive e concorsi con premi.
👉 Pronto a scoprire e creare con noi? Clicca su [qui] ed entra subito!
Lezione 10: Modulo Convertitore ADC DAC PCF8591
In questa lezione imparerai a collegare un Arduino Uno R4 (o R3) a un modulo convertitore PCF8591 ADC DAC. Vedremo come leggere valori analogici dall’ingresso AIN0, inviarli all’uscita DAC (AOUT) e visualizzare sia i valori grezzi che quelli convertiti in tensione sul monitor seriale. Il potenziometro integrato nel modulo è collegato ad AIN0 tramite ponticelli, mentre il LED D2 è connesso ad AOUT: ruotando il potenziometro, noterai una variazione della luminosità del LED.
Componenti Necessari
Per questo progetto sono necessari i seguenti componenti.
È sicuramente comodo acquistare un kit completo. Ecco il link:
Nome |
CONTENUTO DEL KIT |
LINK |
---|---|---|
Universal Maker Sensor Kit |
94 |
Puoi anche acquistare i componenti separatamente dai link riportati qui sotto.
Descrizione del Componente |
Link per l’acquisto |
---|---|
Arduino UNO R3 o R4 |
|
Collegamenti

Codice
Nota
Per installare la libreria, utilizza il Library Manager di Arduino e cerca «Adafruit PCF8591», quindi installala.
Analisi del Codice
Inclusione della Libreria e Definizione delle Costanti
Nota
Per installare la libreria, utilizza il Library Manager di Arduino e cerca «Adafruit PCF8591», quindi installala.
// Include Adafruit PCF8591 library #include <Adafruit_PCF8591.h> // Define the reference voltage for ADC conversion #define ADC_REFERENCE_VOLTAGE 5.0
In questa sezione viene inclusa la libreria Adafruit PCF8591, che fornisce funzioni per interagire con il modulo. La tensione di riferimento per la conversione ADC è impostata a 5,0 V, che rappresenta il massimo misurabile.
Configurazione del Modulo PCF8591
// Create an instance of the PCF8591 module Adafruit_PCF8591 pcf = Adafruit_PCF8591(); void setup() { Serial.begin(9600); Serial.println("# Adafruit PCF8591 demo"); if (!pcf.begin()) { Serial.println("# PCF8591 not found!"); while (1) delay(10); } Serial.println("# PCF8591 found"); pcf.enableDAC(true); }
Nella funzione setup, viene avviata la comunicazione seriale e viene creata un’istanza del modulo. La funzione
pcf.begin()
verifica la connessione del modulo: se non rilevato, viene stampato un messaggio di errore e il programma si blocca. Se il modulo è rilevato correttamente, viene attivato il DAC.Lettura dall’ADC e Scrittura al DAC
void loop() { AIN0 = pcf.analogRead(0); pcf.analogWrite(AIN0); Serial.print("AIN0: "); Serial.print(AIN0); Serial.print(", "); Serial.print(int_to_volts(AIN0, 8, ADC_REFERENCE_VOLTAGE)); Serial.println("V"); delay(500); }
La funzione loop legge continuamente il valore analogico da AIN0 (ingresso analogico 0) e lo invia al DAC. I valori letti (grezzi e convertiti in volt) vengono stampati sul monitor seriale.
Tramite i ponticelli, il potenziometro del modulo è collegato ad AIN0, mentre il LED D2 è connesso ad AOUT; per ulteriori dettagli, fai riferimento allo schema del modulo PCF8591 schematic. La luminosità del LED varia a seconda della rotazione del potenziometro.
Funzione di Conversione Digitale in Tensione
float int_to_volts(uint16_t dac_value, uint8_t bits, float logic_level) { return (((float)dac_value / ((1 << bits) - 1)) * logic_level); }
Questa funzione converte un valore digitale nel corrispondente valore in tensione. Riceve come argomenti il valore digitale (
dac_value
), la risoluzione in bit (bits
) e il livello logico (logic_level
). La formula utilizzata è un metodo standard per convertire valori digitali in volt equivalenti.