#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//https://www.automatismos-mdq.com.ar/blog/tools/LCD_ccg/lcd-ccg.html
LiquidCrystal_I2C lcd(0x27, 16, 2);//crear un objeto lcd (DIRECCIÓN pantalla, Tamaño x, Tamño y)
const int analog_pin=13;
int valor_pot=0;
const int ledRojo = 17;
const int ledAmarillo = 18;
const int ledVerde = 19;
byte ampere[] = {
B00000,
B10000,
B11000,
B10100,
B10110,
B11001,
B10000,
B10000
};
byte mili[] = {
B00000,
B00000,
B00000,
B10000,
B11111,
B10101,
B10101,
B10101
};
byte temp[] = {
B01100,
B10010,
B10010,
B01100,
B11110,
B00000,
B00000,
B00000
};
byte grados[] = {
B00110,
B01001,
B01001,
B00110,
B00000,
B00000,
B00000,
B00000
};
byte gato[] = {
B00000,
B01010,
B01010,
B11111,
B01010,
B11111,
B01010,
B01010
};
void setup() {
lcd.clear();
lcd.init();//inicializar la pantalla lcd
lcd.begin(16,2);
lcd.backlight();//Encender la luz de fondo
lcd.createChar(0, grados);
lcd.createChar(1, gato);
lcd.createChar(2, temp);
lcd.createChar(3, mili);
lcd.createChar(4, ampere);
pinMode(ledRojo, OUTPUT);
pinMode(ledAmarillo, OUTPUT);
pinMode(ledVerde, OUTPUT);
lcd.setCursor (0, 0);//poner el cursor en las coordenadas (x,y)
lcd.print("EVALUACION ");//muestra en la pantalla max 16 caracteres
lcd.write((uint8_t)1);
lcd.print("3");
lcd.setCursor (0, 1);//poner el cursor en las coordenadas (x,y)
lcd.print("CONTROL T");//muestra en la pantalla max 16 caracteres
lcd.write((uint8_t)2);
delay(3000);
lcd.clear();
}
void loop() {
lcd.clear();
valor_pot=analogRead(analog_pin);
lcd.setCursor (0, 0);//poner el cursor en las coordenadas (x,y)
lcd.print("TEMP:");
float lectura_temp=temperatura();
lcd.print(lectura_temp);
lcd.write((uint8_t)0);
lcd.print("C");
lcd.setCursor (0, 1);
lcd.print("Curr: ");
float lectura_curr=corriente();
lcd.print(lectura_curr);
lcd.write((uint8_t)3);
lcd.write((uint8_t)4);
if(lectura_temp<10){
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledRojo, HIGH);
}else if (lectura_temp>10&&lectura_temp<50){
digitalWrite(ledVerde, LOW);
digitalWrite(ledRojo, LOW);
digitalWrite(ledAmarillo, HIGH);
}else{
digitalWrite(ledRojo, LOW);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledVerde, HIGH);
}
delay(500);//Esperamos 500 mili segundo antes de repetir el loop
}
float temperatura(){
//Temperatura de 10 a 150 ºC
//0.039072 · X - 10
float valor=0.039072 * valor_pot - 10;
return valor;
}
float corriente(){
//corriente de 4 a 20
//0.0039072 · X +4
float valor_curr=0.0039072 * valor_pot +4;
return valor_curr;
}