/* CowJam's twitter feed display * Displays your latest twitter friends' tweet * Requires a specific web page to get the tweet from * * Made by CowJam (cowjam at cowjam.net) * Further details at cowjam.net * May 2010 */ #include #include #include //network setup variables byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip[] = { 192, 168, 0, 177 }; byte gateway[] = { 192, 168, 0, 1 }; byte subnet[] = { 255, 255, 255, 0 }; byte server[] = { 94, 171, 241, 186 }; //cowjam.doesntexist.com Client client(server, 80); //display variables byte lineCnt = 0; byte counter = 0; byte offset = 0; byte maxOffset = 0; byte thisOffset = 0; char c; char charC[155]; PString tweet(charC, 156); //LCD setup variable LiquidCrystal lcd(8, 7, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); //initiate the LCD lcd.print("CowJam's Arduino"); lcd.setCursor(0,1); lcd.print("Twitter Spooler "); } void loop() { getTweet(); } void getTweet() { while (getConx() == false) { } client.println("GET /ard_twit.php HTTP/1.0"); client.println(); lineCnt = 0; while (lineCnt<10){ if (lineCnt < 8) { //dump the first 9 lines while (client.read() != '\n') { //as they're not the tweet } lineCnt++; lcd.clear(); counter = 0; tweet.begin(); } else { //get data switch (lineCnt) { case 8: if (counter == 0) { lcd.setCursor(0,0); } c = client.read(); if (c == '\n') { counter = 0; lineCnt++; lcd.setCursor(0,1); tweet.print(" "); } else { lcd.print(c); counter++; } break; case 9: c = client.read(); if (c == '\n') { offset = 0; maxOffset = 1+tweet.length(); while (offset != maxOffset) { lcd.setCursor(0,1); for (int i = offset; i < offset+17; i++) { if (i >= maxOffset-1) { lcd.print(" "); } else { lcd.print(tweet[i]); } } delay(250); //scrolling speed. Increase to slow down. offset++; } client.stop(); lineCnt++; } else { tweet.print(c); } break; } } } } boolean getConx() { Ethernet.begin(mac, ip, gateway, subnet); delay(1000); return client.connect(); }