Stap 5: In de Arduino Yun codage
Maak een Ino bestand in de Arduino, kopieer de onderstaande codes en sla hen. Ik noemde het "Bridge.ino".
Voordat u de codes op Arduino Yun uploadt, ga naar het tabblad "Extra" en selecteer "Arduino Yun" onder "Board", selecteert u de poort met ttyl en usb daarin onder "Poort". Klik op de knop-> voor het uploaden van de volgende codes op onze Arduino Yun.
Hier zijn de codes.
/ * Deze code is een wijziging op basis van Arduino Yún Bridge voorbeeld
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://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 YunServer server;
void setup {/ / Bridge opstarten pinMode (13, OUTPUT); digitalWrite (13, laag); Bridge.begin();
Luisteren naar binnenkomende verbinding alleen vanaf de localhost / / (niemand van het externe netwerk kunnen aansluiten) server.listenOnLocalhost(); server.begin(); Serial.begin(9600);
}
---brug---/ / Get clients komen vanaf server YunClient 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
}
//-------------------------bridge------------------
VOID proces (YunClient 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(YunClient 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(YunClient 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(YunClient 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); }