Stap 3: Code
Ik heb bijgevoegd de Arduino-code die ik voor mijn project gebruikte. Merk op dat mijn code afhankelijk van de WiFly bibliotheek beschikbaar hier is: 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 >
Client twitter = Client ("199.59.148.201", 80); de bibliotheken opgenomen boven hebben een object
vertegenwoordigt een verbinding met een externe server
Warm1 koord = "warme"; de tekenreeks moet zoeken in de invoergegevens die aangeeft dat het apparaat zal opwarmen
Tekenreeks in = ""; een tekenreeks die voorlopig leeg blijft
Koude string = "cold"; een andere tekenreeks te zoeken voor
Resultaten string = "\"from_user\"";" een andere tekenreeks te zoeken voor
int index; een bijproduct van slordige code, dit is onderdeel van een systeem om te bepalen of de post is er nieuw
ze zijn zelden niet
int buzz = 2;
int verkoudheid = 0;
int hots = 0;
int S1 = 3; de uitgang-pins op de motor controller kanaal welke besturingselementen de
int blauw = 8; de uitgang-pins aangesloten op een blauwe LED
int rood = 9; de uitgang-pins aangesloten op een rode LED
int oldIndex [] = {0, 0, 0}; een set van nummers voor de index bij welke verschillende subtekenreeksen
verschijnen in de input, ze worden gebruikt om te bepalen of de post is er nieuw
VOID Setup / / deze functie eenmaal wordt uitgevoerd aan het begin
{
WiFly.begin(); instellen van het object dat is verbonden met de Wi-Fi adapter
Serial.begin(9600); Setup het object aangesloten op de seriële aansluiting van de microcontroller
gebruikt voor het debuggen van het programma
pinMode (S1, uitvoer);
pinMode (buzz, uitvoer);
pinMode (blauw, uitvoer);
pinMode (rood, OUTPUT);
Deze werden gebruikt voor het instellen van verschillende pennen voor uitvoer
if (!. WiFly.join("***", "***")) / / de wifi-object resulteert in waar op deze functie als
het verbinding met succes met het netwerk met de SSID en de passworrd in de bovenstaande parameters
{
Toon (buzz, 100, 600);
Serial.println ("netwerk niet gekoppeld.");
while(1) / / wat is er te doen als de verbinding mislukt?
{
}
}
Toon (buzz, 3000, 1000);
}
void loop
{
opnieuw verbinding maken:
voor (int i = 10; ik > 0; ik--) / / get tweets over en voorbij
{
if(!Twitter.Connected()) / / als de server is niet verbonden aan, het loopt door het verbindingsproces
{
Serial.println ("verbinden met server..."); gebruikt voor foutopsporing
if(Twitter.Connect()) / / de functie kan worden uitgevoerd, als het succesvol is true retourneert en debugging informatie
{
Serial.println("Connected");
Toon (buzz, 4000, 1000);
}
anders
{
Toon (buzz, 180, 600);
Serial.println ("verbinding mislukt."); of als het onwaar is, geeft het debugging informatie
goto opnieuw; Ja, ja, goto is afgekeurd, ik gebruik het toch
}
}
Twitter.println ("GET search.json?q=\"warm\"+OR+\"cold\"& rpp = 1 HTTP/1.0\r\n"); deze zoekreeks nam
een lange tijd uit te werken en fouten opsporen
Zie dev.twitter.com als u meer info wilt
Twitter.println("host:Search.Twitter.com\r\n");
delay(300); Ik ben vergeten waarom ik deze vertraging
if(!Twitter.available()) / / als er niets om te lezen is, gaat u vooruit en print het zuiveren info, anders:
{
Serial.println ("Eh. Ik kreeg niets.");
Toon (buzz, 180, 600);
goto wait_again;
}
while(Twitter.available())
{
in += char(twitter.read()); herhaaldelijk toevoegen van het nieuwste karakter aan de invoerreeks
}
Twitter.Flush(); Schakel de input van de server (alleen in geval)
Twitter.stop(); Sluit de conncetion van de server
Serial.println(in); Print deze als foutopsporingsgegevens naar een seriële terminal
Toon (buzz, 6000, 1000);
Serial.println ("nieuw bericht...");
if(in.indexOf(warm1)! = -1 || in.indexOf(cold)! = -1) / / ervoor te zorgen dat een van de zoekstrings aanwezig is
{
if(in.indexOf(warm1) < in.indexOf(cold))
{
HOTS ++; toevoegen aan de warme score
}
anders
{
verkoudheid ++; toevoegen aan de koude score
}
}
}
if(HOTS > Colds)
{
warm(); warmen het als hete gewonnen
}
anders
{
Cool(); het afkoelen als koud gewonnen
}
wait_again:
oldIndex [1] = in.indexOf(cold);
oldIndex [2] = in.indexOf(warm1);
delay(10000); vertraging zodat we niet worden bombarderen twitter met query 's
in = ""; Schakel de invoerreeks
verkoudheid = 0; Schakel de hots en verkoudheid
HOTS = 0;
voor (int i = 40; ik > 0; ik--) / / deze lus is gewoon de motorcontroller te stoppen te laten door te vertellen
{
digitalWrite (S1, hoge);
delayMicroseconds(1500);
digitalWrite (S1, laag);
delayMicroseconds(1500);
}
}
VOID warm()
{
for (int i = 40; ik > 0; ik--)
{
digitalWrite (S1, hoge);
delayMicroseconds(1100);
digitalWrite (S1, laag);
delayMicroseconds(1100); beginnen met het verzenden van stroom in één richting (verwarming de bovenkant van de plaat)
}
digitalWrite (rood, hoge); Hiermee schakelt u LED
delay(50000); 50 seconden (50000 milliseconden)
digitalWrite (rood, laag); schakelt LED
for (int i = 40; ik > 0; ik--)
{
digitalWrite (S1, hoge);
delayMicroseconds(1500);
digitalWrite (S1, laag); stopt de huidige
delayMicroseconds(1500);
}
}
VOID cool()
{
for (int i = 40; ik > 0; ik--)
{
digitalWrite (S1, hoge);
delayMicroseconds(1900);
digitalWrite (S1, laag);
delayMicroseconds(1900); beginnen met het verzenden van huidige in de andere richting
(de top koeling en opwarming van de bodem, die is afgevoerd door een heatsink)
}
digitalWrite (blauw, hoge); Hiermee schakelt u de LED
delay(50000); 50 seconden
digitalWrite (blauw, laag); schakelt LED
for (int i = 40; ik > 0; ik--)
{
digitalWrite (S1, hoge);
delayMicroseconds(1500); stopt de huidige
digitalWrite (S1, laag);
delayMicroseconds(1500);
}
}
< / code >