De bijzondere uitdaging was het beperken van de codegrootte om te passen in de 2 kB van het geheugen in de Attiny2313. Het werkte door op te slaan van de matrix lettertype karakter in de geheugenruimte van het programma PROGMEM en met behulp van rechtstreekse manipulatie van de haven in combinatie met bitsgewijze wiskunde activiteiten.
De pin toewijzing met de Kingbright TC07-11EWA 5 x 7 LED matrix is:
Attiny2313 poort pin LED matrix pin (470 Ohm resistor)
PB0 12 6 Row 7
PB1 13 5 Row 6
PB2 14 4 Row 5
PB3 15 9 Row 4
PB4 16 2 Row 3
PB5 17 11 Row 2
PB6 18 12 Row 1
PD0 2 1 Column 1
PD1 3 3 Column 2
Pd2 6 10 kolom 3
PD3 7 7 Column 4
PD4 8 8 Column 5
Pb5 (pin 9) is de invoer PIN-code voor de knop. Druk op de knop zal verbinden met de knop pin GND.
De voeding is via een 7805 lineaire regulator met twee 100 nF condensatoren voor trilling onderdrukking. Op de foto zijn ze moeilijk te zien. Ik voegde ook een socket en een aan-/ uitschakelaar. Mechanische stabilisatie werd gerealiseerd met het gebruik van de indescriminate van een warme lijmpistool.
Het lijkt erop dat direct rijden een LED-matrix met een microcontroller niet de orthodoxe aanpak is maar de Attiny2313 nog niet heeft geklaagd.
Had ik meer aandacht gegeven aan de lay-out van de printplaat zou ik hebben verlaten meer ruimte tussen de Attiny2313 en de LED-matrix om tegemoet een ander signaal lijn. Deze regel is nu rond de matrix en vervolgens terug naar het bereiken van pin 12. Met een beetje meer plannend zou ik ook hebben geplaatst de 100 nF condensatoren ergens anders zodat ik kon hebben gebogen de 7805 regulator naar beneden. Dan kan alles eigenlijk hebben passen in de oude muziek cassette zaak.
Ik negeerde een ontkoppeling condensator tussen VCC en GND van de Attiny2313 omdat ik dacht dat de condensators op de 7805 regelgever goed genoeg zijn. Er is ook geen debouncing van de input knop omdat er een vertraging in de software opgenomen. De eenvoud van het circuit heeft een reset-knop niet rechtvaardigen. Tot slot plaats ik niet heb een 10 k ohm weerstand tussen pin 1 (RESET) en VCC als suggereerde in sommige minimale schakelingen omdat andere bronnen vermeld dat er toch een interne pull-up weerstand was.
Zoals geen crystal aanwezig is, gebruikt de microcontroller haar interne RC-oscillator. Ik vond de timing te zijn een beetje uit, dus ik moest empirisch vertragingswaarden bepalen in de software. Na het laden per ongeluk een bootloader op de Attiny2313, leek de timing beter te krijgen. Ik heb geen verklaring voor.
Om te programmeren van de Attiny2313 ik mijn Arduino gebruikt als een ISP met de toepasselijke naam "ArduinoISP" schets. De aanwijzingen in de sketch zijn eenvoudig. Mij volger in voorbereiding, deze instructies met behulp van deze bron voor de vereiste core-bestanden.
Als ik ben met behulp van een Arduino Duemilanove, moest ik plaats een 120 Ohm weerstand tussen de resetpin en VCC om te voorkomen dat foutmeldingen tijdens programmeren. Dit wordt beschreven hier.
Ik hoop dat de bijgevoegde code is spreekt voor zich.
Geniet van!
Anomalocaris