Llega el momento de hablar del elemento que nos permitirá ver la temperatura, podríamos haber usado la consola pero la idea es independizarse del PC, y dentro de los diferentes interfaz de visualización:segmentos de led, barras de leds, LCDs, pantallas tactiles. Usaremos un LCD 20×4 con conexión I2C.
La conexión del LCD podría realizarse directamente al Bus de 16 hilos o añadiendo un interfaz LCD-I2c (PCF8574) que nos permite una comunicación de 2 Hilos (ademas de la masa y lo 5V) y ademas en este BUS podríamos tener varios dispositivos hablando con esos dos Hilos, por eso sera el método que utilizaremos.
Se puede ver más información de los displays en el cuaderno técnico «comunicación exterior»
La conexión es muy sencilla, la alimentación a masa y +5V y el BUS (SDA y SCL) a las correspondientes patilla del arduino que en el UNO (es el que estamos utilizando) son A4 para SDA (Serial Data) y SCL (Reloj) en el A5 .
OJO se trata de los pines Analogicos, por eso anteponemos la A
La programación es muy sencilla, lo primero que hacemos es crear el objeto e inicializar el display, indicando que se active la retroiluminación.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // Poner la dirección localizada con el scaner I2C
lcd.backlight(); //Activar la retroiluminación.
lcd.init(); // Iniciar el LCD para trabajar
Es interesante conocer la dirección del display, dispositivo I2C, que normalmente es 0x3F o como es nuestro caso 0x27, pero también podemos localizarla con el programa Scanner-I2C que nos dara la dirección de todos los dispositivos I2C que se encuentren el el BUS.
Teniendo en cuenta que el cursos se inicia en 0,0 y se posicionando según escribamos en la siguiente posición o en la posición que le indiquemos. Las funciones básicas y que más utilizaremos son:
- clear(): Para limpiar la pantalla.
- print(TEXTO): imprime el texto y reposiciona cursos.
- setCursos(columna, fila): Posiciona el cursor.
Si se desea obtener todo el potencial del DISPLAY, se puede acceder a las especificaciones, nuestro caso HD44780, y programarlo directamente con sus comandos pero el uso de librerías sino queremos alguna opción que no tenga la librería nos facilita mucho las cosas.
Ejemplo
El ejemplo, esquema descrito arriba, es muy sencillo sondea el valor del potenciometro y lo escribe en la pantalla.
#include <Wire.h>
//#include <LiquidCrystal_PCF8574.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // Poner la dirección localizada con el scaner I2C
void setup()
{
lcd.backlight(); // Ponemos luz trasera
lcd.init();
}
void loop()
{
lcd.clear();
lcd.print(" www.pinguytaz.net");
lcd.setCursor(0, 2); // Ponemos el cursos en la linea 1
lcd.print("Display: ");
lcd.setCursor(9, 2);
lcd.print((millis()/1000)); // Segundos desde el reset.
lcd.print(" seg.");
lcd.setCursor(0, 3);
lcd.print("Potenciometro: ");
lcd.print(analogRead(A0));
delay(1500);
}