/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
/* Fill-in your Template ID (only if using Blynk.Cloud) */
#define BLYNK_TEMPLATE_ID "your-template_id"
#define BLYNK_TEMPLATE_NAME "your-template_name"
#define BLYNK_AUTH_TOKEN "your-auth_token"
// Include the libraries we need
#include <LiquidCrystal_PCF8574.h>
#include <DallasTemperature.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
LiquidCrystal_PCF8574 lcd(0x27); // set the LCD address to 0x27 for a 16 chars and 2 line display
// DS18B20 data wire
#define ONE_WIRE_BUS 0
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "your-ssid";
char pass[] = "your-password";
int sensor; // Variable para almacenar el valor leído por el sensor
float tempC;
BlynkTimer temporizador; // esta variable almacena el dat de ajuste de tiempo
#define PIN_I0 16
#define PIN_I1 14
#define PIN_I2 12
#define I0 digitalRead(PIN_I0)
#define I1 digitalRead(PIN_I1)
#define I2 digitalRead(PIN_I2)
#define Q0 2
#define Q1 15
#define Q2 13
byte alto[] = {0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x00};
byte bajo[] = {0x00,0x1F,0x11,0x11,0x11,0x11,0x1F,0x00};
void estados() {
if (Blynk.connected() == true)
{
lcd.setCursor(0,0);
lcd.print("Conectado a Blynk ");
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));
lcd.setCursor(12,1);
lcd.print("A0: ");
lcd.setCursor(15,1);
lcd.print(sensor);
lcd.setCursor(12,2);
lcd.print("T");
lcd.print((char)223);
lcd.print(": ");
lcd.setCursor(15,2);
if (tempC == -127)
lcd.print("Error");
else
lcd.print(tempC,1);
}
else
{
lcd.clear();
delay(1000);
lcd.print("Conectando a Blynk..");
delay(1000);
}
}
void enviodatos() {
Blynk.virtualWrite(0, sensor);
Blynk.virtualWrite(1, tempC);
Blynk.virtualWrite(2, I0);
Blynk.virtualWrite(3, I1);
Blynk.virtualWrite(4, I2);
}
BLYNK_WRITE(5){
digitalWrite(Q0, param.asInt());
}
BLYNK_WRITE(6){
digitalWrite(Q1, param.asInt());
}
BLYNK_WRITE(7){
digitalWrite(Q2, param.asInt());
}
void setup() {
// put your setup code here, to run once:
pinMode(PIN_I0, INPUT);
pinMode(PIN_I1, INPUT);
pinMode(PIN_I2, INPUT);
pinMode(Q0, OUTPUT);
pinMode(Q1, OUTPUT);
pinMode(Q2, OUTPUT);
sensors.begin();
Serial.begin(9600);
lcd.begin(20, 4); // initialize the lcd
lcd.createChar(0, bajo);
lcd.createChar(1, alto);
delay(200);
lcd.setBacklight(255);
estados();
temporizador.setInterval(1000L,enviodatos);// define intervalo de envio de datos
// Setup Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
while (Blynk.connected() == false) {}
}
void loop() {
// put your main code here, to run repeatedly:
Blynk.run();
temporizador.run();
sensor = analogRead(A0);
sensors.requestTemperatures(); // Send the command to get temperatures
tempC = sensors.getTempCByIndex(0);
estados();
}