Bom dia a todos
Estou tentando fazer uma automação residencial, para ligar e desligar lâmpadas. Estou utilizando um arduino mega e um módulo Ethernet Shield W5100. A parte de cotrole pela internet funciona perfeitamente, mas o acionamento por botão não funciona, pois além de controlar pelo aplicativo blink também quero a possibilidade de acionamento por botões. Alguem pode me ajudar o exemplo segue abaixo:
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "wGDhYnqWKXy0H-gv94osTxAXYPNmSZKy";
#define W5100_CS 10
#define SDCARD_CS 4
// **************************BOTOES
const int buttonPin = A0; // número do pino pushbutton
const int ledPin = 52; // número do pino LED
int estado = 0; // variável para leitura do pushbutton
int guarda_estado = LOW; // variável para armazenar valores do pushbutton
// ********************************************
void setup()
{
// Debug console
Serial.begin(9600);
pinMode(SDCARD_CS, OUTPUT);
digitalWrite(SDCARD_CS, HIGH); // Deselect the SD card
Blynk.begin(auth);
// You can also specify server:
//Blynk.begin(auth, "blynk-cloud.com", 80);
//Blynk.begin(auth, IPAddress(192,168,1,100), 8080);
// For more options, see Boards_Ethernet/Arduino_Ethernet_Manual example
// **************************BOTOES
// define o pino do Led como saída do Arduino
pinMode(ledPin, OUTPUT);
// define pino do pushbutton como entrada do Arduino:
pinMode(buttonPin, INPUT);
// ********************************************
}
void loop()
{
Blynk.run();
// **************************BOTOES
// le o estado pushbutton: ligado (HIGH) ou desligado (LOW)
estado = digitalRead(buttonPin);
// verifica se o botão (pushbutton) está pressionado
if (estado == HIGH) {
// inverte valor da variável variable_buttonEstado
guarda_estado = !guarda_estado;
//esperera o tempo de 500ms para evitar que haja várias vezes alterações
delay(500);
}
if (guarda_estado == HIGH) {
// liga o led
digitalWrite(ledPin, HIGH);
}
else {
// desliga o led
digitalWrite(ledPin, LOW);
}
// ********************************************
}