Buongiorno a tutti
Ho recentemente comprato una Ethernet Shield w5100 per il mio arduino Uno
Prendendo spunto da qualche topic nel forum sono riuscito a scrivere un codice che dovrebbe accendere dei led da una pagina internet
Il codice funziona perfettamente dal pin 2 al pin 9 e nei restanti 4 no
i led sui pin 10 11 e 13 restano sempre accesi e il 12 sempre spento
nella pagina web di comando dei pin invece vengono indicati sempre accesi i pin 10 11 e 12 mentre il 13 viene indicato come spento e solo su questi 4 pin non funziona il comando accendi/spegni
Non me ne intendo ancora molto di programmazione e non riesco a capire dove sbaglio
Il codice è il seguente
#include <SPI.h>
#include <String.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 180 };
byte gateway[] = { 192, 168, 1, 254 };
byte subnet[] = { 255, 255, 255, 0 };
EthernetServer server(80);
String readString;
//Pin
byte outA = 2;
byte outB = 3;
byte outC = 4;
byte outD = 5;
byte outE = 6;
byte outF = 7;
byte outG = 8;
byte outH = 9;
byte outI = 10;
byte outL = 11;
byte outM = 12;
byte outN = 13;
//Setup
void setup()
{
Ethernet.begin(mac, ip, gateway, subnet);
pinMode(outA, OUTPUT); //Luce Pin 2
pinMode(outB, OUTPUT); //Luce Pin 3
pinMode(outC, OUTPUT); //Luce Pin 4
pinMode(outD, OUTPUT); //Luce Pin 5
pinMode(outE, OUTPUT); //Luce Pin 6
pinMode(outF, OUTPUT); //Luce Pin 7
pinMode(outG, OUTPUT); //Luce Pin 8
pinMode(outH, OUTPUT); //Luce Pin 9
pinMode(outI, OUTPUT); //Luce Pin 10
pinMode(outL, OUTPUT); //Luce Pin 11
pinMode(outM, OUTPUT); //Luce Pin 12
pinMode(outN, OUTPUT); //Luce Pin 13
Serial.begin(9600); //Porta Seriale
}
//Loop
void loop()
{
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
readString.concat(c);
if (c == '\n' && currentLineIsBlank) {
//Serial.print(readString);
if(readString.indexOf("onA") > 0) digitalWrite (outA, HIGH); //Luce Pin 2
if(readString.indexOf("offA") > 0) digitalWrite (outA, LOW );
if(readString.indexOf("onB") > 0) digitalWrite (outB, HIGH); //Luce Pin 3
if(readString.indexOf("offB") > 0) digitalWrite (outB, LOW );
if(readString.indexOf("onC") > 0) digitalWrite (outC, HIGH); //Luce Pin 4
if(readString.indexOf("offC") > 0) digitalWrite (outC, LOW );
if(readString.indexOf("onD") > 0) digitalWrite (outD, HIGH); //Luce Pin 5
if(readString.indexOf("offD") > 0) digitalWrite (outD, LOW );
if(readString.indexOf("onE") > 0) digitalWrite (outE, HIGH); //Luce Pin 6
if(readString.indexOf("offE") > 0) digitalWrite (outE, LOW );
if(readString.indexOf("onF") > 0) digitalWrite (outF, HIGH); //Luce Pin 7
if(readString.indexOf("offF") > 0) digitalWrite (outF, LOW );
if(readString.indexOf("onG") > 0) digitalWrite (outG, HIGH); //Luce Pin 8
if(readString.indexOf("offG") > 0) digitalWrite (outG, LOW );
if(readString.indexOf("onH") > 0) digitalWrite (outH, HIGH); //Luce Pin 9
if(readString.indexOf("offH") > 0) digitalWrite (outH, LOW );
if(readString.indexOf("onI") > 0) digitalWrite (outI, HIGH); //Luce Pin 10
if(readString.indexOf("offI") > 0) digitalWrite (outI, LOW );
if(readString.indexOf("onL") > 0) digitalWrite (outL, HIGH); //Luce Pin 11
if(readString.indexOf("offL") > 0) digitalWrite (outL, LOW );
if(readString.indexOf("onM") > 0) digitalWrite (outM, HIGH); //Luce Pin 12
if(readString.indexOf("offM") > 0) digitalWrite (outM, LOW );
if(readString.indexOf("onN") > 0) digitalWrite (outN, HIGH); //Luce Pin 13
if(readString.indexOf("offN") > 0) digitalWrite (outN, LOW );
// PAGINA HTML RIMOSSA PER LIMITE CARATTERI
readString="";
delay(1);
client.flush();
client.stop();
}
}
}
}
}
Grazie