Air Butler (5 / 9 steg)
Steg 5: Kodning i Arduino Yun
Skapa en .ino fil i Arduino, klistra in nedanstående koder och spara dem. Jag döpte den "Bridge.ino".
Innan du lägger upp koderna på Arduino Yun, gå till "Verktyg"-fliken och välj "Arduino Yun" under "Styrelsen", Markera porten med ttyl och usb i det under "Port". Klicka sedan på knappen-> Ladda upp följande koder på våra Arduino Yun.
Här är koderna.
/ * Denna kod är en ändring baserat på Arduino Yún Bridge exempel
Detta exempel för Arduino Yún visar hur du använder Bridge biblioteket tillgång till digitala och analoga stiften i styrelsen via resten samtal. Det visar hur du kan skapa din egen API när du använder resten stil samtal via webbläsaren.
Möjliga kommandon skapade i denna shetch:
* "/ arduino/digital/13" -> digitalRead(13) * "/ arduino/digital/13/1" -> digitalWrite (13, hög) * "/ arduino/analog/2/123" -> analogWrite (2, 123) * "/ arduino/analog/2" -> analogRead(2) * "/ arduino/mode/13/input" -> pinMode (13, ingång) * "/ arduino/mode/13/output" -> pinMode (13, utgång)
Denna exempelkod är en del av det offentliga rummet
http://Arduino.cc/en/tutorial/Bridge
*/
#include #include #include
Lyssna på standardport 5555 Yún webserver / / kommer fram där alla HTTP-begäranden när du skicka YunServer server;
void setup() {/ / bro start pinMode (13, OUTPUT), digitalWrite (13, låg); Bridge.BEGIN();
Lyssnar efter inkommande anslutning endast från localhost / / (ingen från det externa nätverket kan ansluta) server.listenOnLocalhost(); Server.BEGIN(); Serial.BEGIN(9600);
}
---bridge---/ / få klienter kommer från servern YunClient klient = server.accept();
Det finns en ny klient? om (klient) {/ / processen begära process(client);
Nära anslutning och frigöra resurser. client.stop(); }
Delay(50); Poll varje 50 MS
}
//-------------------------bridge------------------
Annullera process (YunClient klient) {/ / Läs kommandot command sträng = client.readStringUntil('/');
är "digital" kommando? om (kommandot == "digital") {digitalCommand(client);}
är "analog" kommando? om (kommandot == "analog") {analogCommand(client);}
är kommandot "mode"? om (kommandot == "mode") {modeCommand(client);}}
void digitalCommand(YunClient client) {int pin, värde;
Läs pin nummer pin = client.parseInt();
Om nästa tecken är en '/' det innebär att vi har en URL / / med ett värde som: "/ digital/13/1" om (client.read() == '/') {värde = client.parseInt(); digitalWrite (pin, värde);} annat {värde = digitalRead(pin);}
Skicka feedback till klienten client.print F ("Pin D"). client.Print(PIN); client.Print F ("in"). client.println(Value);
Uppdatering datastore nyckel med den nuvarande pin värde sträng key = "D"; viktiga += pin; Bridge.Put (nyckel, String(value)); }
void analogCommand(YunClient client) {int pin, värde;
Läs pin nummer pin = client.parseInt();
Om nästa tecken är en '/' det innebär att vi har en URL / / med ett värde som: "/ analog/5/120" om (client.read() == '/') {/ / läsa värde och köra kommandot värde = client.parseInt(); analogWrite (pin, värde);
Skicka feedback till klienten client.print F ("Pin D"). client.Print(PIN); client.Print F ("set till analog"). client.println(Value);
Uppdatering datastore nyckel med den nuvarande pin värde sträng key = "D"; viktiga += pin; Bridge.Put (nyckel, String(value)); } annat {/ / läsa analog pin värde = analogRead(pin);
Skicka feedback till klienten client.print F ("stift A"). client.Print(PIN); client.Print F ("läser analog"). client.println(Value);
Uppdatering datastore nyckel med den nuvarande pin värde sträng key = "A"; viktiga += pin; Bridge.Put (nyckel, String(value)); } }
void modeCommand(YunClient client) {int pin;
Läs pin nummer pin = client.parseInt();
Om nästa tecken inte är en "/" vi har en felaktig URL om (client.read()! = '/') {client.println(F("error")); återvänder;}
Sträng läge = client.readStringUntil('\r');
om (läge == "input") {pinMode (pin, mata); / / skicka feedback till klienten client.print (F ("Pin D")); client.print(pin); client.print (F ("konfigurerad som indata!")); återvänder;}
om (läge == "utgång") {pinMode (pin, utgång); / / skicka feedback till klienten client.print (F ("Pin D")); client.print(pin); client.print (F ("konfigurerad som utgång!")); återvänder;}
client.Print (F ("fel: ogiltigt läge")); client.Print(mode); }