This is a simple intro in how to control your Arduino from Twitter. If you are new to Arduino Twitter / Arduino Processing Twitter / Arduino Python Twitter / Twitter Mood Light, then please refer to simpleTweet_00_processing and simpleTweet_01_python (and How to install Python packages on Windows 7 ) for a crash course.
Remove these ads by
Signing UpStep 1Concept: Arduino {Processing / Python} Twitter
The general idea: You've got a LED generating a peaceful glow, cycling through a bunch of colors, and meanwhile you've got Processing or Python listening to Twitter for any mention of @yourUsername. When it finds a Twitter status with @yourUsername it writes to Arduino over Serial and Arduino changes the LED from peaceful glow to alert.
The circuit board (step 6) has two buttons: Reset and Send. The reset button changes the LED from "alert" back to "peaceful glow." The send button sends a Twitter status update to your Processing or Python layer, and from there on up to Twitter. When pressing the SEND button, hold it down until you see the flash of WHITE LIGHT (approx 1 second.) This confirms the button push has been read by Arduino.
There is some confusion about Twitter Rate Limits . The Rate Limit is the number of times Twitter will let you hit it's servers per hour, currently 350 hits per hour. Go over that number and Twitter will block you. I made the same provision for this in both Processing and Python: wait 15 seconds between hits. In Processing, in void draw() , see delay(15000); . In the Python, in the while clause, see time.sleep(15). This does not affect the timing of any button pushing or Serial calls.
The Arduino code is the same for both Processing and Python except when Arduino listens to Serial. Both Processing and Python pass an integer value of 1 (arduino.write(1) ) but Arduino receives a different value (numeric / ascii) from each, which is why you'll see these two lines in the Arduino code:
if (serialMsg == 1) state = "mention"; // processing
if (serialMsg == 49) state = "mention"; // python
This is because I'm not sure how to pass a string value of "mention " over Serial in Python. It's not critical, so I'll leave working as above, but if anyone has a solution for sending a string (arduino.write("mention") ), particularly in Python, please post in the comments below.
The center of this project is the getMentions() function. It's interesting to compare how they look in Processing and in Python.
// Processing (java)
// search for any mention of @yourUsername
void getMention() {
List mentions = null;
try {
mentions = twitter.getMentions();
}
catch(TwitterException e) {
println("Exception: " + e + "; statusCode: " + e.getStatusCode());
}
Status status = (Status)mentions.get(0);
String newID = str(status.getId());
if (oldID.equals(newID) == false){
oldID = newID;
println(status.getText()+", by @"+status.getUser().getScreenName());
arduino.write(1); // arduino gets 1
}
}
# Python
# search for any mention of @yourUsername
def getMention():
status = api.GetReplies()
newID = str(status[0].id)
global oldID
if (newID != oldID):
oldID = newID
print status[0].text+", by @"+status[0].user.screen_name
arduino.write(1) # arduino gets 49
In both cases the id value received is in "long" format. By converting from "long" to "string" with str() we're able to compare the value and act on it. I had trouble doing that in long format.
| « Previous Step | Download PDFView All Steps | Next Step » |








































Check out the diagram...
http://www.instructables.com/id/Twitter-Mention-Mood-Light/step6/Circuit-Board/
For each Button / LED pair:
Microprocessor -> resistor -> buttton ->(line A) resistor -> ground.
Microprocessor -> resistor -> buttton ->(line B) LED -> resistor -> microprocessor.
If you put it together, four buttons & four LEDs, what would you do with it?
Thanks for the props.
FYI - you can get RGB LEDs for $2 ea here: http://bit.ly/upYpiY at Adafruit. That's a competitive price. This is the LED I used but I've got a funky cover on it that I found at a local electronic hobby shop.
Mood lights are a fun and pretty straight forward concept and a great start to integrating with twitter.
Do you prefer coding in "Processing" or "Python" or some other language? This mood light project includes the code for each. I was still learning Python so I thought it'd be fun to explore the differences. There are enough tutorials out there and all coding follows the same basic structure. I've also got SimpleTweet_00 (Processing) and SimpleTweet_01 (Python.)
Have fun!
Microprocessor -> resistor -> buttton ->(line B) >power< LED -> resistor -> microprocessor.