Stap 3: de code
upload enkel deze code aan de arduino:/ * IPhone gecontroleerde LED
Bochten in- en uitschakelen een LED aangesloten op een digital pin, via een computer of
IPhone (of zelfs van een android toestel) zonder gebruik te maken van internet.
gecombineerde voorbeelden:
Voorbeelden > Ethernet > Webserver en voorbeelden > digitale > BlinkWithoutDelay
Het circuit:
* LED verbonden vanaf pin 9 op grond.
* EthernetShield met behulp van pennen 10,11,12,13.
gemaakte mar 2013
door Floris
Floris (at) deboktor.nl
Deze voorbeeldcode is in het publieke domein.
*/
#include < SPI.h >
#include < Ethernet.h >
byte mac [] {} =
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IP-adres ip(192,168,30,178); Kies een IPadress zodat u het gemakkelijk op uw computer vinden kunt
EthernetServer server(80);
CurrentLine koord = "";
char opdracht [100];
int pagina = 2;
int VorigePagina = pagina;
lange previousMillis = 0;
lange interval = 500;
int ledState = laag;
Boole PageUpdated = false;
int LedPin = 9;
VOID Setup {}
pinMode (LedPin, uitvoer);
currentLine.reserve(256);
Ethernet.begin (mac, ip);
server.begin();
digitalWrite(LedPin,LOW);
}
void loop {}
EthernetClient client = server.available();
Als (client) {}
Boole currentLineIsBlank = waar;
Boole ValidCommand = false;
int i = 0;
terwijl (client.connected()) {}
Als (client.available()) {}
char c = client.read();
currentLine += c;
if (!. ValidCommand) {}
Opdracht [i] = c;
i ++;
}
Als (c == '\n') {}
currentLine = "";
}
Als (currentLine.endsWith("HTTP/1.1")) {//line indeling is als: GET /? s = 1 HTTP/1.1 of GET /favicon.ico HTTP/1.1
ValidCommand = true;
Als (opdracht [5]-'? ' == 0) {//if de 5e karakter is?
Als (Command[6]-'s'==0) {//then een s
VorigePagina = pagina; om te voorkomen dat een vreemde opdracht geven
pagina = commando [8]-'0'; //after de? = is het eigenlijke commando
Als (pagina! = 1 & & pagina! = 2 & & pagina! = 3) {//1 = aan, 2 = van, 3 = knipperen
pagina = VorigePagina;
}
PageUpdated = false;
}
}
}
Als (c == '\n' & & currentLineIsBlank) {}
delay(10);
client.Print ("<! HTML DOCTYPE > \n ");
client.Print ("< HTML > < HEAD > \n \n");
client.Print ("< titel > geleid-online </TITLE > \n");
client.Print ("< metanaam = 'viewport' content =' gebruiker-scalable = Ja, breedte = device-width" > ");
client.Print ("< stijl type =' text/css' > \n");
client.Print ("lichaam {\n achtergrondkleur: wit; \n kleur: #222; \n lettertype-familie: Helvetica; \n marge: 0; \n opvulling: 0\n} \n ");
client.Print ("div #button_On {\n achtergrondkleur: blauw; \n border-bottom: 1px solid #666; \n kleur: #222; \n display: block; \n font-kleur: zwart; \n-tekengrootte: 14px; \n font-weight: bold; \n padding: 10px 0; \n text-align: Midden; \n tekst-decoratie: none\n} \n\n ");
client.Print ("div #button_Off {\n background-color: #ccc; \n border-bottom: 1px solid #666; \n kleur: #222; \n display: block; \n font-kleur: zwart; \n-tekengrootte: 14px; \n font-weight: bold; \n padding: 10px 0; \n text-align: Midden; \n tekst-decoratie: none\n} \n\n ");
client.Print ("een {\n text-decoration: none; \n}");
client.Print ("\n </style > \n");
Als ((pagina! = 0) & & (! PageUpdated)) {//1 sec na een opdracht refresh de pagina
client.Print ("< META HTTP-EQUIV = 'Ververs' inhoud ='1; URL = /'> \n ");
PageUpdated = true;
}
else {//normally zodra everyy 10 sec een pagina bijwerken
client.Print ("< META HTTP-EQUIV ="Ververs"CONTENT =" 10; URL = /'> \n ");
}
client.Print ("</HEAD > \n");
client.Print ("< BODY > \n\n");
client.Print ("< een href ='/? s = 1' > \n");
Als (pagina == 1) {}
client.Print ("< div id 'button_On' = > ');
}
else {}
client.Print ("< div id 'button_Off' = > ');
}
client.Print ("LED ON");
client.Print ("</div > \n");
client.Print ("< /a > \n");
client.Print ("< een href ='/? s = 2' > \n");
Als (pagina == 2) {}
client.Print ("< div id 'button_On' = > ');
}
else {}
client.Print ("< div id 'button_Off' = > ');
}
client.Print ("LED OFF");
client.Print ("</div > \n");
client.Print ("< /a > \n");
client.Print ("< een href ='/? s = 3' > \n");
Als (pagina == 3) {}
client.Print ("< div id 'button_On' = > ');
}
else {}
client.Print ("< div id 'button_Off' = > ');
}
client.Print ("LED knippert");
client.Print ("</div > \n");
client.Print ("< /a > \n");
breken;
}
Als (c == '\n') {}
currentLineIsBlank = true;
}
anders als (c! = '\r') {}
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
schakelaar (pagina) {}
Case 1:
digitalWrite(LedPin,HIGH);
breken;
Case 2:
digitalWrite(LedPin,LOW);
breken;
Case 3:
digitalWrite (LedPin, ledState);
if(Millis() - previousMillis > interval) {}
previousMillis = millis();
Als (ledState == laag)
ledState = hoog;
anders
ledState = laag;
}
breken;
}
}