Con una pantalla puedes:
- Mostrar datos en tiempo real (temperatura, humedad, estado, alarmas…)
- Crear interfaces de usuario (menús, opciones)
- Hacer proyectos independientes del PC
- Visualizar errores o eventos del sistema
- Pantalla LCD 16x2
- Potenciómetro (10kΩ) para ajustar contraste
- Conexión paralela (o por I2C para ahorrar pines)
- Librería:
LiquidCrystal.h (ya incluida en el IDE de Arduino)
| LCD Pin | Arduino |
|---|
| VSS | GND |
| VDD | 5V |
| VO | Potenciómetro (centro) |
| RS | 12 |
| RW | GND |
| E | 11 |
| D4 | 5 |
| D5 | 4 |
| D6 | 3 |
| D7 | 2 |
| A (LED+) | 5V |
| K (LED-) | GND |
1#include <LiquidCrystal.h>
2
3// RS, E, D4, D5, D6, D7
4LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
5
6void setup() {
7 lcd.begin(16, 2); // LCD de 16 columnas y 2 filas
8 lcd.print("Hola, mundo!");
9}
10
11void loop() {
12 // nada por ahora
13}
1lcd.setCursor(0, 1); // columna 0, fila 1 (segunda línea)
2lcd.print("Temp: 23.5 C");
1#include <LiquidCrystal.h>
2
3const int sensor = A0;
4LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
5
6void setup() {
7 lcd.begin(16, 2);
8}
9
10void loop() {
11 int lectura = analogRead(sensor);
12 float voltaje = lectura * (5.0 / 1023.0);
13 float tempC = voltaje * 100.0;
14
15 lcd.clear();
16 lcd.setCursor(0, 0);
17 lcd.print("Temperatura:");
18
19 lcd.setCursor(0, 1);
20 lcd.print(tempC);
21 lcd.print(" C");
22
23 delay(1000);
24}
1int opcion = 0;
2
3void loop() {
4 lcd.clear();
5 lcd.setCursor(0, 0);
6 if (opcion == 0) lcd.print("> Estado LED");
7 else lcd.print(" Estado LED");
8
9 lcd.setCursor(0, 1);
10 if (opcion == 1) lcd.print("> Temp actual");
11 else lcd.print(" Temp actual");
12
13 // cambiar opción con botones (simulado aquí)
14 opcion = (opcion + 1) % 2;
15 delay(1000);
16}
- Pantalla OLED 0.96" (SSD1306)
- 4 pines: VCC, GND, SDA, SCL
- Librerías necesarias:
Adafruit_SSD1306
Adafruit_GFX
📌 Instálalas desde el Administrador de bibliotecas en Arduino IDE.
| Pantalla | Arduino UNO |
|---|
| VCC | 5V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
1#include <Wire.h>
2#include <Adafruit_GFX.h>
3#include <Adafruit_SSD1306.h>
4
5#define ANCHO 128
6#define ALTO 64
7
8Adafruit_SSD1306 oled(ANCHO, ALTO, &Wire, -1); // sin pin RESET
9
10void setup() {
11 oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); // dirección I2C común
12 oled.clearDisplay();
13
14 oled.setTextSize(1);
15 oled.setTextColor(SSD1306_WHITE);
16 oled.setCursor(0, 0);
17 oled.println("Sensor listo...");
18 oled.display();
19}
20
21void loop() {}
1#include <DHT.h>
2#include <Adafruit_SSD1306.h>
3#include <Adafruit_GFX.h>
4
5#define DHTPIN 2
6#define DHTTYPE DHT11
7
8DHT dht(DHTPIN, DHTTYPE);
9Adafruit_SSD1306 oled(128, 64, &Wire, -1);
10
11void setup() {
12 oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
13 dht.begin();
14}
15
16void loop() {
17 float h = dht.readHumidity();
18 float t = dht.readTemperature();
19
20 oled.clearDisplay();
21 oled.setTextSize(1);
22 oled.setTextColor(SSD1306_WHITE);
23 oled.setCursor(0, 0);
24 oled.print("Temp: ");
25 oled.print(t);
26 oled.println(" C");
27
28 oled.print("Humedad: ");
29 oled.print(h);
30 oled.println(" %");
31 oled.display();
32 delay(2000);
33}
- Usa
oled.setCursor(x, y) para posicionar
- Puedes dibujar íconos con
oled.drawBitmap()
- Botones físicos cambian las opciones del menú
| Característica | LCD 16x2 | OLED 128x64 |
|---|
| Interfaz | Paralelo o I2C | I2C (fácil) |
| Píxeles | 16x2 caracteres | 128x64 pixeles |
| Gráficos | ❌ No | ✅ Sí (texto + íconos) |
| Brillo | Medio | Alto (blanco puro) |
| Costo | Bajo | Medio-bajo |
| Consumo | Bajo | Muy bajo |