Twitter Sensing termoelektrisk komponent (3 / 4 steg)
Steg 3: kod
Jag har bifogat Arduino koden jag använde för mitt projekt. Observera att min kod är beroende av WiFly biblioteket tillgängligt här: http://forum.sparkfun.com/viewtopic.php?p=115626#p115626 .< code >
#include < _Spi.h >
#include < Client.h >
#include < Configuration.h >
#include < Debug.h >
#include < ParsedStream.h >
#include < Server.h >
#include < SpiUart.h >
#include < WiFly.h >
#include < WiFlyDevice.h >
Klienten twitter = klient ("199.59.148.201", 80); de bibliotek som ingår ovan har ett objekt
som representerar en anslutning till en fjärrserver
String warm1 = "varma"; strängen att söka efter indata som representerar som enheten kommer att värma upp
Sträng i = ""; en sträng som förblir tom för tillfället
Sträng kyla = "kall"; en annan sträng att söka efter
String resultat = "\"from_user\""; en annan sträng att söka efter
heltal index; en biprodukt av rörig kod, detta är del av ett system för att avgöra huruvida tjänsten är ny
de är inte sällan
int buzz = 2;
int förkylning = 0;
int hots = 0;
int S1 = 3; utgångsstiftet till motor controller kanal som kontrollerar den
int blå = 8. utgångsstiftet ansluten till en blå LED
int rött = 9. utgångsstiftet ansluten till en röd lysdiod
int oldIndex [] = {0, 0, 0}; en uppsättning tal för indexet vid vilka olika understrängar
visas i indata, de används för att avgöra huruvida tjänsten är ny
void setup() / / funktionen körs en gång i början
{
WiFly.begin(); setup objektet ansluten till Wi-Fi-adapter
Serial.BEGIN(9600); setup objektet ansluten till seriell anslutning av mikrokontroller
används för felsökning av programmet
pinMode (S1, OUTPUT);
pinMode (buzz, OUTPUT);
pinMode (blå, OUTPUT);
pinMode (röd, produktionen);
dessa användes för att ange olika pins till utgång
IF (!. WiFly.join("***", "***")) / / objektet wifi returnerar sant om funktionen om
det ansluter framgångsrikt till nätverket med SSID och passworrd i ovanstående parametrar
{
tonen (buzz, 100, 600);
Serial.println ("nät inte ansluten.").
While(1) / / Vad finns det för att göra om anslutningen misslyckas?
{
}
}
tonen (buzz, 3000, 1000);
}
void loop()
{
Återanslut:
för (int jag = 10; Jag > 0; i--) / / få tweets om och om igen
{
IF(!Twitter.Connected()) / / om servern inte är ansluten till, det går genom anslutningsprocessen
{
Serial.println ("ansluter till server..."); för felsökning
IF(Twitter.connect()) / / kör funktionen, om det är framgångsrikt returnerar true och ger felsökningsinformation
{
Serial.println("Connected");
tonen (buzz, 4000, 1000);
}
annat
{
tonen (buzz, 180, 600);
Serial.println ("Anslutning misslyckades."); eller om det är falskt, det ger felsökningsinformation
gå till reconnect; Ja, ja, gå till ogillat, jag använder det ändå
}
}
Twitter.println ("GET search.json?q=\"warm\"+OR+\"cold\"& rpp = 1 HTTP/1.0\r\n"); denna söksträngen tog
lång tid att träna och felsöka
se dev.twitter.com om du vill ha mer information
Twitter.println("Host:search.Twitter.com\r\n");
Delay(300); Jag glömmer varför jag lägger denna försening
IF(!Twitter.available()) / / om det finns något att läsa, gå på framåt och utskrift felsökning info, annars:
{
Serial.println ("Eh. Jag fick ingenting.");
tonen (buzz, 180, 600);
gå till wait_again;
}
While(Twitter.available())
{
i += char(twitter.read()); upprepade gånger lägga till det nyaste tecknet till Indatasträngen
}
Twitter.flush(); Rensa ingång från servern (bara i fall)
Twitter.stop(); nära server conncetion
Serial.println(in); skriva ut detta till en seriell terminal som felsökningsinformation
tonen (buzz, 6000, 1000);
Serial.println ("ny Post...");
IF(in.indexOf(warm1)! = -1 || in.indexOf(cold)! = -1) / / se till att en av söksträngarna är närvarande
{
IF(in.indexOf(warm1) < in.indexOf(cold))
{
hots ++; Lägg till ett till den varma poängen
}
annat
{
förkylningar ++; lägga till ett kallt poängen
}
}
}
IF(hots > colds)
{
Warm(); värma upp om heta vann
}
annat
{
cool(); kyla ner om kallt vann
}
wait_again:
oldIndex [1] = in.indexOf(cold);
oldIndex [2] = in.indexOf(warm1);
Delay(10000); dröjsmål så vi inte är bombardera twitter med frågor
i = ""; Rensa Indatasträngen
förkylning = 0; Rensa hots och förkylningar
hots = 0;
för (int jag = 40; jag > 0; i--) / / denna slinga bara talar om den motor controller att sluta låta ström genom
{
digitalWrite (S1, hög);
delayMicroseconds(1500);
digitalWrite (S1, låg);
delayMicroseconds(1500);
}
}
void warm()
{
för (int jag = 40; jag > 0; i--)
{
digitalWrite (S1, hög);
delayMicroseconds(1100);
digitalWrite (S1, låg);
delayMicroseconds(1100); börja skicka ström i en riktning (uppvärmning upp på plattan)
}
digitalWrite (röd, hög); vänder på LED
Delay(50000); för 50 sekunder (50000 millisekunder)
digitalWrite (röd, låg); stänger av LED
för (int jag = 40; jag > 0; i--)
{
digitalWrite (S1, hög);
delayMicroseconds(1500);
digitalWrite (S1, låg); Stoppar aktuellt
delayMicroseconds(1500);
}
}
void cool()
{
för (int jag = 40; jag > 0; i--)
{
digitalWrite (S1, hög);
delayMicroseconds(1900);
digitalWrite (S1, låg);
delayMicroseconds(1900); börja skicka aktuella i den andra riktningen
(kyla toppen och uppvärmningen i botten, som skingras av en kylfläns)
}
digitalWrite (blå, hög); vänder på LED
Delay(50000); för 50 sekunder
digitalWrite (blå, låg); stänger av LED
för (int jag = 40; jag > 0; i--)
{
digitalWrite (S1, hög);
delayMicroseconds(1500); Stoppar aktuellt
digitalWrite (S1, låg);
delayMicroseconds(1500);
}
}
< / code >