Come impostare gli indirizzi I²C e usare uno scanner I²C per LCD1602 e LCD2004
In questo tutorial esploreremo come impostare gli indirizzi I²C e utilizzare uno scanner I²C per i display LCD1602 e LCD2004. Comprendere la comunicazione I²C è fondamentale per integrare questi moduli LCD nei tuoi progetti con Arduino, consentendo una trasmissione e un controllo dei dati efficienti. Alla fine di questa guida sarai in grado di identificare efficacemente gli indirizzi I²C dei tuoi LCD e di assicurarti che funzionino correttamente.


Utilizzeremo il sensore BMP-180 come parte di questo progetto, che funziona tramite comunicazione I²C. Il sensore fornisce letture di temperatura e pressione, che possono essere visualizzate sia sul LCD1602 sia sul LCD2004. Questo tutorial includerà istruzioni per il cablaggio, frammenti di codice e una dimostrazione dei risultati attesi. Per una comprensione più visiva, assicurati di guardare il video associato (nel video a 00:00).
L'hardware spiegato
Le componenti principali per questo progetto includono il sensore BMP-180, un display LCD1602 o LCD2004 e una scheda Arduino. Il BMP-180 è un sensore di pressione digitale che comunica tramite il protocollo I²C, richiedendo soltanto due linee dati: SDA (linea dati) e SCL (linea di clock). Anche i display LCD sono compatibili con I²C e possono essere facilmente controllati usando lo stesso protocollo di comunicazione, consentendo una configurazione ordinata ed efficiente.
Il BMP-180 funziona con una tensione di alimentazione compresa tra 1.8V e 3.6V, il che significa che può essere alimentato tramite un regolatore di tensione se si utilizza una sorgente a tensione più elevata. I display LCD, invece, normalmente funzionano a 5V, il che rende facile l'interfacciamento con una scheda Arduino senza componenti aggiuntivi.
Dettagli della scheda tecnica
| Produttore | Bosch |
|---|---|
| Numero di parte | BMP-180 |
| Tensione logica/I/O | 1.8 - 3.6 V |
| Tensione di alimentazione | 1,8 - 3,6 V |
| Corrente di uscita (per canale) | 3.6 µA |
| Corrente di picco (per canale) | 1 mA |
| Guida alla frequenza PWM | N/D |
| Soglie logiche di ingresso | Non applicabile |
| Caduta di tensione / RDS(on)/ saturazione | Non applicabile |
| Limiti termici | -40 a +85 °C |
| Pacchetto | 3.6 x 3.8 mm |
| Note / varianti | Sensore di temperatura e pressione |
- Garantire una corretta alimentazione: da 1,8 V a 3,6 V per il BMP-180.
- Usare resistenze pull-up sulle linee SDA e SCL per una comunicazione I²C stabile.
- Tenere i cavi corti per evitare la degradazione del segnale.
- Verificare che l'indirizzo I²C sia corretto durante la scansione.
- Intervallo di misurazione della temperatura: da -40 a +85 °C per il BMP-180.
Istruzioni di cablaggio

Per collegare il sensore BMP-180 e il display LCD al tuo Arduino, segui questi passaggi:

Per prima cosa, collega il BMP-180VnCollega il pin all'uscita 5V dell'Arduino. Successivamente, collega ilGNDpin del BMP-180 alla massa dell'Arduino. IlSDAIl pin del BMP-180 dovrebbe essere collegato all'ArduinoA4perno, mentre ilSCLil pin si collega aA5.
Per il LCD1602 o il LCD2004, collegare ilVCCcollega il pin al 5V sull'Arduino e ilGNDcollegare anche il pin a massa. IlSDAIl pin del display LCD dovrebbe essere collegato anche aA4(condiviso con BMP-180), e ilSCLIl pin dovrebbe essere collegato aA5.
Questa configurazione consente a entrambi i dispositivi di comunicare sullo stesso bus I²C, garantendo un'installazione pulita ed efficiente.
Esempi di codice e guida passo-passo
Per eseguire la scansione degli indirizzi I²C, useremo un semplice frammento di codice. Il seguente estratto inizializza la comunicazione I²C e prepara il monitor seriale:
#include
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
Questo codice inizializza la libreria Wire per la comunicazione I²C e imposta il monitor seriale per l'output. È essenziale per il debug e per assicurarsi che i dispositivi I²C vengano riconosciuti.
La funzione loop scansiona i dispositivi sul bus I²C e stampa i loro indirizzi:
void loop() {
byte error, address;
int nDevices = 0;
Serial.println("Scanning...");
for(address = 1; address < 127; address++) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
Serial.println(address, HEX);
nDevices++;
}
}
if (nDevices == 0) Serial.println("No I2C devices found\n");
delay(5000); // wait 5 seconds for next scan
}
Questo ciclo controlla ogni indirizzo da 1 a 127, tentando di comunicare con eventuali dispositivi presenti. Se un dispositivo risponde alla comunicazione, il suo indirizzo viene stampato sul monitor seriale. Questo è un passaggio cruciale per identificare l'indirizzo I²C del tuo LCD o di altri dispositivi collegati.
Dimostrazione / Cosa aspettarsi
Quando viene eseguito lo scanner I²C, dovresti vedere nel monitor seriale dei messaggi che indicano se sono stati trovati dispositivi I²C. Se l'operazione ha successo, l'output mostrerà gli indirizzi dei dispositivi collegati, formattati come valori esadecimali (es. I2C device found at address 0x27). Se non vengono trovati dispositivi, vedrai un messaggio corrispondente.
È importante assicurarsi che tutte le connessioni siano sicure e che i livelli di tensione corretti siano forniti per evitare problemi con il rilevamento del dispositivo (nel video a 05:30).
Cose di cui potresti avere bisogno
-
AmazonAcquista LCD1602-I2C da Amazonamzn.to
-
AliExpressAcquista 10 pezzi di LCD1602-I2C da AliExpresss.click.aliexpress.com
-
AliExpressAcquista LCD1602-I2C da AliExpresss.click.aliexpress.com
Risorse e riferimenti
Nessuna risorsa ancora.
File📁
Librerie Arduino (zip)
-
Libreria LCD Arduino LCD1602 di Robojax
robojax-LCD1602-I2C-library-master.zip0.01 MB
File Fritzing
-
LCD2004-I2C
LCD2004-I2C.fzpz0.02 MB