FiveSquare is a PIC16F628/16F648 project that uses twenty five LEDs arranged in a five-by-five square. The LEDs are mounted on a laser-cut case, which also holds the circuit board. The PIC application animates the LED display.
This project uses the Simple LED Animation Kit (SLAK post or page) with red/green LEDs arranged in a triangle.
The three sides of the triangle are connected in parallel. Even though there are 18 bicolor LEDs (36 individual LED elements), the PIC16f628A is controlling only 6 bicolor LEDs (12 individual elements) and these are duplicated around the triangle.
This is the first project where I tried using bicolor LEDs. Since the SLAK platform drives at most 12 LEDs, this ends up with only 6 bicolor LEDs. And although running animations on six red/yellow/green LEDs is nice, I thought it would be more interesting to find some other arrangement. While looking around for inspiration I saw a triangle design that was made of three parallelograms. I realized that this would be a great shape for the LEDs.
Between the triangular arrangement, the red, green, and yellow color possibilities, and the transitions, it is possible to create a large number of different animations. In the current code, the animation sequence takes 10 minutes to repeat. For the video I created a build that runs each animation sequence only twice, so that the video is only 2 minutes long.
OG Style built his own version of Crossbar (post or page). I really like the openness of the 4x4 matrix. Also, since he used copper wires instead of steel, he won't have the problem I have where the solder breaks away after awhile.
This project uses the Simple LED Animation Kit (SLAK post or page) with the LEDs arranged in a circle around the PIC16F628A. I decided to do this project after picking up some red SMD LEDs at HSC in Santa Clara, CA, last week. Although the only difference from the basic SLAK is the board design, I find that this layout to be have the potential to be more useful. It could easily be a medallion on a necklace. If I had blue LEDs this would go well in an IronMan Reactor Core package.
This board only needs 4.5V and in the video is running on only 3 AA batteries. You can see that the PIC is still in a socket.
If anyone is interested, I can easily change the SMD parts to thru-hole parts and post an updated board.
I am still refining the current set of animations for both a linear (straight line) arrangement and a circular arrange. I need to tailor the ones running on this board for a circle only. OK, so that sounds a little cryptic. What I really mean is that I want to take out the ones that don't look good to me. And maybe add some more. By the way, each animation has a name.
One of the next things on my list is to take this same arrangement and use three different LED colors, four red, four green, and four blue or maybe yellow. Then I will spend some time creating animations that highlight the color possibilities.
The simple LED animation kit is designed to control up to twelve individual LEDs or groups of LEDs with a series of different animations using a PIC16F628A. The goal is to provide flexibility in selecting LEDs and creating a lighting arrangement.
The features are
Control of 1 to 12 LEDs
Repeating animations sequences
LEDs can be individual LEDs or groups of LEDs
Transitions can be immediate (no transition), gradual, or have a history (aka 'NightRider')
Wiring can be common anode or common cathode
LEDs with a voltage drop greater than 5v are supported
Schematics for wall-wart designs and for battery designs
Schematics for all-in-one designs (LEDs on the PCB) or LED off-board designs
Many pre-programmed animations designed for different configurations (circle of LEDs, line of LEDs, bi-color LEDs)
The video shows five different configurations:
a 3x3 grid ("Domicile"),
a straight line of twelve (two are shown: one is done in red, the other in green)
a circle of twelve,
three sets of six bi-color LEDs arranged in a triangle ("NewDimension"),
a multi-segment front panel LED from an STB (two are shown: one is green and the other is blue) ("Roundabout")
Each of these use a different set of animations, where each animation is created or tailored to the count, color, and arrangement of the LEDs. Also, all of these different projects are described later on this page, with pictures of the front and back of most of the boards.
Code, schematics, and PCB designs are provided on the web page: SLAK page.
For the Crossbar project, I had these design goals:
To have a main routine which would load frame data and update the display with this data until it was time to load the next frame
To be able to think of an animation as a single entity, like a movie clip. This meant that I had to have a single routine to access all the data for one animation. This would allow me to easily rearrange the animations.
To be able to specify different speeds, repeat counts, and coding styles for the different animations.
To be able to access all the animation data using a single call and some variables (animation index, frame number, etc)
To not have to specify sizes or counts for any list
Overall I wanted the flexibility to modify, add, or resequence animations without having to touch the main loop, and I wanted all of the control and logic to be centrally located.
These goals resulted in a routine called AnimationDispatch. Here is the routine from Crossbar (with most of the animations removed for brevity).
A few years ago, when I finally got around to learning PIC programming, I decided to I wanted to create something that would run LED animations on a small 4x4 matrix. I liked the idea of the small 4x4 size because I was starting with a PIC 16F628A. This chip can not directly control the 16 lines necessary for an 8x8 matrix (unless you get fancy). Also the 4x4 arrangement just seemed easier to work with in terms of coming up with different patterns. And the patterns would require less memory. One frame on a 4x4 matrix is 16bits or just 2 bytes, but on an 8x8 matrix, a frame would require 8 bytes.
I also knew that I did not want to leave this on my workbench. Instead, I wanted it somewhere else in the house. Somewhere where I could see it often and where anyone visiting might notice it. To me this meant that it couldn't just be on a PC board or a breadboard (where most of my projects are). I got the idea of building a small frame with horizontal and vertical bars. These bars would be the rows and colors of the matrix, and I would solder an LED at the intersection of each one. This has worked reasonable well. The problem, I found, is that steel is not the best metal for this since it has rusted slightly and has trouble holding onto the solder. But still, it has been running for about five years. Originally it was in the dining room, but, since we moved about two years ago, it has been in the kitchen, on a small shelf. Most people don't comment on it, a few ask about it, and one thought it was reading her mind.
Once I had it had it built, I then spent a lot of time coming up with as many different animations as I could think of. This was really fun. The video shows almost all of them. Some of the animations are described in the code frame-by-frame, as you might imagine. But for others, I added code that would allow me just to list the LEDs by number that would light up in sequence. These path-style animations saved a lot of memory because instead of needing two bytes to describe a frame, I only needed half a byte to specify the next LED in the path. There are also some animations described procedurally (for lack of a better term). For these animations, each step is described as an action, such as invert frame or invert center. This method was my original plan, but I found that it was not as interesting as I envisioned, and the code for all of the procedures took up too much memory. I will talk in detail about the theory behind each of these animation styles in a later post.
One of the things you might notice in the picture of the back is the strange choice of transistors. This is what happens when you don't know what you are doing. I hope since then I've learned a little more about the difference between PNP and NPN.
Here are pictures of the front, back, and some detail. I also learned that there is a big difference between thinking of building a small square frame and actually building a frame that is square.
Also visit TheVaporTrail website and the Crossbar project page, where you can download the code and some Eagle schematics,
Akihabara is an electronics heaven for hackers, builders, makers, you name it. They sell everything. It goes on for blocks. This picture (and the the big picture) is just one small part of one small seller. There are hundreds of sellers. Anything you can think of you can find. I can't wait to go back.
This is a video of the projects on my workbench. This is a preview of what I'll be posting about in the coming weeks. Also, I will be keeping schematics, diagrams, PC boards, and source code on the upcoming TheVaporTrail website.
All but one of the projects use the PIC16F628A microcontroller. The other (the circular arrangement of LEDs in the lower right) I started twenty years ago and still haven't finished, and uses a 555 timer and TTL chips, including a 4-bit up/down counter.
I have always had a fascination with LEDs, those little colorful lights that have now found their way into everything. I picked up a bunch of very small ones (but not "surface mount") and then had to think of something to do with them. I thought it would interesting to make them into a free standing double-spiral. Click on the picture or visit the Illuminations photo album to see the entire double spiral. The entire double spiral is about 14 inches tall. To get the curves and LED spacing accurate enough for my liking I wrote a program to generate a bitmap graphic. This way I could use equations for the spiral instead of trying to draw it freehand or even use a drawing package on the computer. Also using my own program allowed me to make adjustments to the design spacing quicker (that is, to adjust the parameters to the equations).
Recent Comments