Le défi particulier ne limitait la taille du code afin de s’insérer dans le 2 Ko de mémoire dans le Attiny2313. Il a travaillé en stockant la matrice de polices de caractères dans l’espace de mémoire de programme PROGMEM et en utilisant directement les manipulations de port en combinaison avec des opérations mathématiques au niveau du bit .
Le mappage de broche avec la matrice de LED Kingbright TC07-11EWA 5 x 7 est :
Attiny2313 port LED matrice broche (résistance de 470 ohms)
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 10 6 colonne 3
PD3 7 7 Column 4
PD4 8 8 Column 5
PB5 (broche 9) est la broche d’entrée pour le bouton. En appuyant sur le bouton se connectera la broche bouton à GND.
L’alimentation se fait par un régulateur linéaire 7805 avec deux 100 condensateurs nF pour la répression de l’oscillation. Sur la photo, ils sont difficiles à voir. J’ai aussi ajouté une prise et un interrupteur d’alimentation. Stabilisation mécanique a été réalisée avec l’utilisation d’indescriminate d’un pistolet à colle chaude.
Il semble que conduite directement une matrice de LED avec un microcontrôleur n’est pas l’approche orthodoxe mais la Attiny2313 n’a pas encore se sont plaints.
J’avais donné plus de réflexion à la mise en page de carte de circuit imprimé j’aurait laissé plus d’espace entre le Attiny2313 et la matrice de LED pour permettre une autre ligne de signal. Cette ligne est maintenant autour de la matrice, puis de nouveau pour atteindre l’axe 12. Avec un peu de planification plus j’ai aussi aurait placé les condensateurs de 100 nF ailleurs si je pouvais avoir plié le régulateur 7805 vers le bas. Alors tout peut ont réellement bon dans le cas de cassette de musique ancienne.
J’ai ignoré un condensateur de découplage entre VCC et GND de l’Attiny2313 parce que je pensais que les condensateurs au régulateur 7805 sont assez bonnes. Il n’y a également aucune debouncing de la touche d’entrée parce qu’il y a un retard inclus dans le logiciel. La simplicité du circuit ne justifiait pas un bouton reset. Enfin, j’ai ne pas placer une résistance de 10 k entre la broche 1 (RESET) et le CCV comme suggéré dans certains circuits minimales parce que les autres sources mentionné qu’il était de toute façon une résistance pull-up interne.
Comme aucun cristal n’est présent, le microcontrôleur utilise son oscillateur interne RC. J’ai trouvé le moment pour être un peu éteint donc j’ai dû déterminer empiriquement les valeurs de délai dans le logiciel. Après avoir accidentellement chargé un bootloader sur le Attiny2313, le moment semblait aller mieux. Je n’ai aucune explication pour cela.
Afin de programmer le Attiny2313 j’ai utilisé mon Arduino en tant qu’ISP avec le bien nommé sketch "ArduinoISP". Les instructions contenues dans le schéma sont simples. En préparation, j’ai suivi ces instructions à l’aide de cette source pour les fichiers de base requis.
Comme je suis avec un Arduino Duemilanove, j’ai dû placer une résistance de 120 ohms entre la broche RESET et SCR pour empêcher les messages d’erreur lors de la programmation. Ce qui est décrit ici.
J’espère que le code ci-joint est explicite.
Profitez !
Anomalocaris