With apologies to Jonathan Coulton for shamelessly ganking the name "Thing-A-Week", Project My-Own-Personal-Thing-A-Week means that starting June 1st, 2007,`each Friday for the next year I will post the specifics of some sort of projecty thing that I've made over the previous week. Here's why.

HBL LED Driver working

It's officially working! It's kind of hard to see the colors but my camera ran out of battery just after taking this. Each of the 5 LEDs has full RGB color control, 12 bits per channel. The CPU is a 70 MHz ARM7, and the whole thing is an inch square.


Random tip: linking 32-bit c++ binaries on 64-bit Ubuntu

Platform: Ubuntu 8.10 (intrepid) 64-bit

Error:
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.3.2/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.3.2/libstdc++.a when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.3.2/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.3.2/libstdc++.a when searching for -lstdc++

Solution:
apt-get install g++-4.3-multilib

Random Tip: wine doesn't like a closed file descriptor on stdin

I wanted to run a wine process in a daemon context, so I closed the stdin file descriptor. On versions 1.0.1 and 1.1.15, at least, this doesn't work.

This fails:
$ ( exec <&- ; wine cmd /c echo hello )
wineserver: chdir to config dir : Not a directory
wine: for some mysterious reason, the wine server failed to run.

Use /dev/null instead.
This works:
$ ( exec < /dev/null ; wine cmd /c echo hello )
hello

Useful ARM processor links

For AVR processors, avrfreaks.net has a pretty good parametric device search. I had a bit more trouble finding one for ARM processors. Having done so, maybe I can save other folks a little bit of time:

Parametric List of ARM7/ARM9/Cortex Devices
Parametric search

Next step: make ARMs as hobbyist-accessible as AVRs.

LED Boost Controller

LED Boost driverLED Boost driver

The LEDs pictured require at least 8 volts to light in series, but they're being driven by less than 3, through a boost converter. The converter is a TI TPS61161, and was surprisingly easy to solder despite its small size and the thermal pad underneath, even with no solder mask and no solder paste. Surface tension really helps here. I just tinned the board using an iron and reflowed using a hot air gun.

LED Driver, first prototype assembled

CIMG1082
CIMG1095

Shameless bragging

The violin project made #1 in Fantasy Magazine's Top 10 Steampunk Gadgets!

Homemade Breathalizer


Fun with an SnO2 alcohol vapor sensor.

LED Driver

The prototype PCBs for the Hackerbot Labs LED Driver board came in! It's kind of hard to tell, but they're an inch square. Either this weekend or the next I'm gonna try bringing it up.

LED Driver Board 0.9, frontLED Driver Board 0.9, back

imagemagick + ffmpeg

I was trying to make an animation of a bouncing ball to illustrate some frame rate conversion issues at work. I wasn't able to get ffmpeg to turn the sequence of PNGs into a movie:

ffmpeg -i ball-%03d.png ball.mp4

Depending on the version of ffmpeg, I got either a useless error message or a misleading one.

The answer is to look at the files themselves:

$ file ball-000.png
ball-000.png: PNG image data, 640 x 480, 16-bit/color RGBA, non-interlaced

ffmpeg can't deal with 16-bits/channel. Neither can mplayer. (At least in the versions I was using.)

Adding -depth 8 to the beginning of my ImageMagick convert command line fixed the problem.

Syndicate content