This is part of a larger project, for an electronic Blood Bowl board. Testing a number of ideas in one project - converting a parallel interface LCD into a serial interface, using a shift register and reading data from Flash-based eeprom to display on the LCD.
Sorry about the blurry image, but you should just be able to make out the string of characters as it cycles through a list of names, stored in the external Flash eeprom chip. The characters should read
Here's a pretty cool set of microcontroller-powered miniature traffics lights from one of our youngest members. He's building an electronic toy set for his younger brother for Xmas and is using these to get starting with PIC programming.
Note how the sequence accurately follows a real set of lights - including that frustrating delay when both sets of lights stay red for a second or so - just in case any last-second idiots are trying to jump the amber light and squeeze through before the second stream of traffic is released!
In preparation for Robot Week Wales on 5th December, we're putting together some robot kits. And that means messing about with continuous rotation servos. Most of the off-the-shelf servos are pretty big and lumpy - we'd like to use the little micro servos, to keep the robot size small. So we hacked some micro servos from Oomlout
This is a PIC18F4550 and a ULN2803A darlington relay controlling a stepper motor.
The PIC provides a USB interface to the host PC, allowing you to send a specific number of steps and a rotation direction. The motor can also be turned using the "forwards" and "backwards" jog buttons.
The noise in the video is not rowing neighbours, as suggested by some viewers, but a Radio4 play and my partner on a sewing machine in the other room!
In this example, I'm using a 1.8 degree stepper motor. I'm driving it using half-step rotation, so one rotation = (360/1.8)*2 = 400 steps. You can see this value being entered into the USB/HID app on the laptop - 400 as two bytes is 1(HB) and 145(LB)
Working this back, 1*255 + 145 = 400
When the "send data" button is pushed, the stepper completes one single, full rotation.
While it's been a while since we posted a video here, we've have been busy making cool stuff and trying out new ideas (just check out the main blog for details).
Anyway, here's the latest development: it's part of our miniature instruments range - a tiny 17-key, fully playable, fully-polyphonic, USB synthesizer.
After nearly two weeks of messing about, trying to learn five different types of CNC controlling software, we eventually gave up trying to be different and fell into line with most other CNC users and installed MACH3.
Tom from almostobsolete is our resident G-Code guru and hand crafted some code, off the top of his head, to create a drawing. After pressing go, it wasn't long before we could answer his "can you tell what it is yet?" Rolf Harris style impression.
The video was taken on Robot Steve's Android phone but for some reason the video clarity is nowhere near as good as in his previously uploaded video...
What's pretty exciting about getting the CNC machine to actually work is that we've already a whole load of PCB layouts designed, waiting to be etched. The idea is to pre-drill the copper boards, then use press-n-peel to create the etching mask. That way, we don't have to worry about boards being skewed or starting off the drilling in the wrong place and knackering up an entire A4 sheet of pre-etched copper board!
After nearly twelve days of waiting, the micro 9g servos finally arrived from eBay! We originally ordered six but two of them didn't work properly (lots of chattering no matter what position they were moved to) so here's a quick video showing an animation of 4 x new and 2 x old servos.
For anyone interested, here's the full script of the animation being played out:
This is looking like the final version of the servo board and includes a number of cool enhancements. They were really just one enhancement idea that lead onto another, but have made for a pretty impressive final product.
As a few eagle-eyed viewers spotted, the earlier video showed simple playback but did not include looping (although it was mentioned in the write-up). This video not only shows the initial animation looping, but demonstrates the two new looping methods: not really loops, more like GOTO commands.
At any point in the script, the user can place a label. This is marker point from where you can play back sections of an animation. Users can place GOTO commands in the script, such as "goto 1500ms" (the animation jumps to the point 1.5 seconds into the animation) or "goto label 4". It is this second GOTO command that makes the servo board so useful:
We've updated the firmware so that one or more of the servo pins can be used as input triggers. Simply tell the board how many input pins you want to use (0-8) and when the appropriate input pin is pulled low, the animation playback jumps to that label number.
For example, pull the first input pin (normally servo 20) low and playback immediately jumps to label 1. Pull the second input pin low (normally servo 19) and playback jumps to label 2. Because our servo pins have ground on the outside and signal on the inner (the middle pin is always 5v) the button in the video simply bridges the two outer pins, to pull the input pin low.
Here's the full script, as used in the video above:
'this is the first animation 'it can also be triggered by sending PORTB.7 low
label 500,1 servo 1000,9,50 servo 1000,10,50 servo 2000,9,220 servo 2000,10,220 servo 3000,9,50 servo 4000,10,50 servo 5000,10,220 servo 6000,9,220 tloop 7000,1000 'go to time point 1000
'this is the second animation loop 'triggered when PORTB.6 goes low
The USB connection is used purely to provide a 5V power supply, all controlling is done on the servo board, reading data from the onboard eeprom chip. Final version includes a 5V regulator, allowing a battery supply to be used and no PC connection required.
Playback is initiated by pressing a button. Playback call also be started by sending data from a PC via USB, or from another device, by serial communications.
Each input in the invisible instrument triggers samples by detecting a change in light above a sensor. Because different rooms have different light levels (and light levels can change across a small space in the same room) each input can be adjusted to make it more or less sensitive to the amount of light it is receiving. To do this, we have put a potentiometer on each input which the user can adjust to get the best results.
This time we're using the invisible instrument to trigger guitar riff samples. Although not as immediately useful as, say, an invisible drum kit, the ability to play riffs instead of single notes will become more useful once we've added multi-channel support (play multiple samples from a single input) and MIDI output.
Here's a project that was supposed to be a simple two-day thing that ended up taking a couple of weeks to get right. It's the opposite of a light/laser harp: instead of detecting reflected/broken light beams, this instrument "sees" shadows as you pass you hand over the sensors. Wave your hand about and trigger wav/mp3/ogg samples. In this demonstration, we're using it to trigger drum samples, recreating a simple invisible drumkit
Here's a sneak preview of the new 20 channel, usb-driven, servo controller we're developing. We've used a completely new (ok, not that new, but much improved) way of handling multiple, parallel servo commands which allows us to control 24 or more channels within a 1ms-2ms window. We decided to cut it down to 20 in order to free up a few pins to add an eeprom chip in future, but for now this video shows how you can send simple commands.
Only a few servos are used in this video because we're drawing power from the usb rail. As soon as more servos arrive from eBay, and we've got a 5V voltage regulator to allow an external power supply to be used, we'll post a new video showing loads of servos being used on one little board!
Here's a video from a few years ago (was it really that long ago?) showing a USB-based 12 channel servo controller. It forms the basis of the new, improved and soon-to-be-released 20 channel (yes, you heard right, a massive twenty independently controlled channels) servo controller with record and playback.
While this was a simple proof-of-concept, it's proved popular with viewers on YouTube, so we've decided to make it into a kit so anyone can have a play with it! With up to 20 independently controlled servos, eeprom that stores up to 30 minutes of animation, and playback with 1/50th second (20ms) accuracy, the new improved servo board is one to watch out for!