samedi 10 février 2018

Jouer une mélodie avec l'ATTiny85

Si, tout comme moi, vous programmez l'ATTiny85 avec l'IDE Arduino et le noyau ATtiny par David A. Mellis, vous avez peut-être été frustré par l'absence de support pour la fonction "tone()" qui permet, sur une carte Arduino, de produire un son dont on peut contrôler la fréquence à volonté.


Il existe toutefois un remède, proposé par David Johnson-Davies dans son excellent blog Technoblogy: dans un sketch qu'il a baptisé "TinyTone", il utilise le timer/counter1 de l'ATtiny85 pour produire l'équivalent de ce que fait la fonction tone() sur l'Arduino.

Programmation de l'ATTiny

Au besoin, référez-vous à ce billet pour la façon d'installer le noyau ATtiny de David A. Mellis et programmer l'ATTiny au moyen d'une carte Arduino.

Sketch

Le sketch ci-dessous est celui publié par David Johnson-Davies, dans lequel je me suis contenté de modifier la mélodie (il s'agit d'À la Claire Fontaine) de la fonction playTune().  Le contenu de la fonction TinyTone() peut vous sembler obscur si vous n'êtes pas familier avec la manipulation des registres de l'ATTiny, mais vous n'aurez probablement pas besoin de la modifier.



Circuit

Après avoir programmé l'ATTiny85, il ne reste plus qu'à lui ajouter un haut-parleur sur la broche physique numéro 6 (également nommée broche 1 pour l'IDE Arduino), tel qu'illustré ci-dessous.


Vidéo du résultat


Aller plus loin

Pour générer des sons plus sophistiqués, vous pouvez également jeter un oeil sur le Tiny Synth, également développé par David Johnson-Davies et présenté dans son blog Technoblogy.  De plus, David vient tout juste de publier une version améliorée de sa fonction "TinyTone()".

Yves Pelletier   (TwitterFacebook)

1 commentaire:

  1. Un grand merci. Je vais tout de suite m'y pencher pour remplacer les 328 par les ATTiny pour mon bruiteur diesel de bateau RC... Pascal / F4CVM

    RépondreSupprimer