Descargas, guías, trucos, gameplays...

miércoles, 10 de mayo de 2017

Arduino - Dos termómetros MLX90614 con LCD 20x4 YwRobot





En una entrada hace un par de días Leer multiples MLX90614 (termómetros infrarrojos) cambiando sus direcciones vimos como enviar las lecturas de dos MLX90614 hacia el Monitor serie del Arduino IDE. Sin embargo en muchas ocasiones será preferible enviar los datos a una LCD que este instalada en el lugar de uso. Para este ejemplo usamos dos MLX90614 y una LCD 20x4 YwRobot Arduino LCM1602 IIC V1.

Primero cambiaremos las direcciones de los dos termómetros infrarrojos MLX90614. Para ello seguir emos los pasos correspondientes descritos en esta entrada Leer multiples MLX90614 (termómetros infrarrojos) cambiando sus direcciones, al igual que en esa entrada usaremos las direcciones 0x50 y 0x55.

Para este ejemplo cambiaremos la librería que lee los MLX90614 ya que la otra tiene conflictos con la librería de la LCD.

Una vez cambiadas las direcciones el código es bastante sencillo, queda como sigue:

#include <Wire.h>
#include <SparkFunMLX90614.h>
#include <LiquidCrystal_I2C.h>

IRTherm termometro1;   //Termómetro 1
IRTherm termometro2;   //Termómetro 2
LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);   //LCD 20x4

void setup() 
{
  Serial.begin(9600);
  termometro1.begin(0x50);   //Inicia el termómetro con dirección 0x50
  termometro2.begin(0x55);   //Inicia el termómetro con dirección 0x55
  termometro1.setUnit(TEMP_C);   //Celcius como unidad del termómetro 1
  termometro2.setUnit(TEMP_C);   //Celcius como unidad del termómetro 2
  lcd.begin(20,4);   //Inicia la LCD
}

void loop() 
{
  if (termometro1.read())
  {
    lcd.setCursor(2, 1);
    lcd.print("Termo1");
    lcd.setCursor(3, 2);
    lcd.print(String(termometro1.object(), 0));   //Imprime el valor del termómetro 1
    lcd.print((char)223);   //para escribir el caracter º
    lcd.print("C");
  }

  if (termometro2.read())
  {
    lcd.setCursor(12, 1);
    lcd.print("Termo2");
    lcd.setCursor(13, 2);
    lcd.print(String(termometro2.object(), 0));   //Imprime el valor del termómetro 2
    lcd.print((char)223);
    lcd.print("C");
  }

  delay(1000);   //Espera 1 segundo para las proximas lecturas
}


La conexión de los componentes necesarios queda así:

Nota. No he realizado el cálculo de consumo de corriente, simplemente he decidido colocar una batería como alimentación externa para los termómetros, sí será necesario si se conectan varios termómetros más.

Nota. Recuerden que el uso de este LCD Shield facilita enormemente la conexión ya que todo se reduce a solamente 4 pines (SDA,SCL,VCC y GND).




El resultado:




Librerías extra usadas:

Si quieres mostrar caracteres especiales como acentos, eñes o propios de tu industria o aplicación ve esta estrada para saber como crearlos: YwRobot Arduino LCM1602 IIC V1 - Mostrar ñ, acentos y otros






No hay comentarios:

Publicar un comentario