Featured Groups

Arduino BlinkyBall Project

I frequent a blog called hackaday.com which featured a project by "Nikolai", it was a 10cm LED ball that used shift registers. It seems like a really fun project to attempt but the cost of having the boards made & not having any experience sending eagle drawings to fab shops initially kept me from starting. After some planning I decided to make my own boards by hand although because of that choice I would have to scale up the design dimension wise & reduce the number of "slices".

I started off with rectangular 2200 hole PCB's from RadioShack and using cutting dykes I made half circle boards with a cutout in the center to to fit the processing module, lipo battery & charger. Each slice is comprised of 2 - 8-bit shift registers, 16 LED's & 16 resistors. There are 8 slices in total so there are 128 LED's, I use and Arduino nano 3.1 from makershed.com along with a lipo batter & charger available at sparkfun.com. In order to fit these slices together to form a sphere I used circular PCB's that I found at radioshack. I used a dremel to cut slits every 45-degrees for each of the slices to slide into, the package comes with 3 sizes & 2 of each, I used the middle size. I added a parallax mesmic 2125 accelerometer to the main board in the center to provide orientation to the sphere. You charge the LiPo batter through a USB mini port located in the center, charging takes 1 Hour approximately and lasts for 45 minutes.

I wanted to thank Nikolai for the insperation & Null Space Labs HackerSpace for their take on the project. I also wrote Charlie over there to get his input on the spiral animation & he was very nice & helpfull. I am going to post all of the code that I used in case anyone is interested. I wouldn't say that I am the most proficient programmer & am still learning so be kind.

charlieplexing might get this down to as few pins as are on an arduino with out the need of the registers and condensing the words down to a small equation would speed up your code. i am looking at the latter right now i know the first word is:

Thank you for the kind words. instructables actually did feature the project the very first day I uploaded if I remember correctly. I did daisy chain the shift registers so that the output of one slice feeds the next slice as it works its way around. The map function is actually built into the Arduino IDE, it allows you to scale values to the range you specify. It is a really usefull here is an example:

const int potPin = 0; //select the input pin for the potentiometer int ledPin = 13; //select the pin for the LED

digitalWrite(ledPin, HIGH); //turn the LedPin on delay(percent); //on time given by percent value digitalWrite(ledPin, LOW); //tun the ledPin off

}

You could use this command to map a potentiometer to an Electronic Speed Control in order to regulate the speed of a Brushless DC motor. Brushless motors are in everything and the ESC handles the complicated signaling. RC planes/cars/quadrocopters all use ESC to control their motors also in case your ever interested.

This instructable is MAGNIFICENT! Instructables didn't make this featured, and that makes me sad. They would probably feature you if you did this step by step instead of assuming people know how all this stuff works. But step by step is overrated! You made this instructable for the people who are knowledgeable about electronics. not the noobies (sorry noobies)

I would like to again commend you on your awesome instructable. Your code looks very elegant.

One question: Did you use the daisy-chain method for this project? I see you mentioned it in a comment below, but you didn't explicitly state that you are using it.

Also: It looks like you are using a function called "map". Is this built into the Arduino IDE or is it user-defined?Because It doesn't look like it is defined.

I have used the charlieplexing method for LED control in the past. You would be able to turn on all the LED's at once but the problem is it would be very complicated to wire something like this in that way. Using 74HC595 shift-registers makes things easy because you can daisy chain them together connecting the output of one to the input of the next "slice". You would need 16 pins plus another pin for every "layer" you have if you charlieplexed the leds, using shift registers only requires using 3 pins on your micro-controller. Also you would have to run all 16+ wires to each slice adding a good deal of complexity to your wiring. As far as the speed of the code above it is so fast you have to add the delay otherwise, in the stored animations, it all pretty much happens in an instant. I imagine you could run the accelerometer function without delay but I did not test that. I appreciate you'lls interest in this project & have fun.