Ola. Fiz um app simples pra ligar dois leds pela rede. Com 1 led é normal, e fui adicionar outro mas nao funciona como deveria. Fiz ate um app pra android mas quando seleciono ligar led 1, liga o led 1, e ligar led 2, liga os dois leds. Creio que o erro esteja no arquivo do arduino pois acessando via web da o mesmo problema. Acho que é erro da linguagem C

o código abaixo

#include <SPI.h>
#include <String.h>
#include <Ethernet.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x9B, 0x36 }; // Endereço Mac
byte ip[] = { 192, 168, 0, 122 }; // Endereço de Ip da sua Rede
EthernetServer server(8080); // Porta de serviço

int led = 5; // Pino onde deve ser ligado o led de teste
int led2 = 9;
String readString = String(30); // string para buscar dados de endereço
boolean statusLed = false; // Variável para o status do led
boolean statusLed2 = false;

void setup(){
// Inicia o Ethernet
Ethernet.begin(mac, ip);
// Define o pino como saída
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
// Inicia a comunicação Serial
Serial.begin(9600);
}

void loop(){
// Criar uma conexão de cliente
EthernetClient client = server.available();

if (client) {
while (client.connected())
{
if (client.available())
{
char c = client.read();
// ler caractere por caractere vindo do HTTP
if (readString.length() < 30)
{
// armazena os caracteres para string
readString += (c);
}

//se o pedido HTTP terminou
if (c == '\n')
{
// vamos verificar se o LED deve ser ligado
// Se a string possui o texto L=Ligar
if(readString.indexOf("LigarLed")>=0)
{
// O Led vai ser ligado
digitalWrite(led, HIGH);
statusLed = true;
}
if(readString.indexOf("LigarLed2")>=0)
{
// O Led vai ser ligado
digitalWrite(led2, HIGH);
statusLed2 = true;
}
// Se a string possui o texto L=Desligar
if(readString.indexOf("DesligarLed")>=0)
{
// O Led vai ser desligado
digitalWrite(led, LOW);
digitalWrite(led2, LOW);

statusLed = false;
}

// dados HTML de saída começando com cabeçalho padrão
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();

client.print("<font size='20'>");
if (statusLed) {
client.print("LedLigado");
}
if (statusLed2){
client.print("Led2Ligado");
}
if (statusLed && statusLed2 == false){
client.print("LedDesligado");
}

//limpa string para a próxima leitura
readString="";

// parar cliente
client.stop();
}
}
}
}
}

Exibições: 551

Responder esta

Respostas a este tópico

Amigo,

ao escrever LigarLed2 para acender o segundo led, no código do arduino você procura por LigarLed para ligar o primeiro led, então LigarLed2 satisfaz a condição para qualquer um dos leds. Recomendo usar LigarLed1 para ligar o primeiro.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço