I’ve also got an Arduino, some motor drivers, a 9DOF sensor, and a mess of wires. I’ll probably need at least one more trip to Lee’s for a few more bits and bobs and then I’ll be able to assemble the first test rig.
Would you like to know more? Contact me or comment below.
These babies are run from an Arduino which means they can be made to react to their environment. Want to add a clapper? Change the colors based on who is in the room? Show the traffic on your WAN as a decibel meter? Strips can be cut and soldered to make different patterns, or flexed in different directions to wrap around shapes.
$300+S&H. Comes with 5m strip, 12v5a power supply, Arduino UNO, wiring diagram, and software (via download). Custom programming services extra. Contact me and lets light up your life.
Malcolm, a talented local artist and director of the New Forms Festival came to me and asked if I could make a camera gimbal. Can I ever! I struggled with simplifying the old design for several days before deciding I needed to go back and do my homework. Then I remembered this video
The original developers were balancing a robot on a ball. …but notice the first 15 seconds when the robot is upside down and just turning the ball? That’s exactly what I’m looking for, and almost all the parts are off the shelf. So I went back to the drawing board and came up with this
The ball in the center is a glass lamp shade. I’m going to add an X-shaped camera mount inside the globe. The Mecanum wheels can turn the globe any way I choose. I’m going to put a little 9DOF sensor inside so the Arduino can keep track of the ball’s orientation and adjust it accordingly.
Parts have been ordered, delivery is pending, and this thing should start being assembled in the next few days.
Also, I’m working a little bit every week to improve the website. Is it getting better? You tell me.
On the whole I’m feeling very good about today. Here’s a little before and after. Click for a larger version.
The image on the left is the result after 20 minutes of calculating in Java with a “Greedy” TSP solution. Once it finishes generating the lines it saves it all to a gcode file. I wrote this in about two hours with long breaks to think while I pulled weeds and mowed. It’s brutally stupid code that works. It’s not ready for production yet because it doesn’t meet my standards in two important ways:
Lines cross over each other.
I need to store information about every single possible pair of points to run my algorithm. This eats a all the memory Java has access to, and forces me to resize images to ~250 pixels2.
Here is evidence of a solution from MakerBlock that doesn’t have either of these problems. I haven’t deciphered the python to figure out what they’re doing….yet. I’d like to be able to convert huge pictures in a few clicks with a nice progress bar.
On a less happy note, my Macbook Pro has finally given up the ghost and I can’t afford to replace it. My next development machine will probably be a Mac and I’ll be working a lot more in Java. I’m really falling in love with it’s many (many) time saving features.
Have you got pseudocode for a better TSP solver? Please share in the comments!
A big challenge with the drawbot is that it’s still really hard to use. Wouldn’t it be great if you could just load a picture and click start? Well soon you will.
Here’s the plan:
- load a picture (done)
- make it greyscale (done)
- dither it to a set of points (done)
- connect the dots in a single line aka the traveling salesman problem.
- generate gcode
- send gcode to robot
Should I give people the power to change the picture size before starting OR should the picture automatically fit the picture to the drawing area (without stretching)?
I had it stuck in my head that I needed to use digital pins to read the value of the switches. On Thursday I downloaded the Adafruit Motor Shield EAGLE schematic and layout files and started reading, only to discover that the empty holes on one corner of the board are intended for analog sensors. In about an hour I got the switches and the auto-calibration code written & tested. Victory!
To add the limit switches to your Drawbot, you will need:
some female headers
a soldering iron
two limit switches
2 two-foot lengths of wire in red
2 two-foot lengths of wire in black
2 two-foot lengths of wire in green
The headers I got came in a 20-pack. I only needed the sets of three so i cut with some pliers and filed them down.
Unplug your Drawbot completely. Remove the shield from the Arduino. You may find it easier to remove the stepper wires, too.
In one corner of the motor shield you will see white letters that say “+5/GND/A0-5″. You want to solder one set of pins into each of the three holes on the right. I use a set of helping hands to hold the board sideways, then placed the +5 triplet in first. After soldering it in place I repeated the process with the GND and then the A3/A4/A5 pins.
I soldered one red, one black, and one green wire to a switch. The green is soldered to the C pin that connects to A5. The red is soldered to NC which is connected to +5V. The black is soldered to NO which is connected to GND. This is now my right limit switch.
I soldered one red, one black, and one green wire to the other switch. The green is soldered to the C pin that connects to A3. The red is soldered to NC which is connected to +5V. The black is soldered to NO which is connected to GND. This is now my left limit switch.
Grab a copy of the experimental branch from Github.
Test your limit switch to make sure you solder it in the correct way using the sketch in the download package @ ./arduino/test_switch/test_switch.ino. The limit switches are wired as “on” by default – when the switch is hit they turn off and the machine thinks it has made contact. If you have no switch or a bad connection the machine will think you are touching the switch already. You should only see one message from each switch when they are pressed or released. Any more and the switches are “debouncing” which will require a breadboard and some 10k resistors to fix.
Upload the new Drawbot code (./Arduino/arduino.ino) code to your Drawbot.
Either
Type “HOME;” in the serial window or
Choose “HOME” in the Java app
Drawbot motors should begin to move the plotter towards the left motor. When the left limit switch is touched it will reverse direction and move until it touches the right limit switch. Now the robot knows exactly how much string has been released and it can move the plotter to the (0,0) position automatically.