Código: Selecionar todos
#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>
#define W5100_CS 10
#define SDCARD_CS 4
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "3333333333333333333333333333333";
const int ledPin = 23;
const int btnPin = 22;
const int ledPin1 = 25;
const int btnPin1 = 24;
const int ledPin2 = 27;
const int btnPin2 = 26;
const int ledPin3 = 29;
const int btnPin3 = 28;
const int ledPin4 = 31;
const int btnPin4 = 30;
const int ledPin5 = 33;
const int btnPin5 = 32;
const int ledPin6 = 35;
const int btnPin6 = 34;
const int ledPin7 = 37;
const int btnPin7 = 36;
const int ledPin8 = 39;
const int btnPin8 = 38;
const int ledPin9 = 41;
const int btnPin9 = 40;
const int ledPin10 = 43;
const int btnPin10 = 42;
const int ledPin11 = 45;
const int btnPin11 = 44;
const int ledPin12 = 47;
const int btnPin12 = 46;
int ledState = LOW;
int btnState = HIGH;
int ledState1 = LOW;
int btnState1 = HIGH;
int ledState2 = LOW;
int btnState2 = HIGH;
int ledState3 = LOW;
int btnState3 = HIGH;
int ledState4 = LOW;
int btnState4 = HIGH;
int ledState5 = LOW;
int btnState5 = HIGH;
int ledState6 = LOW;
int btnState6 = HIGH;
int ledState7 = LOW;
int btnState7 = HIGH;
int ledState8 = LOW;
int btnState8 = HIGH;
int ledState9 = LOW;
int btnState9 = HIGH;
int ledState10 = LOW;
int btnState10 = HIGH;
int ledState11 = LOW;
int btnState11 = HIGH;
int ledState12 = LOW;
int btnState12 = HIGH;
BLYNK_CONNECTED() {
Blynk.syncVirtual(V7);
Blynk.syncVirtual(V8);
Blynk.syncVirtual(V9);
Blynk.syncVirtual(V10);
Blynk.syncVirtual(V11);
Blynk.syncVirtual(V12);
Blynk.syncVirtual(V13);
Blynk.syncVirtual(V14);
Blynk.syncVirtual(V15);
Blynk.syncVirtual(V16);
Blynk.syncVirtual(V17);
Blynk.syncVirtual(V18);
Blynk.syncVirtual(V19);
}
BLYNK_WRITE(V7) {
ledState = param.asInt();
digitalWrite(ledPin, ledState);
}
BLYNK_WRITE(V8) {
ledState1 = param.asInt();
digitalWrite(ledPin1, ledState1);
}
BLYNK_WRITE(V9) {
ledState2 = param.asInt();
digitalWrite(ledPin2, ledState2);
}
BLYNK_WRITE(V10) {
ledState3 = param.asInt();
digitalWrite(ledPin3, ledState3);
}
BLYNK_WRITE(V11) {
ledState4 = param.asInt();
digitalWrite(ledPin4, ledState4);
}
BLYNK_WRITE(V12) {
ledState5 = param.asInt();
digitalWrite(ledPin5, ledState5);
}
BLYNK_WRITE(V13) {
ledState6 = param.asInt();
digitalWrite(ledPin6, ledState6);
}
BLYNK_WRITE(V14) {
ledState7 = param.asInt();
digitalWrite(ledPin7, ledState7);
}
BLYNK_WRITE(V15) {
ledState8 = param.asInt();
digitalWrite(ledPin8, ledState8);
}
BLYNK_WRITE(V16) {
ledState9 = param.asInt();
digitalWrite(ledPin9, ledState9);
}
BLYNK_WRITE(V17) {
ledState10 = param.asInt();
digitalWrite(ledPin10, ledState10);
}
BLYNK_WRITE(V18) {
ledState11 = param.asInt();
digitalWrite(ledPin11, ledState11);
}
BLYNK_WRITE(V19) {
ledState12 = param.asInt();
digitalWrite(ledPin12, ledState12);
}
BlynkTimer timer;
void checkPhysicalButton()
{
if (digitalRead(btnPin) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState != LOW) {
// Toggle LED state
ledState = !ledState;
digitalWrite(ledPin, ledState);
// Update Button Widget
Blynk.virtualWrite(V7, ledState);
}
btnState = LOW;
} else {
btnState = HIGH;
}
if (digitalRead(btnPin1) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState1 != LOW) {
// Toggle LED state
ledState1 = !ledState1;
digitalWrite(ledPin1, ledState1);
// Update Button Widget
Blynk.virtualWrite(V8, ledState1);
}
btnState1 = LOW;
} else {
btnState1 = HIGH;
}
if (digitalRead(btnPin2) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState2 != LOW) {
// Toggle LED state
ledState2 = !ledState2;
digitalWrite(ledPin2, ledState2);
// Update Button Widget
Blynk.virtualWrite(V9, ledState2);
}
btnState2 = LOW;
} else {
btnState2 = HIGH;
}
if (digitalRead(btnPin3) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState3 != LOW) {
// Toggle LED state
ledState3 = !ledState3;
digitalWrite(ledPin3, ledState3);
// Update Button Widget
Blynk.virtualWrite(V10, ledState3);
}
btnState3 = LOW;
} else {
btnState3 = HIGH;
}
if (digitalRead(btnPin4) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState4 != LOW) {
// Toggle LED state
ledState4 = !ledState4;
digitalWrite(ledPin4, ledState4);
// Update Button Widget
Blynk.virtualWrite(V11, ledState4);
}
btnState4 = LOW;
} else {
btnState4 = HIGH;
}
if (digitalRead(btnPin5) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState5 != LOW) {
// Toggle LED state
ledState5 = !ledState5;
digitalWrite(ledPin5, ledState5);
// Update Button Widget
Blynk.virtualWrite(V12, ledState5);
}
btnState5 = LOW;
} else {
btnState5 = HIGH;
}
if (digitalRead(btnPin6) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState6 != LOW) {
// Toggle LED state
ledState6 = !ledState6;
digitalWrite(ledPin6, ledState6);
// Update Button Widget
Blynk.virtualWrite(V13, ledState6);
}
btnState6 = LOW;
} else {
btnState6 = HIGH;
}
if (digitalRead(btnPin7) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState7 != LOW) {
// Toggle LED state
ledState7 = !ledState7;
digitalWrite(ledPin7, ledState7);
// Update Button Widget
Blynk.virtualWrite(V14, ledState7);
}
btnState7 = LOW;
} else {
btnState7 = HIGH;
}
if (digitalRead(btnPin8) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState8 != LOW) {
// Toggle LED state
ledState8 = !ledState8;
digitalWrite(ledPin8, ledState8);
// Update Button Widget
Blynk.virtualWrite(V15, ledState8);
}
btnState8 = LOW;
} else {
btnState8 = HIGH;
}
if (digitalRead(btnPin9) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState9 != LOW) {
// Toggle LED state
ledState9 = !ledState9;
digitalWrite(ledPin9, ledState9);
// Update Button Widget
Blynk.virtualWrite(V16, ledState9);
}
btnState9 = LOW;
} else {
btnState9 = HIGH;
}
if (digitalRead(btnPin10) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState10 != LOW) {
// Toggle LED state
ledState10 = !ledState10;
digitalWrite(ledPin10, ledState10);
// Update Button Widget
Blynk.virtualWrite(V17, ledState10);
}
btnState10 = LOW;
} else {
btnState10 = HIGH;
}
if (digitalRead(btnPin11) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState11 != LOW) {
// Toggle LED state
ledState11 = !ledState11;
digitalWrite(ledPin11, ledState11);
// Update Button Widget
Blynk.virtualWrite(V18, ledState11);
}
btnState11 = LOW;
} else {
btnState11 = HIGH;
}
if (digitalRead(btnPin12) == LOW) {
// btnState is used to avoid sequential toggles
if (btnState12 != LOW) {
// Toggle LED state
ledState12 = !ledState12;
digitalWrite(ledPin12, ledState12);
// Update Button Widget
Blynk.virtualWrite(V19, ledState12);
}
btnState12 = LOW;
} else {
btnState12 = HIGH;
}
}
BlynkTimer timerDHT11; // Criação do Timer do DHT22
BlynkTimer timerLDR; // Criação do Timer do LDR
void lerSensorDHT11() // Função para ler os parâmetros do DHT22
{
float temperatura = dht.readTemperature(); // Comando da biblioteca que lê a temperatura adquirida pelo DHT22
float umidade = dht.readHumidity(); // Comando da biblioteca que lê a umidade adquirida pelo DHT22
if (isnan(temperatura) || isnan(umidade)) { // isnan = IS Not A Number <= verifica se o valor lido não é um número
return;
}
Blynk.virtualWrite(V4, temperatura); // Escreve no pino virtual V4 do Blynk o valor da temperatura lido pelo DHT22
Blynk.virtualWrite(V5, umidade); // Escreve no pino virtual V5 do Blynk o valor de umidade lido pelo DHT22
}
void lerLDR() { // Função para ler o parâmetro do LDR
int valorLDR = analogRead(A0);
valorLDR = map(valorLDR, 0, 1023, 0, 100); // Função que mapeia os valores lidos de 0 à 1023 em 0 à 100
Blynk.virtualWrite(V6, valorLDR); // Escreve no pino virtual V6 do Blynk o valor de luminosidade lido pelo LDR
}
BLYNK_WRITE(V0) {
int pinValue = param.asInt();
//Serial.println(pinValue);
if (pinValue == 1) {
relays.SetRelay(1, SERIAL_RELAY_ON, 1); // Liga o relé 01
} else {
relays.SetRelay(1, SERIAL_RELAY_OFF, 1); // Desliga o relé 01
}
}
BLYNK_WRITE(V1) {
int pinValue = param.asInt();
//Serial.println(pinValue);
if (pinValue == 1) {
relays.SetRelay(2, SERIAL_RELAY_ON, 1); // Liga o relé 02
} else {
relays.SetRelay(2, SERIAL_RELAY_OFF, 1); // Desliga o relé 02
}
}
BLYNK_WRITE(V2) {
int pinValue = param.asInt();
//Serial.println(pinValue);
if (pinValue == 1) {
relays.SetRelay(3, SERIAL_RELAY_ON, 1); // Liga o relé 03
} else {
relays.SetRelay(3, SERIAL_RELAY_OFF, 1); // Desliga o relé 03
}
}
BLYNK_WRITE(V3) {
int pinValue = param.asInt();
//Serial.println(pinValue);
if (pinValue == 1) {
relays.SetRelay(4, SERIAL_RELAY_ON, 1); // Liga o relé 04
} else {
relays.SetRelay(4, SERIAL_RELAY_OFF, 1); // Desliga o relé 04
}
}
void setup()
{
Serial.begin(9600);
dht.begin(); // Inicializa o DHT22
Blynk.begin(auth);
timerDHT11.setInterval(2000L, lerSensorDHT11); // Define o intervalo de tempo da leitura do DHT22 para 2000 milisegundos
timerLDR.setInterval(100L, lerLDR); // Define o intervalo de tempo da leitura do LDR para 100 milisegundos
// Debug console
Serial.begin(9600);
pinMode(SDCARD_CS, OUTPUT);
digitalWrite(SDCARD_CS, HIGH);
Blynk.begin(auth);
pinMode(ledPin, OUTPUT);
pinMode(btnPin, INPUT_PULLUP);
digitalWrite(ledPin, ledState);
pinMode(ledPin1, OUTPUT);
pinMode(btnPin1, INPUT_PULLUP);
digitalWrite(ledPin1, ledState1);
pinMode(ledPin2, OUTPUT);
pinMode(btnPin2, INPUT_PULLUP);
digitalWrite(ledPin2, ledState2);
pinMode(ledPin3, OUTPUT);
pinMode(btnPin3, INPUT_PULLUP);
digitalWrite(ledPin3, ledState3);
pinMode(ledPin4, OUTPUT);
pinMode(btnPin4, INPUT_PULLUP);
digitalWrite(ledPin4, ledState4);
pinMode(ledPin5, OUTPUT);
pinMode(btnPin5, INPUT_PULLUP);
digitalWrite(ledPin5, ledState5);
pinMode(ledPin6, OUTPUT);
pinMode(btnPin6, INPUT_PULLUP);
digitalWrite(ledPin6, ledState6);
pinMode(ledPin7, OUTPUT);
pinMode(btnPin7, INPUT_PULLUP);
digitalWrite(ledPin7, ledState7);
pinMode(ledPin8, OUTPUT);
pinMode(btnPin8, INPUT_PULLUP);
digitalWrite(ledPin8, ledState8);
pinMode(ledPin9, OUTPUT);
pinMode(btnPin9, INPUT_PULLUP);
digitalWrite(ledPin9, ledState9);
pinMode(ledPin10, OUTPUT);
pinMode(btnPin10, INPUT_PULLUP);
digitalWrite(ledPin10, ledState10);
pinMode(ledPin11, OUTPUT);
pinMode(btnPin11, INPUT_PULLUP);
digitalWrite(ledPin11, ledState11);
pinMode(ledPin12, OUTPUT);
pinMode(btnPin12, INPUT_PULLUP);
digitalWrite(ledPin12, ledState12);
timer.setInterval(300L, checkPhysicalButton);
}
void loop()
{
Blynk.run();
timerDHT11.run(); // Inicializa o Timer do DHT22
timerLDR.run(); // Inicializa o Timer do LDR
timer.run(); // Inicializa o Timer da Iluminação
}