Paso 4: Sketch Arduino
En este caso se tomo el ejemplo del puente viene incluido con el YUN, modificando solamente el pin en el se conecta el sensor de movimiento.
/*
Ejemplo de Arduino Yún puente
Este ejemplo para el Arduino Yún muestra cómo utilizar la biblioteca de puente a los pines digitales y analógicos en la Junta a través de llamadas del resto. Demuestra cómo puede crear su propio API al utilizar llamadas de estilo del resto a través del navegador.
Posibles comandos crean en este shetch:
"/ arduino/digital/13" -> digitalRead(13) "/ arduino/digital/13/1" -> digitalWrite (13, alto) "/ arduino/analógica/2/123" -> analogWrite (2, 123) "/ arduino/analógica/2" -> analogRead(2) "/ entrada/arduino/mode/13" -> pinMode (13, entrada) "/ arduino / / 13/salida en modo" -> pinMode (salida 13)
Este ejemplo de código forma parte del dominio público
http://www.Arduino.CC/en/Tutorial/Bridge
*/
#include #include #include
Escuchar el puerto predeterminado 5555, el servidor Web de Yún / / se adelante allí el HTTP solicita enviar BridgeServer servidor;
void setup() {/ / puente arranque pinMode (6, entrada); Bridge.Begin();
Escucha para la conexión entrante sólo desde localhost / (nadie de la red externa podría conectar) server.listenOnLocalhost(); Server.Begin(); }
void loop() {/ / obtener clientes procedentes de servidor del cliente BridgeClient = server.accept();
¿Hay un nuevo cliente? Si (cliente) {/ / proceso de solicitud de process(client);
Cerrar conexión y recursos gratuitos. Client.STOP(); }
Delay(50); Encuesta cada 50ms}
void proceso (cliente BridgeClient) {/ / leer el comando String = client.readStringUntil('/');
¿es el comando "digital"? Si (comando == "digital") {digitalCommand(client);}
¿es el comando "analógico"? Si (comando == "analógica") {analogCommand(client);}
¿es el comando "modo"? Si (comando == "modo") {modeCommand(client);}}
void digitalCommand(BridgeClient client) {int pin, valor;
Pin número de pin leído = client.parseInt();
Si el siguiente carácter es un '/' significa que tenemos una URL / / con un valor como: "/ digital/13/1" si (client.read() == '/') {valor = client.parseInt(); //digitalWrite (pin, valor);} else {valor = digitalRead(pin);}
Enviar feedback al cliente client.print (F ("Pin D")); Client.Print(PIN); Client.Print F ("establecida"); Client.println(Value);
Clave de almacén de datos de actualización con la clave de cadena de valor de pin actual = "D"; += clave pin; Bridge.put (clave, String(value)); }
void analogCommand(BridgeClient client) {int pin, valor;
Pin número de pin leído = client.parseInt();
Si el siguiente carácter es un '/' significa que tenemos una URL / / con un valor como: "/ analógica/5/120" si (client.read() == '/') {/ / leer valor y valor de comando de ejecutar = client.parseInt(); analogWrite (pin, valor);
Enviar feedback al cliente client.print (F ("Pin D")); Client.Print(PIN); Client.Print F ("set a analógico"); Client.println(Value);
Clave de almacén de datos de actualización con la clave de cadena de valor de pin actual = "D"; += clave pin; Bridge.put (clave, String(value)); } else {/ / leer pin analógico valor = analogRead(pin);
Enviar feedback al cliente client.print (F "(perno del A")); Client.Print(PIN); Client.Print F ("Lee analógica"); Client.println(Value);
Clave de almacén de datos de actualización con la clave de cadena de valor de pin actual = "A"; += clave pin; Bridge.put (clave, String(value)); } }
void modeCommand(BridgeClient client) {int pin;
Pin número de pin leído = client.parseInt();
Si el siguiente carácter no es un '/' tenemos una URL con formato incorrecto si (client.read()! = '/') {client.println(F("error")); return;}
Modo de cadena = client.readStringUntil('\r');
Si (modo == "input") {pinMode (pin, entrada); / / enviar feedback al cliente client.print (F ("Pin D")); client.print(pin); client.print (F ("configurado como entrada!")); return;}
Si (modo == 'salida') {pinMode (pin, salida); / / enviar feedback al cliente client.print (F ("Pin D")); client.print(pin); client.print (F ("configurado como salida!")); return;}
Client.Print (F ("error: modo no válido")); Client.Print(Mode); }