Paso 5: Codificación en Arduino Yun
Crear un archivo .ino en Arduino, pega los siguientes códigos y guardarlos. Había llamado "Bridge.ino".
Antes de cargar los códigos en Arduino Yun, ir a la pestaña "Herramientas" y seleccione "Arduino Yun" en "Tablero", seleccione el puerto usb y ttyl en él en "Puerto". Haga clic en el botón-> para subir el siguiente código en nuestro Arduino Yun.
Aquí están los códigos.
/ * Este código es una modificación basada en el 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://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 YunServer servidor;
void setup() {/ / puente arranque pinMode (13, salida); digitalWrite (13, bajo); Bridge.Begin();
Escucha para la conexión entrante sólo desde localhost / (nadie de la red externa podría conectar) server.listenOnLocalhost(); Server.Begin(); Serial.Begin(9600);
}
Puente de------/ / conseguir clientes de servidor de cliente de YunClient = 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
}
//-------------------------bridge------------------
void proceso (cliente YunClient) {/ / 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(YunClient 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(YunClient 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(YunClient 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); }