/* 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();

}