Étape 3: Code
Je joins le code Arduino, que j’ai utilisé pour mon projet. Notez que mon code est dépendante de la bibliothèque de WiFly disponible ici : 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 >
Twitter de client = Client (« 199.59.148.201 », 80) ; les bibliothèques incluses ci-dessus ont un objet
ce qui représente une connexion à un serveur distant
String warm1 = « à chaud » ; la chaîne à rechercher dans les données d’entrée représentant que l’appareil se réchauffe
Chaîne dans = "" ; une chaîne qui restera vide pour l’instant
Chaîne de froid = « froid » ; une autre chaîne à rechercher
Chaîne de résultats = « \"from_user\ » «; » une autre chaîne à rechercher
int indice ; un sous-produit du code malpropre, cela fait partie d’un système pour déterminer si le poste est nouveau
ils ne sont pas rarement
buzz int = 2 ;
rhumes int = 0 ;
hots int = 0 ;
int S1 = 3 ; la broche de sortie pour le contrôleur de moteur de canal qui contrôle la
bleu int = 8 ; la broche de sortie reliée à une LED bleue
int rouge = 9 ; la broche de sortie reliée à une LED rouge
int oldIndex [] = {0, 0, 0} ; un ensemble de nombres pour l’index à laquelle plusieurs sous-chaînes
apparaissent dans l’entrée, ils sont utilisés pour déterminer si oui ou non le poste nouveau
void setup() / / cette fonction s’exécute une fois au début
{
WiFly.begin() ; programme d’installation l’objet connecté à l’adaptateur Wi-Fi
Serial.Begin(9600) ; programme d’installation l’objet connecté à la connexion en série du microcontrôleur
utilisé pour le débogage du programme
pinMode (S1, sortie) ;
pinMode (buzz, sortie) ;
pinMode (blue, sortie) ;
pinMode (rouge, sortie) ;
ils ont été utilisés pour définir les différentes broches de sortie
if (!. WiFly.join("***", "***")) / / l’objet wifi renvoie la valeur true sur cette fonction si
avec succès, il se connecte au réseau avec le SSID et le passworrd dans les paramètres ci-dessus
{
ton (buzz, 100, 600) ;
Serial.println ("réseau ne pas rejoint.") ;
while(1) / / qu’y a-t-il à faire si la connexion échoue ?
{
}
}
ton (buzz, 3000, 1000) ;
}
void loop()
{
se reconnecter :
pour (int i = 10 ; j’ai > 0; i--) / / get tweets maintes et maintes
{
if(!Twitter.Connected()) / / si le serveur n’est pas connecté à, il traverse le processus de connexion
{
Serial.println ("connexion au serveur...") ; utilisé pour le débogage
if(Twitter.Connect()) / / exécute la fonction, si elle est réussie retourne la valeur true et fournit des informations de débogage
{
Serial.println("Connected") ;
ton (buzz, 4000, 1000) ;
}
d’autre
{
ton (buzz, 180, 600) ;
Serial.println ("connexion a échoué.") ; ou si c’est faux, il fournira des informations de débogage
Goto se reconnecter ; Oui, oui, goto est mal vu, je l’utilise quand même
}
}
Twitter.println (« GET search.json?q=\"warm\"+OR+\"cold\ » & rpp = 1 HTTP/1.0\r\n") ; Cette chaîne de recherche a pris
beaucoup de temps à élaborer et à déboguer
Voir dev.twitter.com si vous voulez plus d’info
Twitter.println("Host:Search.twitter.com\r\n") ;
Delay(300) ; J’ai oublié pourquoi j’ai mis ce retard
if(!Twitter.available()) / / s’il n’y a rien à lire, allez sur infos de débogage avant et impression, sinon :
{
Serial.println ("hein. Je n’ai rien.") ;
ton (buzz, 180, 600) ;
Goto wait_again ;
}
while(Twitter.available())
{
dans += char(twitter.read()) ; Ajouter à plusieurs reprises le caractère plus récent à la chaîne d’entrée
}
Twitter.Flush() ; effacer l’entrée du serveur (juste au cas où)
Twitter.Stop() ; fermer la conncetion serveur
Serial.println(in) ; imprimer ce à un terminal série comme informations de débogage
ton (buzz, 6000, 1000) ;
Serial.println ("nouveau Post...") ;
if(in.IndexOf(warm1)! = -1 || in.indexOf(cold)! = -1) / / Assurez-vous qu’une des chaînes de recherche est présente
{
if(in.IndexOf(warm1) < in.indexOf(cold))
{
hots ++ ; Add-on à la partition chaude
}
d’autre
{
rhumes ++ ; Add-on à la partition de froide
}
}
}
if(hots > colds)
{
Warm() ; le réchauffer up si won chaud
}
d’autre
{
cool() ; refroidir si froid gagné
}
wait_again :
oldIndex [1] = in.indexOf(cold) ;
oldIndex [2] = in.indexOf(warm1) ;
Delay(10000) ; retard, donc nous ne sommes pas bombarder twitter avec requêtes
in = "" ; effacer la chaîne d’entrée
rhume = 0 ; Désactivez les hots et les rhumes
hots = 0 ;
pour (int i = 40 ; j’ai > 0; i--) / / cette boucle est il suffit de dire le contrôleur de moteur pour arrêter la location actuelle par le biais
{
digitalWrite (S1, élevé) ;
delayMicroseconds(1500) ;
digitalWrite (S1, faible) ;
delayMicroseconds(1500) ;
}
}
Sub warm()
{
pour (int i = 40 ; j’ai > 0; i--)
{
digitalWrite (S1, élevé) ;
delayMicroseconds(1100) ;
digitalWrite (S1, faible) ;
delayMicroseconds(1100) ; commencer à envoyer le courant dans un seul sens (le haut de la plaque de chauffage)
}
digitalWrite (rouge, haute) ; LED s’allume
Delay(50000) ; pendant 50 secondes (50000 millisecondes)
digitalWrite (rouge, faible) ; s’éteint LED
pour (int i = 40 ; j’ai > 0; i--)
{
digitalWrite (S1, élevé) ;
delayMicroseconds(1500) ;
digitalWrite (S1, faible) ; arrête le courant
delayMicroseconds(1500) ;
}
}
Sub cool()
{
pour (int i = 40 ; j’ai > 0; i--)
{
digitalWrite (S1, élevé) ;
delayMicroseconds(1900) ;
digitalWrite (S1, faible) ;
delayMicroseconds(1900) ; commencer à envoyer des courants dans l’autre sens
(haut de refroidissement et réchauffement au fond, qui est dissipé par un dissipateur de chaleur)
}
digitalWrite (bleu, HIGH) ; la LED s’allume
Delay(50000) ; pendant 50 secondes
digitalWrite (bleu, faible) ; s’éteint LED
pour (int i = 40 ; j’ai > 0; i--)
{
digitalWrite (S1, élevé) ;
delayMicroseconds(1500) ; arrête le courant
digitalWrite (S1, faible) ;
delayMicroseconds(1500) ;
}
}
< /code >