Olá,
Possuo um esquema para controlar uma lampada atraves da Shield Ethernet e fazer o acionamento/desacionamento atraves de uma pagina php. Agora estou tentando implementar mais algumas coisas.. agora quero ligar/desligar pela web ou por um interruptor. Para isso estou usando o esquema three way mas ae no caso a pagina web não atualiza o status da lampada se caso eu acione a lampada pelo interruptor.. Uma ideia que eu tive foi usar um LDR para ficar checando se a lampada estaria ou nao ligada mas ae no caso quando eu vou enviar o status para o php.. ele acaba travando.. Caso eu aperte em algum botao ele nao responde
#include <SPI.h>
#include <Ethernet.h>
//Configurações do Ethernet Shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,0, 129 }; // ip que o arduino assumirá
byte gateway[] = { 192,168,0, 1 }; // ip do roteador
byte subnet[] = { 255, 255, 255, 0 };
// String que representa o estado dos dispositivos
EthernetServer server(80); // Cria o servidor na porta 8081
// String onde é guardada as msgs recebidas
char Luz[5] = "00L#";
char msg[5] = "00L#";
int sensor = 0;
int valorSensor = 0;
void setup() {
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.begin(9600);
Serial.println("Comunicacao");
pinMode(9,OUTPUT);
pinMode(8,OUTPUT);
}
void loop() {
EthernetClient client = server.available();
while(client.connected()){
if (client) {
msg[1]=msg[2];
msg[2]=msg[3];
msg[3]=msg[4]; //msg[4]=msg[5]; msg[5]=msg[6];
msg[4] = client.read();
Serial.println("Conectado");
Serial.print(msg[3]);
Serial.print(msg[4]);
if (msg[4]=='#') {
switch(msg[3]) {
case 'R':
// Se receber o comando 'R#' envia de volta o status dos
// dispositivos. (Que é a string 'Luz')
client.write(Luz);
break;
case 'L':
// Caso L#, ele copia os 4 bytes anteriores p/ a
// string 'Luz' e cada byte representa um
// dispositivo, onde '1'=ON e '0'=OFF
Luz[0]=msg[1];
Luz[1]=msg[2];
if (Luz[0]=='1') digitalWrite(9,HIGH); else digitalWrite(9,LOW);
if (Luz[1]=='1') digitalWrite(8,HIGH); else digitalWrite(8,LOW);
break;
}
}
}
int valorSensor = analogRead(sensor);
if(valorSensor < 750){
Serial.println("Está com pouca Luminosidade!");
Luz[0]='0';
client.write(Luz);
Serial.println(Luz);
}
else{
Serial.println("Está com alta luminosidade!");
Luz[0]='1';
client.write(Luz);
Serial.println(Luz);
}
Serial.println(valorSensor);
delay(5000);
}
}
Teria alguma maneira de que assim que eu enviar Luz para o client.. eu liberar o canal para que o arduino possa receber dados que o php esteja possivelmente enviando?
p.s: se alguem tiver alguma outra ideia para eu ficar verificando se a lampada foi acionada pelo interruptor sou grato
Tags:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por