TIL305 on top of ATtiny2313. |
The firmware will scan each dot, one by one, and turn ON those needed to form a predefined pattern. The scanning algorithm will be: column 1 / row 1, column 1 / row 2, ... column 1 / row 7, column 2 / row 1, and so on.
As with every LED a current limiting resistor is needed. They will be installed on the five anode lines ("columns") rather than on the 7 cathodes ("rows"). But how about using the pull-up resistor embedded in most Atmel microcontrollers? According to the datasheet it is 20 kohm typical, or more. At 5 V supply that means very little current through a red LED, but worth a try. How to implement it? When a column is active the corresponding pin will be configured as INPUT_PULLUP (in Arduino terms): this will allow some current to flow through the pin to the dot activated by pulling low the corresponding row. All other four columns will be set as high impedance INPUT. The Atmel datasheet does not mention how fast the pullup resistor can be switched in and out, so this is another thing to learn from this project.