ecran-i2c-lcd.ino
Un écran LCD 16x2 équipé d'un convertisseur I2C PCF8574 n'occupe que deux broches (SDA/SCL). Le croquis affiche la tension mesurée sur A0 et le temps de fonctionnement, avec rafraîchissement deux fois par seconde.
Matériel requis
Une Arduino Pro Mini (ATmega328P, existe en 5 V/16 MHz et 3,3 V/8 MHz) reliée à un convertisseur USB-série (FTDI) ou un programmeur ICSP. 1 écran LCD 16x2 avec backpack I2C PCF8574 (adresse 0x27 ou 0x3F).
Câblage
SDA sur A4, SCL sur A5 (broches I2C des AVR), VCC 5V, GND. L'adresse I2C se vérifie avec un scanner (ex. i2c_scanner).
Fonctionnement
Wire pilote le bus I2C ; LiquidCrystal_I2C traduit print() en ordres LCD. setCursor positionne le curseur, les espaces finaux effacent les restes d'affichage.
Exécution
Choisissez « Arduino Pro Mini » dans l'IDE (5 V/16 MHz ou 3,3 V/8 MHz selon votre modèle), le processeur ATmega328P, le bon port, puis Téléverser. Le convertisseur doit être câblé DTR-DTR, RX-TX, TX-RX, VCC-VCC, GND-GND.
Variantes
Changez l'adresse (0x3F) si rien ne s'affiche, ou empilez plusieurs capteurs avec un défilement automatique des pages toutes les 5 s.
ecran-i2c-lcd.ino
// LCD 16x2 + convertisseur I2C PCF8574 : affichage de mesures.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // adresse usuelle 0x27 (0x3F sur certains)
void setup() {
Serial.begin(9600);
Wire.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Hello, monde !");
delay(1500);
lcd.clear();
}
void loop() {
// Exemple : tension d'alimentation mesuree sur la reference interne.
analogRead(A0); // rechauffe de l'ADC
long brut = analogRead(A0);
float tension = brut * 5.0 / 1023.0;
lcd.setCursor(0, 0);
lcd.print("A0:");
lcd.print(tension, 2);
lcd.print("V "); // efface les chiffres residuels
lcd.setCursor(0, 1);
lcd.print("Uptime:");
lcd.print(millis() / 1000);
lcd.print("s ");
delay(500);
}