Blijkbaar heb ik iets te vroeg gejuigd. Mijn nieuwe tweets leest hij niet (meer) in. Ik ga de code hier nog eens onder zetten, heb enkel maar de a-check er in gezet. Dit om het overzichtelijk te houden.
#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0x90, 0xA2, 0xDA, 0x07, 0x00, 0x2B };
byte ip[] = { 10,25,32,90}; //change this
byte subnet[] = {255,255,0,0}; //change this
byte gateway[] = {10,25,255,254}; //change this
byte dns[] = {10,56,1,1}; //change this
EthernetClient client;
String TwitterName ="jariboe"; //change this to your own twittername, or follow me ;-)
char tweet[140];
String SearchString ="<title>";
byte charsize;
char serverName[] = "api.twitter.com"; // twitter URL
int leD1 = 8;
int leD2 = 7;
int leD3 = 6;
int leD4 = 5;
void setup() {
pinMode(leD1, OUTPUT);
pinMode(leD2, OUTPUT);
pinMode(leD3, OUTPUT);
pinMode(leD4, OUTPUT);
// initialize serial:
Serial.begin(9600);
// attempt a DHCP connection:
Ethernet.begin(mac, ip, dns, gateway, subnet);
// connect to Twitter:
delay(3000);
}
void loop(){
Serial.println("connecting to server...");
if (client.connect(serverName, 80)) {
TextFinder finder( client,2 );
Serial.println("making HTTP request...");
// make HTTP GET request to twitter:
client.print("GET /1/statuses/user_timeline.rss?screen_name=");
client.print(TwitterName);
client.println("&count=1 HTTP/1.1");
client.println("HOST: api.twitter.com");
client.println();
Serial.println("sended HTTP request...");
memset (tweet,0x03,sizeof(tweet)); //we vullen de tweet met ETX (End of Text)
while (client.connected()) {
if (client.available()) {
Serial.println("looking for tweet...");
SearchString = SearchString + TwitterName + ": ";
charsize = SearchString.length() + 1;
char StartHere[charsize];
char EndHere[] = "</title>";
SearchString.toCharArray(StartHere,charsize);
if((finder.find("<item>")&&(finder.getString(StartHere,EndHere,tweet,140)!=0)))
Serial.println(tweet);
break;
}
}
delay(1);
client.stop();
}
Serial.println("start de verwerking ...");
if (tweet[0] != 0x03) { //als het eerste karakter in de char tweet niet gelijk is aan 0x03, dan staat er dus iets anders bv a of b of q
for (byte i = 0; i <140; i++){ // we zoeken de a op alle 140 plaatsen
if (tweet[i] == 'a' ){
Serial.print("a verwerkt! op plaats: ");
Serial.println(i); // laat ons zien op welke plaats je een a vond. want mogelijks is dat niet op de eerste plaats in de tweet
digitalWrite (leD1, HIGH); //led 1 aan
delay (1000); // laatste actie aanhouden
digitalWrite (leD1, LOW); //led 1 uit en naar de volgende
delay (100);
digitalWrite (leD1, HIGH); //led 1 aan
delay (1000); // laatste actie aanhouden
digitalWrite (leD1, LOW); //led 1 uit en naar de volgende
delay (100);
digitalWrite (leD3, HIGH); //led 1 aan
delay (1000); // laatste actie aanhouden
digitalWrite (leD3 , LOW); //led 1 uit en naar de volgende
delay (100);
}
if (tweet[i] == 'b' ){
Serial.print("b verwerkt! op plaats: ");
Serial.println(i); // index b printen
}
}
}
Serial.println("delay...");
delay (60000);
// don't make this less than 30000 (30 secs), because you can't connect to the twitter servers faster (you'll be banned)
// off course it would be better to use the "Blink without delay", but I leave that to you.
}
Met de Tweet: Allez Hupla (was goed om ook de hoofdletters te checken)
connecting to server...
making HTTP request...
sended HTTP request...
looking for tweet...
Allez Hupla
start de verwerking ...
a verwerkt! op plaats: 10
delay...
connecting to server...
making HTTP request...
sended HTTP request...
looking for tweet...
start de verwerking ...
delay...
Filmpje komt er zeker aan als ik mijn nieuwe camera heb, pas na de examens.