#include <LiquidCrystal_PCF8574.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
LiquidCrystal_PCF8574 lcd(0x27);
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float tempC;
char grados = 223;
#define PIN_I0 18
#define PIN_I1 19
#define PIN_I2 23
#define I0 !digitalRead(PIN_I0)
#define I1 !digitalRead(PIN_I1)
#define I2 !digitalRead(PIN_I2)
#define Q0 15
#define Q1 2
#define Q2 5
char texto[] = "I/O digitales";
byte alto [] = {
0b0000,
0b1111,
0b1111,
0b1111,
0b1111,
0b1111,
0b1111,
0b0000
};
byte bajo [] = {
0b0000,
0b1111,
0b1001,
0b1001,
0b1001,
0b1001,
0b1111,
0b0000
};
void setup() {
pinMode(PIN_I0, INPUT_PULLUP);
pinMode(PIN_I1, INPUT_PULLUP);
pinMode(PIN_I2, INPUT_PULLUP);
pinMode(Q0, OUTPUT);
pinMode(Q1, OUTPUT);
pinMode(Q2, OUTPUT);
int error;
sensors.begin();
lcd.begin(20, 4);
lcd.createChar(0, bajo);
lcd.createChar(1, alto);
delay(200);
lcd.setBacklight(255);
lcd.setCursor(8,2);
lcd.print("Temperatura:");
}
void loop() {
estados();
sensor();
digitalWrite(Q0, I0);
digitalWrite(Q1, I1);
digitalWrite(Q2, I2);
}
void estados() {
lcd.setCursor(0,0);
lcd.print(texto);
lcd.setCursor(0,1);
lcd.print("I: ");
lcd.write(I0);
lcd.write(I1);
lcd.write(I2);
lcd.setCursor(0,2);
lcd.print(" 012");
lcd.setCursor(0,3);
lcd.print("Q: ");
lcd.write(digitalRead(Q0));
lcd.write(digitalRead(Q1));
lcd.write(digitalRead(Q2));
}
void sensor() {
sensors.requestTemperatures();
tempC=sensors.getTempCByIndex(0);
if(tempC != DEVICE_DISCONNECTED_C)
{
lcd.setCursor(12,3);
lcd.print(tempC,1);
lcd.print((char)grados);
lcd.print("C ");
}
else
{
lcd.setCursor(12,3);
lcd.print("error!");
}
}