rogerioftbr

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);
}

// ********************************************

}