Android röstkommandon till arduino (2 / 6 steg)
Steg 2: Arduino skiss
Detta är skissen för arduino. Det liknar mycket en från min tidigare instructables. Jag ändrade bara parametrarna "Get-begäran" att kontrollera om ett "budskap" var skicka och om så, om det fanns ett kommando skicka med den.
#include < SPI.h >
#include < Ethernet.h >
LED för TV på stift 22
#define TV_pin 22
LED för stereo på stift 24
#define stereo_pin 24
Ställa in MAC-adress
byte [mac] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
Ange IP-adressen
IP-adress ip (192, 168, 1, 177);
Starta en server på port 80 (http)
EthernetServer server(80);
void setup() {
Öppna seriell kommunikation
Serial.BEGIN(9600);
Starta Ethernet-anslutningen och servern
Ethernet.BEGIN (mac, ip);
Server.BEGIN();
PIN 22 + 24 output (LED)
pinMode (TV_pin, OUTPUT);
pinMode (stereo_pin, produktionen);
}
void loop() {
Kontrollera om klienten är ansluten
EthernetClient klient = server.available();
om (klient) {/ / om det finns en klient...
booleska currentLineIsBlank = sant;
Strängbuffert = ""; En buffert för en GET-begäran
samtidigt (client.connected()) {
om (client.available()) {
char c = client.read(); / / läsa data från klienten
buffert += c; Lagra data i en buffert
om (c == '\n' & & currentLineIsBlank) {/ / om 2 x ny linje == > begäran slutade
Skicka ett standard http-svarshuvud
client.println ("HTTP/1.1 200 OK");
client.println ("Content-Type: text/html");
client.println ("anslutning: Stäng");
client.println(); Tom rad == > avsluta svar
bryta;
}
om (c == "\n") {/ / om ny rad
currentLineIsBlank = sant;
buffert = ""; Tydlig buffert
} else om (c == '\r') {/ / om cariage återvända...
Läs i bufferten om det fanns skicka "få /? meddelande =..."
om (buffer.indexOf ("GET /? meddelande =") > = 0) {
Läs meddelandet du sa och se om det är ett kommando
om (buffer.indexOf ("tv på") > = 0) {
digitalWrite (TV_pin, hög);
}
om (buffer.indexOf ("stereo på") > = 0) {
digitalWrite (stereo_pin, hög);
}
om (buffer.indexOf ("tv av") > = 0) {
digitalWrite (TV_pin, låg);
}
om (buffer.indexOf ("stereo off") > = 0) {
digitalWrite (stereo_pin, låg);
}
}
} annat {
currentLineIsBlank = false;
}
}
}
Delay(1);
client.stop();
}
}
Om du har några frågor om detta skript, posta dem i en kommentar.