Intro: LED Poster With ATtiny45 Controller
My highschool has a program where students can tutor other students. I got involved as a tutee, then a peer tutor. Everyone I've taught has found the program really helpful, so I decided to promote the program even further by building an LED poster!
To control the flashing of the LEDs, this poster has an ATtiny45 chip as the controller. The circuit can be powered with a battery or a plug, as long as the input is close to 12 volts. I built this poster with the intention of using a battery, but I found that the current draw was too high, and the battery had to be recharged every other day.
The poster itself is made out of dollar-tree foam-board. I found that painting it wasn't the best idea, but I did perfect making 3d text out of it. I'll also touch on some building techniques in this Instructable.
Step 1: Materials:
Materials/Components for the circuit:
- 4x 10k ohm resistors
- 3x N-Channel Mostfets (FQP30N06L)
- Arduino Uno (for programming)
- Pushbutton (optional, used for resetting)
- 5V voltage regulator (L7805)
- Pin Headers (male and female)
- 2 contact screw terminal (for battery input)
- Perfboard or breadboard
- 3 color led strip
- 2-3 sheets of foam-board (depending on what paint you use)
- Neon paint
- Plenty of paper
- Box cutter
- Spray Adhesive
- Printer (don't worry, you won't have to take it apart!)
Step 2: Building the Circuit
The circuit itself is very simple. Three N-Channel MOSFETs control each color of the LED strip. The 10k ohm resistors between the gate and source drain any remaining charge left at the gate, which keeps the MOSFET off when there is no input.
The LEDs get their power from the 12 volt supply, but the ATtiny45 gets its power from the 5v voltage regulator. There's also a resistor and button connected to the reset pin. Having a high reset pin means the chip will execute code. Bringing the pin low (by pushing the button) would reset the chip, which is useful when you want to begin your sketch at a certain time during the day.
I tested this entire circuit on a breadboard before soldering it on a perfboard. I used female headers to connect to the programmer, the led strip, and to provide power. A smaller female header was used to hold the ATtiny. I also tried to keep the circuit as flat as possible, because I knew I was going to have to hide it later on.
Step 3: Making a Cool Background
I envisioned a very colorful poster, as well as very bright LEDs. I decided to use neon acrylic paint on a sheet of foam-board for the background. I used masking tape to get the lines as straight as possible. My inspiration for the background came from internet memes.
I applied several layers of paint before I noticed that the paper backing was peeling off. Turns out, this foam-board doesn't like to be painted with heavy applications, as it soaks up all the water from the paint like a sponge. I decided to peel off the top layer that I had painted, and use some spray adhesive to transfer it onto another sheet of foam-board. I then used the previous sheet for text spacers (see next step)
Step 4: Decorating the Poster
Again, following the meme style, I decided to use the impact font for my poster's title. I made some plans in Photoshop, then printed out the all of the words. I then cut them all out, which took a really long time.
I wanted the title to stand out more than anything else, so I cut the title out of paper, and out of foam-board. I glued the two layers together with the spray adhesive, then made two square spacers out of foam-board and glued those on with hotglue. These spacers give the impression that the text is floating, which looks really cool!
The text underneath the title was a bit simpler, as it required only a paper layer, and only one foam spacer. As before, the two were glued together with spray adhesive.
After I made all of the words, I glued them on, one by one, with hotglue. By stretching the painters tape across the sign, I was able to align the words, and keep them from being crooked.
I also made an arrow pointing to the left in the exact same way, but I did something different with the speech bubble in the bottom right...
Step 5: Placing LED Lights
Now that I was sure this poster was "the one", I decided to apply the LED strips around the outside by cutting them length, then sticking them on with the adhesive backing. Since I severed the connections when I cut the LED strip, I needed to solder them back together (see above picture). My LED strip had 3 connections: +, blue -, red -, and green -. I had to solder those connections from one strip to the next until I had connected all LED strips together. I left one of the bottom right contacts alone, and made a longer connector instead. This connector will power the LEDs.
Step 6: Hiding the Electronics
At this point I tested the circuit, battery, and LED's by hooking it up and letting it run. Everything worked perfectly, so I decided to hide the battery and controller to make the poster seem more presentable.
The "speech bubble" in the bottom right had plenty of space, so I decided to hide everything there. I made a 7" x 3" x 1" box using the leftover foam-board, then hotglued it below the speech bubble. I made a little notch for the wires to get through, then glued two magnets on top and bottom of the box. These two magnets are supposed to hold the lid, so I implanted two dimes into the lid to make it magnetic. The 20 cent lid comes on and off easily, but is capable of holding the electronics inside, even when inverted.
Step 7: Programming/Final Touches
The original plan was to power the sign with a battery, but that meant the sign couldn't be running 24/7. I devised a way to run the LEDs for a certain amount of time, then turn off when classes were in session. =
The ATtiny can keep time (in milliseconds), since the chip has been running. I needed to run a function for exactly seven minutes (the time between classes), so I saved the current time in an unsigned long at the beginning of the function. The led's were then instructed to flash for less than seven minutes. The sketch then checks if 7 minutes has passed (420000 milliseconds). If 7 minutes has not passed yet, the ATtiny calculates the difference, then the delay stops execution until seven minutes has passed.
I configured delays between the 7 minute loops to match the school's bell. I also had longer 42 minute loop for lunch. At the end of the loop, it would delay forever. So, all I had to do was come to school each day, press the reset button, and the sign would blink!
For setting up the Arduino Uno to program, watch the video in the introduction or check out this article by High-Low Tech: http://highlowtech.org/?p=1695
And that's all there is to it! You can find the sketch I used below: