So a year ago I got my first ARDUINO UNO. I liked the reader boards that displayed scrolling messages. So I made my first matrix letter, then 10 chr long matrix, then movement. But I saw many problems. First I wanted an easy matrix to glue leds onto a glass plate. Then I wanted the fewest leds to glue, so my matrix is 5x5. Then a way to change the messages without a computer. Then to save the messages if loss of power. Then I added a clock and date display. All this had some sketches on line but they all ran in "x by y" format. Older tvs used scanning to create a picture, so I used this. My multiplexing is easy to understand and runs over 90 columns without loss of brightness or flicker. This is used in my cubes as a folded 64 column board. Lets start with column 0 to 4. 0 1 2 3 4 ----------- column o o row 0 o o row 1 o o o o row 2 represents letter "A" with forward space o o row 3 o o row 4 I just count 0 to 56 with a loop to activate each column. (56 is the width of the reader board, this can vary), and within the loop I use an array filled with the letters. The actual loop has only four commands that execute this instead of complicated math for a "x by y" coordinate display. (or more complicated in a "x by y by z" in a cube display) In a 5x5 matrix there are 32 combinations to display in a column. You can make up any you like, but mine uses 31,16,11,11,16 to make an A. 31 is a blank to allow spacing, 16= 3/4 line, 11=two spaced dots. I use "five" as a column counter to automatically register a complete letter. The use of a marker to locate the end of message(eom) makes things simple. I also cheated in using bytes insted of int, so storing the messages into the eeprom is easy. Arrays at first are complicated but the more you use arrays the more you like them. As with anything, there are good and bad features. The real use I want to inspire is to use scanning for multiplexing and to use leds on glass. Years ago, a brass clock displayed clock hands on glass and to see the hands floating and no attached driving gears was impressive. I am trying to do the same with the glass. Anyone can drill 360 holes in wood but a floating display on a glass sheet is very impressive. USER MENU SWITCHES My readers use a simple switch divider using 1k resistors. exit menu pause ent dn up lft rit -10 +10 all tied to A2 input ! ! ! ! ! ! ! ! ! ! o-wmw-o-wmw-o-wmw-o-wmw-o-wmw-o-wmw-o-wmw-o-wmw-o-wmw-o-wmw-----o b+ ! ground A2 input needs a 50k pull up resistor to b+ !=switch I made some readers that work with ir remotes. That is the confusing parts of my code. The readers are up in the air and using switches in the program mode was not an option. The remotes have an unusual drawback...they can be tripped by other remotes and sunlight. I tried extensive code filters to stop this but nothing worked. SWITCH HINTS: The switches have a window of operation tuned to 1k resistors. You can change to anything you like and use the ARDUINO Serial Monitor to confirm the values for such a window. Remember switch EXIT is always ground (0) and +10 is 9/10 of b+ otherwise the pullup resistor will always register an on condition. USING GLASS Glass like anything else costs too much. The dollar store sells 8.5 x 11 inch glass picture frames. This is as cheap as it comes. I use the 11 inch width and can get 56 columns. I cut the glass into about 2.5 x 11 displays. Sand the edges and clean. 11 inches is 56 columns 7ea 74hc595 + one for the rows (8 total). I tried regular graph paper with the glass on top. Then glued smd leds one at a time to the glass using the graph paper as a guide. The graph outlay always gave an odd number of leds so I use FRITZING to lay out the exact spacing. Now I have several master grids etched onto glass blanks to reference the alignment of the leds. If you just make one display, use a grid and nerves of steel. I use a water base glue to hold the leds to my master grid. Then when dry I put a small dab of slow cure epoxy on each led. Then I place a CLEAN glass display on top of the leds. Sort of like making a sandwich with the final display glass on top. I let this cure overnight and use running water to loosten the leds from the grid. So after securing 280 smd leds (solder pads out) on a display glass, the real fun begins. I have used 603, 0805, and 1206. 805 looks the best but 1206 are easy to work with. 603 have the best "glass see through" value but they are so hard to work with and most have a low mcd value. I use a mcd of 800+ but some colors perform well even with a low mcd. You just dont know until two weeks of work is finished. My first readers were hand wired to the 595s. Now I have a pc board attached to the glass. The pc has pin out pads for the columns of leds and I still hand wire the five rows. Column ZERO is on the left edge as you face the front of the glass. When you flip the glass and start to solder the column, ZERO is on your right. I made this mistake and tried to fix it by changing the code.... just resolder 55 wires!! glass display front view ic 74hc595 0123456789............. 56 row pins ------------------------------------------------------------ ! oooooooooooooooooooooooooooooooooooooooooooooooooooooo ! top pin 3 ! oooooooooooooooooooooooooooooooooooooooooooooooooooooo ! pin 4 ! oooooooooooooooooooooooooooooooooooooooooooooooooooooo ! pin 5 ! oooooooooooooooooooooooooooooooooooooooooooooooooooooo ! pin 6 ! oooooooooooooooooooooooooooooooooooooooooooooooooooooo ! btm pin 7 row ------------------------------------------------------------ If you wire this backward your display will be garbage, not backwards or mirrored. I connect all my display glass boards with a connector. This way I can trouble shoot them on a known system. The connector has 7 wires. ground, R.clock, R.data LATCH, C.clock, C.data, 5volts. I glue the 8 ea 595 to the glass either on a pc board or directly. Then start soldering...(about 4-6 hours). I found that some displays were too bright and needed to be dimmed. Using 1-4k resistors on pullup pins allowed this to work. If pins 13,10 go directly to ground, B+ voltage bleeds through the ic and dimming will not happen. Some displays need a various range of resistors and pin 10 is rather touchy causing quivers in the display with certain letters! I also buffered other pins with 300-1k res. The 7 pin connector is a real timesaver. Just plugging into a known good micro to see if the display is wired correctly gives you room to move and solder. Before final insertion into a box I clean the display with white gas to remove any resins and fingerprints. Using a soft paintbrush to clean and then use mild soap and hot water. Then use a compressor with blower to remove the water. If you let the water dry on the glass it will spot badly. Just one more test in the micro and you can mount the glass into your case. One last word about the display glass board, I have made over 29 displays. NOT EVER have I had any board work after I finished assembly. Somewhere there is a crossed wire, solder splash, bad pc run, even wired backwards. I even use extensive layout cards that help me assembel. So my scope and dective work finds the problem. I am telling you this because these are quite tedious to make. That is why I have seperated the display from the micro with a connector. So good luck, and dont give up. ARDUINO or MINI PRO I have some history with DBASE code and writing this in 'C' was not too hard. Having said this you will see the code is not so good. The code works so you can criticize all you like... change what you will. The pinouts are in the setup and I use a N-channel mosfit for the dimming. You can go directly to ground for the step and forgo the dimming, it won't cause problems with the code or circuit. I use the usb port to reprogram the ARDUINO whenever I make changes to the code. I have used the cheap rtc os1302 and proper loaded crystal. Every reader I ever made uses this clock and every reader gains about 1-3 minutes a month! I see a double clock pcb is becoming popular and soon I may use it. My rtc uses a 350-500mfd regular cap for backup. Many of the clocks retain info for 10 hours or more. So a brief electrical outage keeps the time going. A small 35-50mfd cap is required on the b+. Without this some displays will quiver and breakup. I can't say enough good about the mini-pros. They are cheap and now they have a usb port built in. Some even have crystals. I tried speeding up the speed of the micros to allow for longer and brighter displays. I monitored the intensity of the leds with optic resistors. I also monitored the speed with my digital scope. No matter what the speed, duration, and even changing the code there was NO change in intensity. Only on very short displays of 12 columns or less did the intensity change brighter. Likewise the longest display I have is 88 columns and if I feed this 100 columns as a parameter, the intensity stays the same. Only at 120 columns does the intensity change as well as flickering. Pretty good for a cheap and relatively slow micro. The only bad thing is the older mini-pros came with a usb ftdi board (blue). You just plugged the ftdi into the mini-pro edge connector and communication took place through the usb. I now know ALL of my ftdi boards are pirated and when I plugged them into windows 8.1, they no longer worked. I now have 5 dead boards. I use the cp2102 boards, but had to make adaptors. About a days work.... Thanks microsoft, you took care of those pesty knock-off ftdi. I hope this old tv engineer gave you some inspiration. Tubes are dead, digital is alive, and glass is good.