ecran-i2c-lcd.ino
Una pantalla LCD 16x2 con convertidor I2C PCF8574 solo ocupa dos pines (SDA/SCL). El sketch muestra la tensión medida en A0 y el tiempo de funcionamiento, actualizado dos veces por segundo.
Hardware
Un Arduino Pro Mini (ATmega328P, existe en 5 V/16 MHz y 3,3 V/8 MHz) conectado a un convertidor USB-serie (FTDI) o un programador ICSP. 1 LCD 16x2 con backpack I2C PCF8574 (dirección 0x27 o 0x3F).
Cableado
SDA a A4, SCL a A5 (pines I2C de las placas AVR), VCC 5V, GND. La dirección I2C se comprueba con un escáner (p. ej. i2c_scanner).
Funcionamiento
Wire gestiona el bus I2C; LiquidCrystal_I2C traduce print() a órdenes LCD. setCursor coloca el cursor y los espacios finales borran restos.
Ejecución
Elige « Arduino Pro Mini » en el IDE (5 V/16 MHz o 3,3 V/8 MHz según tu modelo), el procesador ATmega328P, el puerto correcto y Subir. El convertidor debe estar cableado DTR-DTR, RX-TX, TX-RX, VCC-VCC, GND-GND.
Variantes
Cambia la dirección (0x3F) si no se ve nada, o apila varios sensores con desplazamiento automático de páginas cada 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);
}