Paso 3: el código
sólo subir este código para el arduino:/ * IPhone controlado LED
Enciende y apaga un LED conectado al pin digital, a través de un ordenador o
IPhone (o incluso un dispositivo android) sin usar internet.
ejemplos combinados:
Ejemplos > Ethernet > servidor Web y ejemplos > Digital > BlinkWithoutDelay
El circuito:
* LED del pin 9 atado suelo.
* EthernetShield con pines 10,11,12,13.
creado mar 2013
por Floris
Floris (at) deboktor.nl
Este ejemplo de código es de dominio público.
*/
#include < SPI.h >
#include < Ethernet.h >
mac de bytes [] = {}
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
Ip(192,168,30,178) dirección IP; elegir un IPadress por lo que puede encontrar fácilmente en su computadora
Server(80) de EthernetServer;
Cadena currentLine = "";
char orden [100];
Página de int = 2;
prevpage int = página;
previousMillis largo = 0;
largo intervalo de tiempo = 500;
int ledState = bajo;
Boolean PageUpdated = false;
int LedPin = 9;
void setup() {}
pinMode (LedPin, salida);
currentLine.reserve(256);
Ethernet.Begin (mac, ip);
Server.Begin();
digitalWrite(LedPin,LOW);
}
void loop() {}
Cliente EthernetClient = server.available();
Si {} (cliente)
Boolean currentLineIsBlank = true;
Boolean ValidCommand = false;
int i = 0;
mientras (client.connected()) {}
Si (client.available()) {}
char c = client.read();
currentLine += c;
if (!. ValidCommand) {}
Comando [i] = c;
i ++;
}
Si (c == '\n') {}
currentLine = "";
}
Si (currentLine.endsWith("HTTP/1.1")) {//line formato es como: obtener /? s = 1 HTTP/1.1 o GET /favicon.ico HTTP/1.1
ValidCommand = true;
Si (comando [5]-'? ' ¿== 0) {//if karakter 5 es?
Si (Command[6]-'s'==0) {//then una s
prevpage = página; para evitar dar un extraño comando
Página = comando [8]-'0'; //after el? = es el comando real
Si (Página! = 1 & & página! = 2 & & página! = 3) {//1 = on 2 = de 3 = luz intermitente
Página = prevpage;
}
PageUpdated = false;
}
}
}
Si (c == '\n' & & currentLineIsBlank) {}
Delay(10);
Client.Print ("<! HTML de DOCTYPE > \n ");
Client.Print ("< HTML > < HEAD > de \n \n");
Client.Print ("< TITLE > led- / en línea < TITLE > \n");
Client.Print ("< nombre de meta = contenido de 'ventanilla' =' usuario escalable = sí, ancho = ancho de dispositivo ' >");
Client.Print ("< estilo tipo =" texto/css' > \n ");
Client.Print ("cuerpo {\n color de fondo: blanco; \n color: #222; \n font-family: Helvetica; \n margen: 0; acolchado \n: 0\n} \n ");
Client.Print ("div #button_On {\n color de fondo: azul; \n frontera-bottom: 1px solid #666; \n color: #222; \n display: block; \n font-color: negro; \n font-size: 14px; \n font-weight: bold; \n padding: 10px 0; \n texto-alinee: Centro; decoración de texto \n: none\n} \n\n ");
Client.Print ("div #button_Off {\n fondo-color: #ccc; \n frontera-bottom: 1px solid #666; \n color: #222; \n display: block; \n font-color: negro; \n font-size: 14px; \n font-weight: bold; \n padding: 10px 0; \n texto-alinee: Centro; decoración de texto \n: none\n} \n\n ");
Client.Print ("un {decoración de texto \n: ninguno; \n}");
Client.Print ("\n </estilo > \n");
Si ((página! = 0) & & (! PageUpdated)) {//1 seg después de una actualización de comando la página
Client.Print ("< META HTTP-EQUIV = 'actualizar' contenido = 1; URL = /'> \n ");
PageUpdated = true;
}
Else {//normally una vez everyy 10 seg una página de actualización
Client.Print ("< META HTTP-EQUIV = 'actualizar' contenido = 10; URL = /'> \n ");
}
Client.Print ("< /HEAD > \n");
Client.Print ("< cuerpo > \n\n");
Client.Print ("< a href ='/? s = 1" > \n ");
Si (Página == 1) {}
Client.Print ("< div id = 'button_On' >");
}
Else {}
Client.Print ("< div id = 'button_Off' >");
}
Client.Print ("LED encendido");
Client.Print ("</div > \n");
Client.Print ("< /a > \n");
Client.Print ("< a href ='/? s = 2' > \n");
Si (Página == 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 ("< a href ='/? s = 3' > \n");
Si (página == 3) {}
Client.Print ("< div id = 'button_On' >");
}
Else {}
Client.Print ("< div id = 'button_Off' >");
}
Client.Print ("LED parpadeando");
Client.Print ("</div > \n");
Client.Print ("< /a > \n");
rotura;
}
Si (c == '\n') {}
currentLineIsBlank = true;
}
else if (c! = '\r') {}
currentLineIsBlank = false;
}
}
}
Delay(1);
Client.STOP();
}
interruptor (página) {}
caso 1:
digitalWrite(LedPin,HIGH);
rotura;
caso 2:
digitalWrite(LedPin,LOW);
rotura;
caso 3:
digitalWrite (LedPin, ledState);
if(Millis() - previousMillis > intervalo) {}
previousMillis = millis();
Si (ledState == LOW)
ledState = alto;
otra cosa
ledState = bajo;
}
rotura;
}
}