Stap 4: Schets Arduino
Nl este caso se tomo el ejemplo del brug que viene trevlig con el YUN, modificando solamente el pin nl el que se conecta el sensor de movimiento.
/*
Voorbeeld van de Arduino Yún brug
In het volgende voorbeeld voor de Arduino Yún laat zien hoe met de Bridge-bibliotheek voor toegang tot de digitale en analoge pinnen op het bord door middel van oproepen van de REST. Het laat zien hoe u uw eigen API kunt maken bij het gebruik van de REST stijl oproepen via de browser.
Mogelijk opdrachten gemaakt in dit shetch:
"/ arduino/digitale/13" -> digitalRead(13) "/ arduino/digitale/13/1" -> digitalWrite (13, hoge) "/ arduino/analoge/2/123" -> analogWrite (2, 123) "/ arduino/analoge/2" -> analogRead(2) "/ arduino/mode/13/input" -> pinMode (13, INPUT) "/ arduino/mode/13/uitgang" -> pinMode (13, OUTPUT)
Deze voorbeeldcode maakt deel uit van het publieke domein
http://www.Arduino.CC/en/tutorial/Bridge
*/
#include #include #include
Luister naar de standaardpoort 5555, de Yún-webserver / / zal vooruit er alle HTTP verzoeken u verzenden BridgeServer server;
void setup {/ / Bridge opstarten pinMode (6, INPUT); Bridge.begin();
Luisteren naar binnenkomende verbinding alleen vanaf de localhost / / (niemand van het externe netwerk kunnen aansluiten) server.listenOnLocalhost(); server.begin(); }
void loop {/ / Get clients komen vanaf server BridgeClient client = server.accept();
Er is een nieuwe klant? Als (client) {/ / proces aanvraag process(client);
Sluit verbinding en middelen vrij te maken. client.stop(); }
delay(50); Poll iedere 50 MS}
VOID proces (BridgeClient client) {/ / Lees de opdracht String command = client.readStringUntil('/');
is "digitale" commando? Als (opdracht == "digitale") {digitalCommand(client);}
is "analoge" commando? Als (opdracht == "analoge") {analogCommand(client);}
is de "mode"-opdracht? Als (opdracht == "modus") {modeCommand(client);}}
VOID digitalCommand(BridgeClient client) {int pin, waarde;
Lees pin nummer pin = client.parseInt();
Als het volgende teken een '/' het betekent dat we een URL hebt / / met een waarde zoals: "/ digitale/13/1" als (client.read() == '/') {waarde = client.parseInt(); //digitalWrite (pin, waarde);} else {waarde = digitalRead(pin);}
Feedback verzenden naar client client.print (F ("Pin D")); client.Print(PIN); client.Print F ("ingesteld op"); client.println(Value);
Update datastore sleutel met de huidige pin waarde String sleutel = "D"; belangrijkste += pin; Bridge.put (key, String(value)); }
VOID analogCommand(BridgeClient client) {int pin, waarde;
Lees pin nummer pin = client.parseInt();
Als het volgende teken is een '/' het betekent dat we een URL hebt / / met een waarde zoals: "/ analoge/5/120" als (client.read() == '/') {/ / lezen van waarde en uitvoeren van de opdracht waarde = client.parseInt(); analogWrite (pin, waarde);
Feedback verzenden naar client client.print (F ("Pin D")); client.Print(PIN); client.Print (F ("ingesteld op analoog")); client.println(Value);
Update datastore sleutel met de huidige pin waarde String sleutel = "D"; belangrijkste += pin; Bridge.put (key, String(value)); } else {/ / Lees analoge pin waarde = analogRead(pin);
Feedback verzenden naar client client.print (F ("Pin A")); client.Print(PIN); client.Print (F ("leest analoog")); client.println(Value);
Update datastore sleutel met de huidige pin waarde String sleutel = "A"; belangrijkste += pin; Bridge.put (key, String(value)); } }
VOID modeCommand(BridgeClient client) {int pin;
Lees pin nummer pin = client.parseInt();
Als het volgende teken niet is een '/' we hebben een ongeldige URL als (client.read()! = '/') {client.println(F("error")); terugkeer;}
Tekenreeks modus = client.readStringUntil('\r');
Als (modus == "input") {pinMode (pin, ingang); / / Send feedback aan client client.print (F ("Pin D")), client.print(pin), client.print (F ("geconfigureerd als INPUT!")); terugkeer;}
Als (modus == "output") {pinMode (pin, uitvoer); / / Send feedback aan client client.print (F ("Pin D")), client.print(pin), client.print (F ("geconfigureerd als OUTPUT!")); terugkeer;}
client.Print (F ("fout: ongeldige modus")); client.Print(mode); }