/*
Librería LiquidCrystal: Caracteres personalizados
Algunos enlaces de interés:
http://www.arduino.cc/en/Tutorial/LiquidCrystalCustomCharacter
https://www.automatismos-mdq.com.ar/blog/2020/12/generador-de-caracteres-especiales-para-lcd.html
https://www.automatismos-mdq.com.ar/blog/tools/LCD_ccg/lcd-ccg.html
*/
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 10, d5 = 9, d6 = 8, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
//Flecha abajo
byte arrowUp[8] = {
B00100, B00100, B00100, B00100, B00100, B11111, B01110, B00100
};
// Flecha arriba
byte arrowDown[8] = {
B00100, B01110, B11111, B00100, B00100, B00100, B00100, B00100
};
// Flecha derecha
byte arrowRight[8] = {
B00000, B00100, B00110, B11111, B00110, B00100, B00000, B00000
};
// Flecha izquierda
byte arrowLeft[8] = {
B00000, B00100, B01100, B11111, B01100, B00100, B00000, B00000
};
// Humedad
byte hum[8] = {
B00100, B00100, B01010, B01010, B10001, B10001, B10001, B01110
};
// Temperatura
byte temp[8] = {
B00100, B01010, B01010, B01110, B01110, B11111, B11111, B01110
};
// Grados 1
byte degrees1[8] = {
B00111, B00101, B00111, B00000, B00000, B00000, B00000, B00000
};
// Grados 2
byte degrees2[8] = {
B00110, B01001, B01001, B00110, B00000, B00000, B00000, B00000
};
// Corazón
byte heart[8] = {
B00000, B01010, B11111, B11111, B01110, B00100, B00000, B00000
};
// [
byte bracket1[8] = {
B11000, B10000, B10000, B10000, B10000, B10000, B10000, B11000
};
// ]
byte bracket2[8] = {
B00011, B00001, B00001, B00001, B00001, B00001, B00001, B00011
};
// Candado cerrado
byte lock[8] = {
B00000, B01110, B10001, B10001, B11111, B11011, B11011, B11111
};
// Candado abierto
byte unlock[8] = {
B00000, B01110, B10000, B10000, B11111, B11011, B11011, B11111
};
// Bateria vacía
byte battEmpty[8] = {
B01110, B01010, B11011, B10001, B10001, B10001, B10001, B11111
};
// Bateria mitad
byte battHalf[8] = {
B01110, B01010, B11011, B10001, B10001, B11111, B11111, B11111
};
// Bateria llena
byte battFull[8] = {
B01110, B01110, B11111, B11111, B11111, B11111, B11111, B11111
};
void setup() {
lcd.begin(16, 2);
// crear nuevos caracteres
lcd.createChar(0, arrowUp);
lcd.createChar(1, lock);
lcd.createChar(2, unlock);
lcd.createChar(3, heart);
lcd.createChar(4, degrees1);
lcd.createChar(5, degrees2);
lcd.createChar(6, hum);
lcd.createChar(7, temp);
lcd.setCursor(0, 0);
lcd.print("Set de iconos:");
lcd.setCursor(0, 1);
lcd.write(byte(0)); // El '0' debe ser casteado como byte
lcd.write(1);
lcd.write(2);
lcd.write(3);
lcd.write(4);
lcd.write(5);
lcd.write(6);
lcd.write(7);
// Ejemplo temperatura y humedad
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.write(7);
lcd.setCursor(1, 0);
lcd.print(" 30 C");
lcd.setCursor(4, 0);
lcd.write(5);
lcd.setCursor(6, 0);
lcd.print(" 70%RH");
lcd.setCursor(8, 0);
lcd.write(6);
}
void loop() {
// ...
}