IPhone kontrollerade ledde utan en dator eller internet (3 / 4 steg)
Steg 3: koden
bara ladda upp här koden till arduino:/ * IPhone kontrollerad LED
Slår på och av en lysdiod ansluten till en digital pin, via en dator eller
IPhone (eller ens en android enhet) utan att använda internet.
kombinerade exempel:
Exempel på > Ethernet > Webserver och exempel > digitala > BlinkWithoutDelay
Krets:
* LED från stift 9 fästs marken.
* EthernetShield med stift 10,11,12,13.
skapade mar 2013
av Floris
Floris (at) deboktor.nl
Denna exempelkod är offentlig.
*/
#include < SPI.h >
#include < Ethernet.h >
byte [mac] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IP-adress ip(192,168,30,178); Välj en IPadress så du lätt kan hitta det på din dator
EthernetServer server(80);
String currentLine = "";
char kommandot [100].
int sidan = 2;
int prevpage = sida;
lång previousMillis = 0;
långa intervall = 500.
int ledState = låg;
booleska PageUpdated = false;
int LedPin = 9;
void setup() {
pinMode (LedPin, OUTPUT);
currentLine.reserve(256);
Ethernet.BEGIN (mac, ip);
Server.BEGIN();
digitalWrite(LedPin,LOW);
}
void loop() {
EthernetClient klient = server.available();
om (klient) {
booleska currentLineIsBlank = sant;
booleska ValidCommand = false;
int jag = 0;
samtidigt (client.connected()) {
om (client.available()) {
char c = client.read();
currentLine += c;
IF (!. ValidCommand) {
Kommandot [i] = c;
i ++;
}
om (c == "\n") {
currentLine = "";
}
om (currentLine.endsWith("HTTP/1.1")) {//line format är som: få /? s = 1 HTTP/1.1 eller få /favicon.ico HTTP/1.1
ValidCommand = sant;
om (kommandot [5]-'? " == 0) {//if den 5: e karakter är?
om (Command[6]-'s'==0) {//then en s
prevpage = sida; att förhindra ger ett konstigt kommando
sidan = kommando [8]-'0'; //after den? = är faktiska kommandot
om (sida! = 1 & & sida! = 2 & & sida! = 3) {//1 = on 2 = av, 3 = blinkande
sidan = prevpage;
}
PageUpdated = false;
}
}
}
om (c == '\n' & & currentLineIsBlank) {
Delay(10);
client.Print ("<! DOCTYPE HTML > \n ");
client.Print ("< HTML > < HEAD > \n \n");
client.Print ("< TITLE > ledde-online </TITLE > \n");
client.Print ("< meta namn ="vyport"content =" användaren-scalable = Ja, bredd = enhet-bredd ">");
client.Print ("< style type =" text/css' > \n ");
client.Print ("kroppen {\n bakgrundsfärg: vit; \n färg: #222; \n font-family: Helvetica; \n marginal: 0; \n stoppning: 0\n} \n ");
client.Print ("div #button_On {\n bakgrundsfärg: blå; \n border-bottom: 1px solid #666; \n färg: #222; \n display: block; \n-färg: svart; \n font-size: 14px; \n font-weight: bold; \n padding: 10px 0; \n text-align: center; \n text-decoration: none\n} \n\n ");
client.Print ("div #button_Off {\n bakgrundsfärg: #ccc; \n border-bottom: 1px solid #666; \n färg: #222; \n display: block; \n-färg: svart; \n font-size: 14px; \n font-weight: bold; \n padding: 10px 0; \n text-align: center; \n text-decoration: none\n} \n\n ");
client.Print ("en {\n text-decoration: none; \n}");
client.Print ("\n </stil > \n");
om ((sida! = 0) & & (! PageUpdated)) //1 SEK {kommandot uppdatera sidan
client.Print ("< META HTTP-EQUIV ="uppdatera"innehåll = 1; URL = /'> \n ");
PageUpdated = sant;
}
annat {//normally när varje 10 SEK en sida uppdatera
client.Print ("< META HTTP-EQUIV ="uppdatera"innehåll ='10. URL = /'> \n ");
}
client.Print ("</HEAD > \n");
client.Print ("< BODY > \n\n");
client.Print ("< en href =" /? s = 1' > \n ");
om (sidan == 1) {
client.Print ("< div id ="button_On">");
}
annat {
client.Print ("< div id ="button_Off">");
}
client.Print ("LED på");
client.Print ("</div > \n");
client.Print ("< /a > \n");
client.Print ("< en href =" /? s = 2' > \n ");
om (sidan == 2) {
client.Print ("< div id ="button_On">");
}
annat {
client.Print ("< div id ="button_Off">");
}
client.Print ("LED av");
client.Print ("</div > \n");
client.Print ("< /a > \n");
client.Print ("< en href =" /? s = 3' > \n ");
om (sidan == 3) {
client.Print ("< div id ="button_On">");
}
annat {
client.Print ("< div id ="button_Off">");
}
client.Print ("LED blinkar");
client.Print ("</div > \n");
client.Print ("< /a > \n");
bryta;
}
om (c == "\n") {
currentLineIsBlank = sant;
}
annars om (c! = '\r') {
currentLineIsBlank = false;
}
}
}
Delay(1);
client.stop();
}
Växla (sidan) {
fall 1:
digitalWrite(LedPin,HIGH);
bryta;
fall 2:
digitalWrite(LedPin,LOW);
bryta;
fall 3:
digitalWrite (LedPin, ledState);
IF(Millis() - previousMillis > intervall) {
previousMillis = millis();
om (ledState == låg)
ledState = hög;
annat
ledState = låg;
}
bryta;
}
}