Table des matières:
- Étape 1: Matériaux et construction
- Étape 2: Souder l'AVR aux LED et au haut-parleur
- Étape 3: Programmation de l'Attiny13a
- Étape 4: Création du micrologiciel pour Marioman
- Étape 5: Laisser le Marioman lâcher
Vidéo: Clignotant, Chantant, Marioman : 5 Étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:11
Utilisez un attiny13a, deux LED et un haut-parleur pour carte de vœux pour créer un Marioman clignotant qui joue la chanson thème de Super Mario Brothers. Cela peut être un projet facile et peu coûteux pour tous ceux qui recherchent un moyen amusant de se lancer dans la programmation AVR ! les notes des chansons sont générées par une onde carrée émise sur une seule broche du microcontrôleur AVR. Les LED qui alternent sur chaque note sont connectées à 2 broches chacune de la même puce.
Étape 1: Matériaux et construction
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dCoût: 1,40 $
- 2 LED - n'importe quelle LED fera l'affaire
- 1 pile bouton au lithium
www.sparkfun.com/commerce/product_info.php?products_id=338Coût: 2,00 $
1 porte-pile bouton
www.sparkfun.com/commerce/product_info.php?products_id=8822Coût: 1,25 $
1 petit haut-parleur d'une carte de voeux musicale
Coût total des matériaux ~ 5 $ Les deux LED ont été fixées directement à deux broches chacune des attiny13A. Deux broches sont utilisées pour chaque LED, la deuxième broche est réglée bas pour être utilisée comme connexion à la terre. La limite de courant des broches d'E/S sur l'AVR empêchera les LED de trop tirer, il n'est donc pas nécessaire de connecter une résistance série. Le haut-parleur utilisé est typique de celui trouvé dans une carte de vœux musicale, n'importe quel petit haut-parleur fera l'affaire, étant donné qu'il émet une tonalité d'onde carrée, il n'est pas trop important de s'inquiéter de la conduite du haut-parleur ou de la qualité du son.
Étape 2: Souder l'AVR aux LED et au haut-parleur
Pour que les LED s'étendent comme des bras, une broche est pliée sur l'AVR de chaque côté. Orienter l'AVR de cette façon facilite la connexion au haut-parleur (deuxième image) puisque les connexions sont sur les deux broches du bas. il est attaché.
Étape 3: Programmation de l'Attiny13a
Il existe de nombreuses options différentes pour programmer les AVR. attachez des fils à la prise femelle et branchez-les sur une planche à pain ou, mieux encore, obtenez un adaptateur de programmation AVR bon marché comme celui-cihttps://www.sparkfun.com/commerce/product_info.php?products_id=8508avec 3x2 en-têtes mâles pour connecter la prise.
Étape 4: Création du micrologiciel pour Marioman
L'attiny13A a 1 Ko de mémoire flash programmable et 64 octets de SRAM. Le fichier tar joint contient le fichier source ainsi que le micrologiciel compilé à télécharger. Trois tableaux dans le code c ont été utilisés pour générer la musique
- freq - fréquences de chaque note
- length - longueur de chaque note
- delay - pause entre chaque note
Le tableau de fréquences n'a pas les fréquences réelles mais plutôt la valeur à mettre dans le registre TTCROB pour générer l'onde carrée à partir de la broche PB0. Voici un bref résumé des calculs et de la configuration des broches pour la génération d'onde carrée:
- L'attiny13A a un oscillateur interne réglé sur 9,6MHz
- L'horloge interne pour IO est l'oscillateur divisé par 8 ou 1,2 MHz
- Une minuterie interne est configurée dans un registre 8 bits pour compter chaque cycle d'horloge avec une pré-échelle de 8.
- Cela donne un tick égal à 1 / (1,2 MHz / 8) = 0,006667 ms
- L'attiny13A est configuré pour comparer ce qui se trouve dans le registre 8 bits TCCR0B avec la minuterie et basculer une broche lorsqu'ils correspondent.
- Par exemple, afin de générer une onde carrée à 524 Hz (une octave au-dessus du do médian) qui a une période de 1,908 ms.
1.908ms = 286 ticks d'horloge (1.908/.0067) Divisez 286 par 2 pour basculer la broche à t/2 (286/2 = 143) Mettez 143 dans le registre TTCR0B pour générer cette note. C'est tout le code qui est nécessaire pour configurer la minuterie, effectuez la comparaison et produisez une onde carrée:
TCCR0A |= (1<<WGM01); // configurer le temporisateur 1 pour le mode CTC TCCR0A |= (1<<COM0A0); // basculer OC0A sur la comparaison de correspondance TCCR0B |= (1<<CS01); // clk/8 pré-échelle TTCR0B = 143; // générer une onde carrée à 524 HzPour retarder les tonalités et les pauses entre elles, une simple fonction de retard a été utilisée
void sleep(int ms) { int cnt; pour (cnt=0; cnt<(ms); cnt++) { int i = 150; while(i--) { _asm("NOP"); } }}Cela compte à rebours à partir de 150 où chaque cycle NOP est d'environ 0,006667 ms. La dernière chose que le code fait est de parcourir les tableaux, de générer la musique et de faire clignoter les deux LED. Cela se fait dans une boucle for continue avec le code suivant
const uint8_t freq PROGMEM = { … data };const uint8_t length PROGMEM = { … data };const uint8_t delay PROGMEM = { … data };…while (1) { for (cnt=0; cnt< 156; cnt++) { OCR0A=pgm_read_byte(&freq[cnt]); output_toggle(PORTB, PB3); output_toggle(PORTB, PB4); sleep(pgm_read_byte(&length[cnt])); output_toggle(PORTB, PB3); output_toggle(PORTB, PB4); // arrêt du temporisateur TCCR0B = 0; sommeil (pgm_read_word(&delay[cnt])); // démarrer le temporisateur TCCR0B |= (1<<CS01); // clk/8 pré-échelle }}Il y a 156 éléments dans les tableaux fréquences/longueurs/retard, cette boucle les parcourt. Les broches PB3 et PB4 sont chacune basculées afin qu'elles alternent avec chaque note. Le premier sommeil est la longueur de la note que nous jouons après avoir réglé le registre OCR0A sur la valeur appropriée. Le deuxième sommeil est la pause entre les notes que nous jouons. Dans le code ci-dessus, vous avez peut-être remarqué les deux fonctions pgm_read_byte() et pgm_read_word() ainsi que le mot-clé PROGMEM. Avec une puce embarquée comme l'attiny, la quantité de SRAM est très limitée, dans ce cas seulement 64 octets. Les tableaux que nous utilisons pour toutes les données de fréquence/délai/longueur sont bien supérieurs à 64 octets et ne peuvent donc pas être chargés en mémoire. En utilisant la directive spéciale PROGMEM avr-gcc, ces grands tableaux de données sont empêchés de se charger en mémoire, au lieu de cela, ils sont lus à partir de la mémoire flash.
Étape 5: Laisser le Marioman lâcher
La vidéo ci-dessus montre Marioman en action. La consommation électrique moyenne est d'environ 25 mA, il peut donc cligner des yeux et faire des bruits pendant environ 10 heures avant de vider la pile bouton au lithium. La seule façon de l'allumer et de l'éteindre est de retirer la pile bouton, la plus robuste répertoriée dans les matériaux bien adapté pour cela. Un interrupteur peut être ajouté, mais il y a quelque chose à dire pour que les choses restent simples.
Conseillé:
Clignotant LED utilisant 555 IC: 5 étapes
Clignotant LED utilisant 555 IC: Salut ami, aujourd'hui, je vais faire un clignotant LED en utilisant la minuterie IC 555. Commençons
Hack-O-Lantern clignotant à LED suivant la chanson ! : 6 étapes
Hack-O-Lantern clignotant à LED suivant la chanson ! : Créez une lanterne jack-o-lanterne qui joue et fait clignoter des LED multicolores à la chanson d'Halloween préférée de tout le monde
Construire un clignotant de vélo simple : 11 étapes (avec photos)
Construisez un simple clignotant de vélo : Avec l'arrivée de l'automne, il est parfois difficile de réaliser que les jours sont devenus plus courts, bien que la température puisse être la même. C'est arrivé à tout le monde - vous partez en balade à vélo l'après-midi, mais avant d'être à mi-chemin, il fait nuit et vous êtes
Casse-Noisette Arduino chantant : 8 étapes
Casse-noisette Arduino chantant : ce casse-noisette ouvre la bouche en fonction de l'audio d'entrée. Cela peut facilement se faire en moins de 3 heures pour un débutant pour passer d'un tas de pièces à un casse-noisette chantant. Pour ce projet, vous allez avoir besoin d'un Casse-Noisette avec une bouche mobile, un prototype
Accessoire de buste chantant : 7 étapes
Singing Bust Prop : vous êtes-vous déjà demandé comment fonctionnaient les bustes de chant dans le manoir hanté ou même avez-vous voulu essayer de les faire bien, ce Instructable vous montrera comment les faire et c'est vraiment simple