WebCam Con Arduino YUN Y PIR förslag (4 / 7 steg)
Steg 4: Skissen Arduino
En este caso se tomo el ejemplo del bro que viene incluido con el YUN, modificando solamente el stift sv el que se conecta el sensor de movimiento.
/*
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://www.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 BridgeServer server;
void setup() {/ / bro start pinMode (6, ingång); Bridge.BEGIN();
Lyssnar efter inkommande anslutning endast från localhost / / (ingen från det externa nätverket kan ansluta) server.listenOnLocalhost(); Server.BEGIN(); }
void loop() {/ / få klienter kommer från servern BridgeClient 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}
Annullera process (BridgeClient 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(BridgeClient 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(BridgeClient 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(BridgeClient 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); }