Olá pessoal, estou com uma dúvida num pequeno projeto. A partir de um webserver eu consigo controlar alguns leds, porém além disso eu gostaria de opera-los também com o auxilio de um botão físico (swich) como posso fazer isso em meu código? Tentei encaixar de diversas maneiras, até segui alguns tutoriais mas não obtive sucesso, alguém poderia me ajudar? Porque não sei como fazer isso certo. Desde já agradeço. Meu código é o seguinte:
//Inclusão de bibliotecas
#include <SPI.h>
#include <String.h>
#include <Ethernet.h>//Criação de Arrays para MAC e IP
byte mac = { 0x90, 0xA2, 0xDA, 0x00, 0x98, 0x36 };
byte ip = { 192, 168, 1, 4 };//Define Porta
EthernetServer server(8090);//Define pinos que utilizados
int led1 = 5;
int led2 = 6;
int led3 = 7;//Define botão e variáveis de estado
int leitura = 0;
int botao = 8;
int estado = 1;//String que armazena estações da página web
String readString = String(30);//Variável de status do led do tipo string
String statusLed;
// Setup
void setup() {
//Inicializa interface web
Ethernet.begin(mac, ip);//Definindo pinos utilizados
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);pinMode(botao, INPUT);
}
void loop() {
//Criando conexão com cliente
EthernetClient client = server.available();//Verifica se tem cliente conectado
if(client){
//Enquando estiver conectado
while(client.connected()){if(client.available()){
// Váriável para checar conexão
char c = client.read();if(readString.length() < 30 ){
readString += (c);
}if(c == “\n”){
if(readString.indexOf(“led1”) >= 0){
digitalWrite(led1, !digitalRead(led1));
}
if(readString.indexOf(“led2”) >= 0){
digitalWrite(led2, !digitalRead(led2));
}
if(readString.indexOf(“led3”) >= 0){
digitalWrite(led3, !digitalRead(led3));
}// Parte do botao
/* /
leitura = digitalRead(botao);
if (leitura != 0){
while(digitalRead(botao) != 0){
delay(100);
}
//Inverte o estado da porta
estado = !estado;
//Comandos para led1
digitalWrite(led1, estado);
}/ *///Cabeçalho HTTP padrão
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println();//Código em html para página web:
//Cabeça
client.println("<!doctype html>");
client.println("");
client.println("");
client.println(“Teste”);
client.println("<meta name=“viewport” content=“width=320”>");
client.println("<meta name=“viewport” content=“width=device-width”>");
client.println("<meta charset=“utf-8”>");
client.println("<meta name=“viewport” content=“initial-scale=1.0, user-scalable=no”>");
client.println("");//Corpo
client.println("");
client.println("");// Condição para mudar o status do pino
if(digitalRead(led1)){
statusLed = “Ligado”;
}else{
statusLed = “Desligado”;
}
client.println("<form action=“led1” method=“get”>");
client.println("<button type=submit style=“width:200px;”>Led 1 - “+statusLed+”");
client.println("
");if(digitalRead(led2)){
statusLed = “Ligado”;
}else{
statusLed = “Desligado”;
}
client.println("<form action=“led2” method=“get”>");
client.println("<button type=submit style=“width:200px;”>Led 2 - “+statusLed+”");
client.println("
");if(digitalRead(led3)){
statusLed = “Ligado”;
}else{
statusLed = “Desligado”;
}
client.println("<form action=“led3” method=“get”>");
client.println("<button type=submit style=“width:200px;”>Led 3 - “+statusLed+”");
client.println("
");client.println("");
client.println("");
client.println("");readString = “”;
client.stop();
}
}
}
}}