Nike förnya ljus (6 / 7 steg)
Steg 6: Arduino kodning
Här är koden för Nike förnya registreringen. Det finns flera saker du måste göra för att det ska fungera; Du måste ändra IP-adressen och mac-adressen.
< p > / * < br > Ryckningen klienten med strängar
Denna skiss ansluter till Twitter med hjälp av en Ethernet shield. Analyserar det XML
återvänt, och ser för detta är en tweet
Du kan använda Arduino Ethernet shield eller Adafruit Ethernet shield,
antingen en fungerar, så länge som den har fått en Wiznet Ethernet modul ombord.
I detta exempel används DHCP-rutiner i Ethernet-biblioteket som är en del av den
Arduino kärna från version 1.0 beta 1
I detta exempel används strängen biblioteket, som är en del av Arduino kärnan från
version 0019.
Krets:
* Ethernet shield bifogas stift 10, 11, 12, 13
skapad 21 maj 2011
av Tom Igoe
ändrat av Amanda Ghassaei juni 2012
uppdaterad igen av cdw181818 December 2014
Denna kod är i public domain.
*/
#include
#include < /p >< p > //variable att förhindra övergödning
booleska nikeRestock = 1; < /p >< p > / / Ange MAC-adress och IP-adressen för din controller nedan.
IP-adressen kommer att bero på ditt lokala nätverk:
byte [mac] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
IP-adress ip (xxx, xxx, xxx, xx; / / <<< Skriv IP-adressen här < /p >< p > / / initiera bibliotek instans:
EthernetClient klient; < /p >< p > const int requestInterval = 60000; fördröjning mellan begäranden = 1min < /p >< p > char servernamn [] = "api.twitter.com"; Twitter URL < /p >< p > boolean efterfrågades; Om du har gjort en begäran sedan ansluter
lång lastAttemptTime = 0; förra gången du ansluten till servern, i millisekunder < /p >< p > String currentLine = ""; sträng till texten från servern
Sträng tweet = ""; sträng att hålla tweet
booleska readingTweet = false; Om du läser för närvarande tweet < /p >< p > void setup() {
pinMode (12, OUTPUT);
pinMode (13, OUTPUT);
boka plats för strängarna:
currentLine.reserve(256);
Tweet.Reserve(150); < /p >< p > / / initiera följetong:
Serial.BEGIN(9600);
försök en DHCP-anslutning:
IF (!. Ethernet.BEGIN(Mac)) {
om DHCP misslyckas, börja med en hårdkodad adress:
Ethernet.BEGIN (mac, ip);
}
ansluta till Twitter:
connectToServer();
Testing();
} < /p >< p > void loop()
{
om (nikeRestock) {
om (client.connected()) {
om (client.available()) {
Läs inkommande byte:
char inChar = client.read(); < /p >< p > / / Lägg till inkommande byte till slutet av raden:
currentLine += inChar;
Om du får en ny rad, avmarkera raden:
om (inChar == "\n") {
currentLine = "";
}
om den aktuella raden slutar med, kommer det att
följas av tweet:
om (currentLine.endsWith("")) {
tweet börjar. Rensa tweet strängen:
readingTweet = sant;
Tweet = "";
}
Om du läser för närvarande byten i en tweet,
lägga till dem i tweet sträng:
om (readingTweet) {
om (inChar! = ' <') {
Tweet += inChar;
}
annat {
Om du fick en "<" karaktär,
du har kommit till slutet av tweet:
readingTweet = false;
Serial.println(tweet);
om (tweet == "> förnya") {
digitalWrite 12, hög.
digitalWrite 13, hög.
Serial.println ("LED på!");
fördröjning (360000); //turn på i 1 timme
digitalWrite 12, låg.
digitalWrite 13, låg.
nikeRestock = 0;
}
om (tweet! = "> förnya") {
digitalWrite 12, låg.
digitalWrite 13, låg.
Serial.println ("LED OFF!");
}
stänga anslutningen till servern:
client.stop();
}
}
}
}
annars om (millis() - lastAttemptTime > requestInterval) {
Om du inte är ansluten, och två minuter har gått sedan
din sista anslutning, sedan försök att ansluta igen:
connectToServer();
}
}
annars om (millis() - lastAttemptTime > 14400000) {//if fyra timmar har gått sedan senaste utfodring
nikeRestock = 1;
}
} < /p >< p > void testing() {
digitalWrite 12, hög.
digitalWrite 13, hög.
Delay(1000);
digitalWrite 12, låg.
digitalWrite 13, låg.
} < /p >< p > void connectToServer() {
försök att ansluta, och vänta en millisekund:
Serial.println ("ansluter till server...");
om (client.connect (servernamn, 80)) {
Serial.println ("att göra HTTP-begäran...");
göra HTTP GET begära Twitter:
client.println ("GET /1/statuses/user_timeline.xml?screen_name=nikestore & count = 1 HTTP/1.1");
client.println ("HOST: api.twitter.com");
client.println();
}
Obs tiden för detta Anslut försök:
lastAttemptTime = millis();
} < /p >