Paso 3: código
Adjunto el código de Arduino que utilicé para mi proyecto. Tenga en cuenta que mi código es dependiente de la biblioteca de WiFly disponible aquí: http://forum.sparkfun.com/viewtopic.php?p=115626#p115626 .código de < >
#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 cliente = cliente ("199.59.148.201", 80); las bibliotecas incluidas arriba tienen un objeto
que representa una conexión a un servidor remoto
Cadena caliente1 = "caliente"; la cadena a buscar en los datos de entrada que representa el dispositivo se caliente
Cadena en = ""; una cadena que permanecerá vacía por el momento
Cadena de frío = "frío"; otra cadena a buscar
String resultado = "\"from_user\""; otra cadena a buscar
int index; un subproducto del código sucio, esto es parte de un sistema para determinar si es o no el post nuevo
no rara vez son
buzz de int = 2;
resfriados de int = 0;
hots int = 0;
int S1 = 3; el pin de salida para el controlador del motor del canal que controla el
int azul = 8; el pin de salida conectado a un LED azul
int rojo = 9; la patilla de salida conectada a un LED rojo
int oldIndex [] = {0, 0, 0}; un conjunto de números para el índice en el que varias subcadenas
aparecen en la entrada, que se utilizan para determinar si es o no el post nuevo
void setup() / / esta función se ejecuta una vez al principio
{
WiFly.begin(); configurar el objeto conectado con el adaptador Wi-Fi
Serial.Begin(9600); configurar el objeto conectado a la conexión serial del microcontrolador
utiliza para la depuración del programa
pinMode (S1, salida);
pinMode (buzz, salida);
pinMode (azul, salida);
pinMode (rojo, salida);
éstos fueron utilizados para establecer varias clavijas de salida
if (!. WiFly.join("***", "***")) / / el objeto wifi devuelve true en esta función si
con éxito se conecta a la red con el SSID y el passworrd en los parámetros anteriores
{
tono (buzz, 100, 600);
Serial.println ("red no se unen".);
while(1) / / ¿Qué es hay que para ver si la conexión falla?
{
}
}
tono (buzz, 3000, 1000);
}
void loop()
{
Vuelva a conectar:
para (int i = 10; i > 0; i--) / / obtener más y más tweets
{
if(!Twitter.Connected()) / / si el servidor no está conectado a, atraviesa el proceso de conexión
{
Serial.println ("conectando al servidor..."); utiliza para la depuración
if(Twitter.Connect()) / / ejecuta la función, si tiene éxito devuelve true y proporciona información de depuración
{
Serial.println("Connected");
tono (buzz, 4000, 1000);
}
otra cosa
{
tono (buzz, 180, 600);
Serial.println ("fallada la conexión."); o si es false, ofrecerá información de depuración
Goto volver a conectar; sí, sí, goto es fruncido el ceño sobre, usarlo de todos modos
}
}
Twitter.println ("GET search.json?q=\"warm\"+OR+\"cold\"& rpp = 1 HTTP/1.0\r\n"); llevó a esta cadena de búsqueda
mucho tiempo y depurar
Consulte dev.twitter.com si desea más información
Twitter.println("host:Search.twitter.com\r\n");
Delay(300); Se me olvida por qué pongo este retraso
if(!Twitter.Available()) / / si no hay nada que leer, vaya adelante e imprimir información de depuración, de lo contrario:
{
Serial.println ("Eh. Tengo nada.");
tono (buzz, 180, 600);
Goto wait_again;
}
while(Twitter.Available())
{
en += char(twitter.read()); Agregar repetidamente el carácter más a la cadena de entrada
}
Twitter.Flush(); claro la entrada desde el servidor (por si acaso)
Twitter.STOP(); cerrar el conncetion de servidor
Serial.println(in); imprimir esto en un terminal de serie como información de depuración
tono (buzz, 6000, 1000);
Serial.println ("nuevo Post...");
if(in.IndexOf(warm1)! = -1 || in.indexOf(cold)! = -1) / Asegúrese de que una de las cadenas de búsqueda está presente
{
if(in.IndexOf(warm1) < in.indexOf(cold))
{
HOTS ++; Añadir a la partitura caliente
}
otra cosa
{
los resfriados ++; Añadir a la partitura fría
}
}
}
if(HOTS > colds)
{
Warm(); caliente para arriba si ganó caliente
}
otra cosa
{
Cool(); enfriar si frío
}
wait_again:
oldIndex [1] = in.indexOf(cold);
oldIndex [2] = in.indexOf(warm1);
Delay(10000); demora para no bombardear twitter con consultas
en = ""; claro la cadena de entrada
resfriado = 0; claro el hots y los resfriados
HOTS = 0;
para (int i = 40; i > 0; i--) / / este bucle sólo dice que el controlador del motor para dejar dejar actual a través de
{
digitalWrite (S1, alto);
delayMicroseconds(1500);
digitalWrite (S1, LOW);
delayMicroseconds(1500);
}
}
void warm()
{
para (int i = 40; i > 0; i--)
{
digitalWrite (S1, alto);
delayMicroseconds(1100);
digitalWrite (S1, LOW);
delayMicroseconds(1100); empezar a enviar corriente en una dirección (la parte superior de la placa de calefacción)
}
digitalWrite (rojo, alto); enciende LED
Delay(50000); durante 50 segundos (50000 milisegundos)
digitalWrite (rojo, baja); se apaga el LED
para (int i = 40; i > 0; i--)
{
digitalWrite (S1, alto);
delayMicroseconds(1500);
digitalWrite (S1, LOW); detiene la corriente
delayMicroseconds(1500);
}
}
void cool()
{
para (int i = 40; i > 0; i--)
{
digitalWrite (S1, alto);
delayMicroseconds(1900);
digitalWrite (S1, LOW);
delayMicroseconds(1900); empezar a enviar en la otra dirección
(la parte superior de refrigeración y calentamiento de la parte inferior, que es disipada por un disipador de calor)
}
digitalWrite (azul, alto); se enciende el LED
Delay(50000); durante 50 segundos
digitalWrite (azul, bajo); se apaga el LED
para (int i = 40; i > 0; i--)
{
digitalWrite (S1, alto);
delayMicroseconds(1500); detiene la corriente
digitalWrite (S1, LOW);
delayMicroseconds(1500);
}
}
< / código >