Woah hey I haven’t updated since last year. Well here’s a post. Here’s some backstory behind this one: Last time SparkFun had a Free Day, I won $100 after entering a ton of Captchas for several hours and getting lucky. One of the things I spent it on was continuous-rotation servos because I felt like trying to make a robot of some sort. I once tried modifying some regular servos to be continuous-rotation but I pretty much just ruined them, so I don’t want to try doing that again.
In any case, here’s a quick attempt at a simple robot that just moves forward slowly. The wheels were made from parts of a VHS case which were then taped to the servos. I guess the main issue is that it’s USB-powered so it has a really limited range. I tried using a 9V battery to power the Arduino but apparently that isn’t enough to power two servos (I could hear them clicking, but not moving), so I’ll need an extra power source specifically for the servos. The problem is my lack of battery holders.
Today I was bored and I remembered this video I saw awhile back that had a TF2 kill counter using an Arduino. I’ve been playing TF2 a lot recently (since it became free to play, I’ve been doing a lot better in comparison) so I figured it would be cool to implement something like that. I could’ve done it with LEDs or even GLCD screens (actually it might be cool to do something with the LoLShield), but since Cubey’s been sitting on my desk unused for the past few months, I thought I’d put him to use. Cubey gradually turns around as I get more kills, and after a certain point, he starts moving his ears. He turns back around in disappointment when I die, though.
I used Python to read the config.log file located in the tf folder (on mine, it’s “C:¥Program Files (x86)¥Steam¥steamapps¥your_username_here¥team fortress 2¥tf”). It reads the latest lines and looks for “A killed B” or “A suicided” and sends either a + to the Arduino when A kills someone or it sends a 0 when A is killed by someone else or kills themself. The Arduino then reads from the serial port one character at a time and makes the Cubey servos move accordingly.
Made this back in May but never actually made a post on here about it. I used the “Touch Screen/Digitizer for NDSi LL” I got from DealExtreme and a speaker to generate sound based on where you press on the screen.
In my search for some more awesome music-related Arduino things, I found Miditones and Playtune. Miditones takes a MIDI file as input and outputs a C array that you can copy/paste into your Arduino code and play it using the Playtune library. I just used the example code for an Arduino Nano, with pins 10, 11, and 12 going to three different speakers.
I didn’t realize until just now that the comment in the code says that you can wire all three pins to a terminal of one speaker, but I guess having three speakers makes it kinda surround-sound-ish. Maybe I’ll upload some more videos with a single-speaker setup or with a piezo buzzer. Anyway, here are some videos of Vocaloid songs being played with the Arduino.
A straight copy/paste implementation of Linus Akesson’s hardware chiptune project ported to Arduino by stimmer (reply #1 in this thread). I originally had it as just the speaker, but then I realized I could use the piezo buzzer I got in my digital logic design kit last year and never actually used. So I just added a DIP switch that allowed me to switch between them.
So I designed this Kyubey papercraft this weekend, with the idea based on this image on @kevinchai’s twitpic. It’s Cubey because it’s a cube (well technically a rectangular prism).
Cut along the solid lines, fold along the dotted lines. The ears and the gold ring things are meant to be folded back on themselves so that they’re colored on both sides (I’m seeing a lot of people who don’t get this! It’s somewhat important!). See the images in the gallery if you’re confused. I didn’t add the tail to mine because I didn’t glue the back closed, but basically cut along the solid line on the tab on the back part of the main body and insert the tab from the tail. If you make one of these, post it here, I’d like to see it!
I also added electronics to it (I am terrible at soldering; you have permission to laugh at the pictures of the circuit)! One servo for rotation of the entire papercraft, another servo and a rubber band for moving the ears up and down, and two photocells (one on each side) to sense light. I have it so that Cubey will turn either toward or away from light depending on what I set in the program. I tried adding remote control, but my IR receiver kinda broke somehow. Here are some videos of the other stuff, though.
And more on the channel. Image gallery in the full post.
I modified the scrolling text program some more, and was able to get it to display text based on received serial input. Then I wrote a Python script to get random entries from various RSS feeds (In the video above, the RSS feeds were the Twitter favorites of various people) and send them to a serial port (to be received by the Arduino). One issue was that sometimes the text was too long for the Arduino’s 128-byte serial buffer, so it would get cut off at the end. To resolve this, in the Python script, I split the text into multiple parts and had it wait for the Arduino to request the next part before sending it.
The Arduino code works on its own; you can use the serial monitor in the Arduino compiler to send text to it, but if it’s more than 128 characters, it’ll get cut off. Just remember to have it add a newline character to the end of your input. Also, removing the lines that say “Serial.write(GET_NEW);” and “Serial.write(GET_MORE);” would be a good idea, if you don’t plan on using an external program to provide the input.
(Edit: I’ve updated the code so that it doesn’t spam the serial monitor if you don’t input any text. Also the python code has many flaws and sometimes it crashes, whoops)
Soldering it took forever (three hours) because I am terrible at soldering. In the end, things weren’t soldered so well so some of the LEDs weren’t lighting up (two of the columns didn’t light up because of a single badly-done solder joint), so I had to do a lot of checking. I also burned out one of the LEDs; thankfully they included 8 extra LEDs, probably for such things. The solder vacuum helped a lot more than I thought it would; it’s way better than the desoldering bulb I was using.
I edited the touchscreen Neko program to include Marisa sprites based on her sprites from “Patchcon: Defend the Library!”, except in monochrome. She can also be controlled by serial port if connected through USB: send a header byte of 255 to the Arduino, followed by the X and Y coordinates, and she will move there (assuming the previous command was a valid one). This allows her to also be controlled by, say, Ustream/IRC chat commands.
Update: Had an interactive stream on Ustream where viewers could type “!mari” followed by two integers, and she would move to the coordinate (unless it’s too large or small, then she moves to wherever she can). Here‘s a recording of the stream; cooler stuff happens at about 13 mins onward (fire and snow effects). It doesn’t record the chat messages though, but they were definitely there.