De nos jours les cartes de voeux musicales sont virtuelles, on les envoie via internet. Mais il y a un certain nombres d'années, je ne sais pas si ça existe encore ou si ça a été une passade, on pouvait acheter une carte de voeux qui jouait de la musique lorsqu'on l'ouvrait.
Voici un projet qui démontre toute la simplicité de ce type de gadget. Il s'agit de créer le circuit d'une telle carte de voeux. Pour le développement on utilise un PIC10F200 en format PDIP-8. Mais s'il nous prenais la fantaisie d'assembler réellement une telle carte il suffirait d'acheter un PIC au format DFN, 1 piézo et une pile au lithium CR2012. Le piezo speaker constitue l'élément le plus mince et la pile avec 1,2mm d'épaisseur le plus épais. C'est 3 éléments montés à plat s'insèreraient dans une carte de voeux sans que se soit trop apparent. Il s'agirait en plus de bricoler un commutateur plat qui mettrait la pile en contact avec l'alimentation du MCU seulement au moment de l'ouverture de la carte. Si vous avez le désir de fabriquer une telle carte je laisse au soins de votre imagination de défi de créer un tel commutateur.
matériel requis
- 1 MCU PIC10F200, 0,62$CAN
- 1 piezo speaker, 6,15$CAN
- 1 pile CR2012, 1,29$CAN
circuit
code source
Le TIMER est configuré pour être contrôlé par Fosc/4 avec un diviseur de 4 ce qui donne 4usec par tick. Les valeurs de la table scale sont donc les valeurs représentant la durée d'un demi-cycle pour chaque fréquence en multiple de 4usec. Les valeurs ont été calculée à l'aide du tableur d'openOffice et arrondi à l'entier le plus proche.
Pour la durée de la note il a fallu prendre un compteur 24 bits même si les valeurs de la table duration sont elle calculée en multiple de 8usec, la première valeur étant de 125000. 8usec parce qu'on ne soustrait qu'une seule fois la valeur de freq_dly à delay_cntr par cycle alors que freq_dly est compter 2 fois par cycle.
Notez que la macro delay_half_cycle réinitialise le timer en ajoutant la valeur freq_dly à la valeur qui est déjà dans le compteur plutôt que par une assignation. Ceci est pour tenir compte du fait que le temps continue à s'écouler entre le moment ou 1 demi-cycle se termine et ou on réinitialise le timer pour le demi-cycle suivant. Ceci cré une onde parfaitement carré malgré le temps d'exécution supplémentaire encouru à la fin du 2ième demi-cycle par l'exécution de la macro skip_timeout et du plus la fréquence est plus juste.
Il n'y a pas grand chose à ajouter à propos de ce code qui est en définitive des plus simple dans sa réalisation.
Merci pour le tuto :-)
RépondreEffacerje viens de le programmer dans dans PIC10F200
il fonctionne même sur un petit écouteur de Walkman
Mic**
encore merci pour ce tuto !
RépondreEffacervoici le code pour une mélodie de Noël
; ---------- mélodie de Noël "Mon Beau Sapin Roi des Forêts" ---------
dt .32 ; mon
dt .37 ; beau
dt .69 ; sa
dt .37 ; pin
dt .39 ; roi
dt .41 ; des
dt .73 ; fo
dt .57 ; rets
dt .73 ; que
dt .71 ; j'ai
dt .73 ; me
dt .74 ; ta
dt .84 ; ver
dt .39 ; du
dt .37 ; re
dt .76 ; quand
dt .76 ; par
dt .73 ; l'hi
dt .62 ; vert
dt .76 ; bois
dt .76 ; et
dt .74 ; gué
dt .58 ; rets
dt .74 ; sont
dt .74 ; dé
dt .71 ; pouil
dt .60 ; lés
dt .74 ; de
dt .74 ; leurs
dt .121 ; at
dt .89 ; traits
dt .32 ; mon
dt .37 ; beau
dt .69 ; sa
dt .37 ; pin
dt .39 ; roi
dt .41 ; des
dt .73 ; fo
dt .57 ; rets
dt .73 ; tu
dt .71 ; gar
dt .73 ; des
dt .74 ; ta
dt .84; par
dt .39 ; ru
dt .37 ; re
dt H'FF' ; fin
Bonjour,
RépondreEffacerj'ai trouvé sur le Net un générateur de mélodie polyphonique, je pense que cela pourrai t'intéresser.
grâce à 3 logiciels ( Python 2.7, MuseScore, WinAVR ) on on transforme un fichier MIDI ou WAV en mélodie que l'on peut jouer avec un Attiny85 et 2 HP piezzo ou 2 mini HP , ça joue très bien les mélodies, je te donnes le lien:
http://hackaday.com/2011/11/22/musical-greeting-card-with-minimal-parts/