This is a tiny device to display animations and short messages. It consists of three components only and is really easy to build. And fun to watch.

If you don't feel like gathering all stuff yourself, you can buy a kit with all needed parts and a pre-programmed microcontroller at the Tinker Store.

Step 1: Parts and Tools

Only four parts needed:

  • ATTINY2313V-10PU, microcontroller, 2 k flash RAM, Digikey
  • LEDMS88R, 8 * 8 LED matrix, Futurlec
  • Battery holder with switch for two AA batteries, Digikey
  • 2 AA batteries or rechargeables

The ATtiny2313V is a microcontroller, that runs from 5.5 down to 1.8 Volt. So its easy to power it from two AA cells.
And as you see, there are no resistors. Normally you would need a resistor to limit the current through the LEDs. We are a bit adventurous here and attach the LED matrix the Evil-Mad-Scientist-way directly to the controller. The controller enables only one row at a time and cycles thru all rows that fast, that a steady image emerges.
With two AA batteries the display ran over two weeks non-stop. Battery life depends a bit on how much pixels are lit at the same time.

To build it, you need:

  • Soldering iron and solder
  • Pliers
  • Wire stripper or knife
  • Alligator clips
  • Third hand (optional)

If you want to program your own animations and messages, you will need an AVR programmer as well.
<p>Congratulations for this very beautiful and fun build. This goes to my Christmas tree for sure The code works without any modification ONLY with a common cathode matrix. You will have to change it to make it work with a common anode matrix. At first i saw the original schematic and i used a common anode matrix but it didn't work. I was too lazy to modify the code so i've tried a common cathode and voila! My led matrix display is KWM-R30881CUYB which is a common cathode.</p>
<p>Nice , I edited font.h from tomas123 so i have Uppercase and Lowercase font</p><p>Thx</p>
<p>Hi'</p><p> I'm trying to program the Attiny from a arduino uno, and i cant read the code, i</p><p>was woundering if you could send me the code for the attiny than runs the led matrix. My Email is Mojemdadi@gmail.com</p>
You can't program it with arduino because arduino has atmega and this is an attiny and there pins are different
<p>the easier it is to use a timer on EBAY USBASP you also find</p><p>you download the file to the programmer, I used v.1.72 progisp under W7 64BIT </p><p>and you load the matrix.hex file (which is below 64pixels.zip) </p><p>you throw progisp </p><p>You select ATtiny2313 (chip select in the top left) </p><p>Clicking on flash load (top right to load the hex file) </p><p>Custom flash and then write checks then flash </p><p>Then you have to program the fuses to 4MHz oscillator and low voltage 1.8V </p><p>Clicking on the 3-point (to the right of Auto)and you put CKDIV8 1 </p><p>LowValue E2 </p><p>HighValue to DD </p><p>and you click on write</p>
<p>Hi'</p><p>Many thanks for this instructable :)</p><p>i made it with common anode matrix ,I just downloaded the original HEX file,after flashing 2313, display was weird,</p><p>I changed the order of the connections on 2313 and everything is OK now</p>
Hello Alex - thanks for this great idea<br>I rewrote your program to get significant more space for dozens of patterns.<br>Further I changed to a better readable (larger) 5x7 font.<br><br>I also reworked the nice pattern generator as excel sheet from https://www.instructables.com/id/LED-Scolling-Dot-Matrix-Font-Graphics-Generator-/<br>Now you can copy the code from excel sheet directly in your program.<br><br>My ATTINY2313 without V goes down until 1,8V @ 4Mhz.<br><br>PS: Your nice LEDMS88R with rectable LED are hard to purchase in Germany ;-)<br>I used a cheap 8x8 32mm LED Matrix with the same pin layout (!)<br>Google for: 12088AMR <br>he send from Poland to all Europe<br><br>Tomas<br>
how to generate the makefile, I'm a newbie: P thanks<br>
I am a beginner, but I can not properly display characters.I noticed that:<br> * NFM-12883 common anode |<br> * A0B5B4D4B2D3D1D0 +-----+<br> * PD5 o o o o o o o o | |<br> * PA1 o o o o o o o o _+_ |<br> * PB0 o o o o o o o o \ / |<br> * PD2 o o o o o o o o _V_ |<br> * PB7 o o o o o o o o | |<br> * PB1 o o o o o o o o ---+-----C---<br> * PB6 o o o o o o o o |<br> * PB3 o o o o o o o o<br> *<br>But My LED matrix is ( See the pic)<br>Please teach me, how to modify it ??? Thanks you very much.
Hey , thanks for your nice work ! :-)<br><br>I bought your Kit and a cheap USB ISP and worked the first time with Microcontrollers.Awesome !<br><br>But I still don`t understand how to make my own pictures and change the scroll or repeat animation...:how to change pixels? the signs on the right to hex!?!?!<br> 0x18, // ___XX___<br> 0x3C, // __XXXX__<br> 0x7E, // _XXXXXX_<br><br>i wanna start with the first animation,not scrolled,then change the picture/animation....a hint would be nice :-)<br>bless,maomakmaa
Ok, thanks for all the treads and comments. I have so much fun with this, my brains need more eeprom!!<br>I flashed a couple of 2313 and succesfully burnt the right fuses but now I am interested in making some PCBs cause I dont like soldering chips directly to the matrix.<br>what is the next step? A circuit diagram would be awesome at this point.<br><br>Again( I'm such a geekou) thanks for some help in my process
would it effect anything if i use a socket?
No, that would work.
im afraid i might burn out the chip
followup: <br>This is a christmas card with ATTINY2313 and 8x8 Matrix LED<br>here a video from 64pixels with all patterns<br>http://www.youtube.com/watch?v=sncy6wHNnMc<br>source code below<br>----------------------------------------<br>AVR Memory Usage<br>----------------<br>Device: attiny2313<br><br>Program: 2034 bytes (99.3% Full)<br>(.text + .data + .bootloader)<br><br>Data: 18 bytes (14.1% Full)<br>(.data + .bss + .noinit)<br>
Wow, that's great, really nice animations. Thanks for sharing!
what are pins 1 and 11 usually used for?
Pin 1 is used to reset the chip. Pin 11 can be used as input or output.
ok. thanks.
where do you get the stuff to program it?<br />
i got mine from adafuit industries.i think mine is a kit, it hasnt come in yet but its only 11.49 if u use first class mail for shipping
Is there any way that you could run the 64 pixels on an arduino?
Not as is. Search for &quot;arduino matrix&quot; to see some examples how to use an LED matrix. Then migrate the code for animation and messages. Cheers, Alex
I downloaded your c file and followed your comments in the c file to change the messages.&nbsp; However, when the new hex file is written to the microcontroller it still contains the messages of the original c file.&nbsp; Are there additional steps I am missing?<br />
AVR Studio is the easiest way. After making changes to the c file save then rebuild all. Then flash with the new hex file. <br />
I assume, you compiled the c file ...<br />
i did. i used programmers notepad.&nbsp; Does the .lss file also need to be edited?<br />
I figured out the problem. Just a little makefile snaffu.&nbsp; It's my first time with WinAVR. <br /> <br /> Can editing the animations be done in a similar matter? <br /> Also the text scrolls right to left and animations move left to right.&nbsp; Is it possible to have animations move from top to bottom or vice versa?<br />
Great!<br /> Yes, you can have animations going from top to bottom. Take a look at the scroll_animation method. You have to replace the x with y direction.<br />
mine still doesnt work, but i just decided to look at the code, and can anyone clear this up for me?<br /> i really thought LOLWTF?!<br /> <br /> this was in the code from line 32~43<br /> <br /> const prog_char PROGMEM message_00[] PROGMEM = &quot;&nbsp;&nbsp; WTF!?! &quot;;<br /> const prog_char PROGMEM message_01[] PROGMEM = &quot;&nbsp;&nbsp; I AM NO BOMB! &quot;;<br /> const prog_char PROGMEM message_02[] PROGMEM = &quot;&nbsp;&nbsp; 5&nbsp;&nbsp; 4&nbsp;&nbsp; 3&nbsp;&nbsp; 2&nbsp;&nbsp; 1&nbsp; ...&nbsp; BOOM! &quot;;<br /> const prog_char PROGMEM message_03[] PROGMEM = &quot;&nbsp;&nbsp; I'M SORRY DAVE, I'M AFRAID I CAN'T DO THAT.&nbsp; &quot;;<br /> const prog_char PROGMEM message_04[] PROGMEM = &quot;&nbsp;&nbsp; NOW BYE ME A SOLDERING STATION &quot;;<br /> const prog_char PROGMEM message_05[] PROGMEM = &quot;&nbsp;&nbsp; MAKE STUFF &quot;;<br /> const prog_char PROGMEM message_06[] PROGMEM = &quot;&nbsp;&nbsp; IF YOU CAN'T OPEN IT, YOU DON'T OWN IT &quot;;<br /> const prog_char PROGMEM message_07[] PROGMEM = &quot;&nbsp;&nbsp; 1337 3L3X7RON!C5 !1!! &quot;;<br /> const prog_char PROGMEM message_08[] PROGMEM = &quot;&nbsp;&nbsp; MY KUNG FU IS BETTER THAN YOURS &quot;;<br /> const prog_char PROGMEM message_09[] PROGMEM = &quot;&nbsp;&nbsp; SUDO MAKE ME A SANDWICH &quot;;<br /> const prog_char PROGMEM message_10[] PROGMEM = &quot;&nbsp;&nbsp; ZOMBIES AHEAD &quot;;<br /> const prog_char PROGMEM message_11[] PROGMEM = &quot;&nbsp;&nbsp; HTTP://TINKERLOG.COM &quot;;<br /> <br /> <br /> what does this add to the code? i just cant think of anything...<br /> <br /> btw, no wonder nearly no version can make this program small enough to fit inside the attiny2313...<br />
These are the different messages that get printed on the display.<br /> <br /> If the compiled hex file is too big for the tiny2313, try the other compiler version as noted on step 3.<br /> <br /> Cheers,<br /> Alex<br />
its not to big, but i've heard about people getting that...<br /> <br /> but you mean that those message's get displayed?<br />
Yes, they are displayed.<br />
Hmmm when I build the C file I get 4 warnings and no errors, and I just can't get this to work right. I programed the chip with the code anyway and all I get is lots of leds lighting and going off at once. <br /> <br /> What could be the prob? I'm using AVR Studio 4 for a compiler. <br /> <br /> I also tryed to just use the step 2 hex file to the chip and same. just lots of random flashes, I got the 64 LED matrix from furloc in your link, is there anything I need to do with the code?..<br />
Please check if the pinout of the matrix is the same. Also check if you have the right orientation of the matrix.<br /> And maybe you can try WinAVR compiler.<br />
&nbsp;can anyone post a link for the .hex file, when I try and build the .hex from the .c file I get 5 errors and I'm not good at C yet to know how to fix the errors.<br /> <br /> PLEASE....<br />
Here you go, I added the hex file to step 2.<br /> Cheers,<br /> Alex<br />
im making one with protoboard, since my dot matrix is different (size, other lay-out)<br /> and ive decided to add a standard 6pin header for reprogramming ease.<br /> just 2 quick questions:<br /> <br /> when programming, can i use the 5V coming from a USB port. i dont think so, becouse itl burn out the matrix (i think)<br /> so, instead can i just turn it on and program it? (with the 3V from 2 1.5V batteries)<br /> <br /> and, ive looked at the datasheets, and it looks like i have a common cathode, but im not sure (always get confused about what cathode/anode is XD)<br /> so, heres the <a href="http://www2.produktinfo.conrad.com/datenblaetter/150000-174999/156380-da-01-en-LED_Anzeige_M2881GWA.pdf" rel="nofollow">pdf</a> can someone tell me if it is indeed common cathode, and if so, how should i alter the code?<br /> btw, i have reversed the attiny (so where pin1 normally would be is now pin11) to fix this problem (i believe it would anyway) but im not sure if that would work...<br />
Yes, you would probably burn the matrix. You could hook it up with current limiting resistors on a breadboard for programming.<br /> The matrix looks like a common anode one.<br /> Cheers,<br /> Alex<br />
and if im going to use batteries for programming? then there wouldnt be enough power to burn it right?<br /> and if i needed the resistors in combo with the 5V, how much would those resistors be needed to be?<br /> <br /> so, for the common anode part, i dont need to change anything? and the flipping i did with the chip works?<br />
If you want to use batteries, be sure that you don't connect VCC of the programmer to (+) of the batteries.<br /> If you power the circuit with 5V, 220 Ohm should be ok.<br /> There are parts in the code that deal with common anode or common cathode. Just comment and uncomment the relevant part. You don't need to flip the controller.<br />
and if i already flipped the controller?<br /> <br /> and for the programmer part, im using one that connects to my printer port, but i added an USB cable for 5V, but i dont need to plug that in ;)<br /> il just add a 220ohm resistor just in case (that goes in front off the VCC pin to the programmer port right?)<br />
im gonna flip it back and program it, takes less time :D<br />
the 220 Ohm resistor is a current limiting resistor for the matrix, not for the programmer. I haven't used the parallel port as programmer, so can not help you there.<br />
gonna program it now wish me luck :)<br />
programmer's notepad is complaining about &quot;make.exe: *** No rule to make target `program'.&nbsp; Stop.&quot;<br /> is there a .hex file by any chance?<br />
Have you tried &quot;make flash&quot;?<br />
somehow, it worked (while it kept saying it didnt) so i got a .hex file<br /> it failed going into the chip, but i found out that there where 2 wires (miso and mosi) switched.<br /> so, as soon as i get that right, it should work XD<br />
well, i got the .hex, the programmer works (dont know bout the ISP version, i think i burned the attiny) but now when i program it trough AVRdude (that old version!) i get the error:<br /> <br /> avrdude: verifying ...<br /> avrdude: verification error, first mismatch at byte 0x0000<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x67&nbsp; != 0xff<br /> avrdude:verification error; content mismatch<br /> <br /> avrdude: safemode: fuses OK<br /> <br /> avrdude done. &nbsp;&nbsp; thank you<br /> <br /> <br /> also, a couple of tries before that (no changes in wiring/code whatsoever) i got some error about fuses (after that error described above)<br /> <br /> avrdude: safemode: lfuse changed! was 64, and is now ff<br /> would you like this fuse to be changed back?[y/n]&nbsp; (i pressed Y here)<br /> avrdude: and COULD&nbsp;NOT be changed<br /> avrdude: safemode: hfuse changed! was df, and is now&nbsp; ff<br /> would you like this fuse to be changed back?[y/n]&nbsp; (i pressed Y here also)<br /> avrdude: and COULD&nbsp;NOT be changed<br /> avrdude: safemode: fuses not recovered, sorry<br /> <br /> avrdude&nbsp; done.&nbsp; thank you<br /> <br /> <br /> ive tried something like 5 times, only had that fuse error once and not since, and that other error about verification keeps coming back...<br /> <br /> is the program loaded succesfully and AVRdude just could read the program off the chip? or will it not work?<br />
Hmm, hard to say. Maybe a timing issue if it is not reproducable.<br /> If you had one clean run, setting fuses and flashing, without any errors, I would say, it's ok. <br /> If avrdude complains about verify errors, you can not be _sure_ that it worked. <br /> If you don't succeed, with always one or the other step failing I would try to troubleshoot the programmer.<br />

About This Instructable




More by alex_weber:64pixels Arduino XMAS hitcounter Synchronizing Fireflies 
Add instructable to: