Étape 12 : Programmation avec les encodeurs
Bibliothèques de l’encodeur
La meilleure façon d’utiliser les encodeurs dans votre programme doit utiliser une bibliothèque de codeurs. J’ai utilisé le bibliothèque de codeurs d’achetant.
Pour l’utiliser dans votre dessin, copie le dossier encoder dans votre dossier de « bibliothèques » Arduino, redémarrez l’IDE Arduino et inclure le fichier d’en-tête dans votre croquis, en ajoutant cette ligne en haut de votre fichier :
Plus d’infos sur les bibliothèques sur la Arduino site.
Ensuite il suffit de créer un membre de la classe de codeur :
Nom de l’encodeur (pin_1, pin_2) ; où nom est le nom que vous souhaitez donner à l’encodeur et pin_1 & pin_2 sont les broches où vous branchez l’encodeur.
C’est ça, pas de soucis avec les interruptions, la bibliothèque, elle gère tout pour vous.
Lorsque vous avez besoin de la valeur de l’encodeur, il suffit d’utiliser :
Name.Read() ; où nom correspond au nom vous lui avez donné plus tôt. La fonction de lecture retourne un long.
Si vous le souhaitez, vous pouvez prendre un coup d’oeil les exemples qui viennent avec la bibliothèque. (Fichier > exemples > encodeur)
Messages relatifs
La fonction de lecture retourne une valeur absolue pour le poste (qui se réinitialise chaque fois que vous coupez l’alimentation, toutefois, contrairement à un potentiomètre). C’est parfaitement bien pour la plupart des applications, mais MIDI est différent : il utilise des nombres relatifs pour les encodeurs rotatifs. Cela signifie, que le contrôleur envoie la différence entre la nouvelle et l’ancienne valeur du codeur, donc si par exemple la dernière valeur de la lecture de la fonction était de 96, et vous tournez le codeur pour le 1 étape, la nouvelle valeur sera 97 évidemment, mais l’Arduino ne devrait pas envoyer à 97. Au lieu de cela, il envoie la différence : 97-96 = + 1. Si vous avez activé 1 étape vers la gauche, il serait -1. Simple.
Qu’en est-il des étapes plus ? Si vous tournez le codeur rapidement pour, disons 4 étapes, il y a 2 choses qui peuvent arriver : un, l’Arduino envoie son MIDI assez vite pour lire l’encodeur au moins 4 fois pendant que vous l’éteigniez. Autrement dit, qu'il enverra des 4 messages avec "+ 1". Deux, si ce n’est pas assez rapide pour rafraîchir la fonction lecture 4 fois, elle va découvrir que la fonction de lecture a changé plus de 1 étape depuis la dernière fois. Par exemple, la dernière valeur de la lecture de la fonction était de 97, vous mettez 4 étapes et relisez. Cela vous donnera 101 : 101 - 97 = 4. Pas de problème, l’Arduino est juste envoyer 1 message avec "+ 4".
Il pourrait y avoir quelques problèmes de compatibilité, dû au fait que vous ne peut pas vraiment envoyer des nombres négatifs via MIDI. Il y a trois façons d’envoyer le signe d’un nombre.
- Ajouter 64. C’est probablement la plus simple. Elle correspond essentiellement 0 à 64 (ce qui est de 128/2). Par exemple, si je veux envoyer -1, j’ai ajouter 64, = 63 et je l’envoie. Si je veux envoyer + 1, j’ai également ajouter que 64 = 65. Si j’envoie juste 64, l’ordinateur ne fera rien, car il sait que c’est un déplacement de 0. (Du côté de l’ordinateur, ils juste soustraire 64, et vous pouvez utiliser le résultat comme rien n’est jamais arrivé).
- Bit de signe. Sur les ordinateurs, les valeurs signées sont surtout enregistrés avec un bit de signe. Le bit de signe est le bit le plus significatif. Quand il est 0, le nombre défini par les autres bits est positif, quand il est 1, le nombre est négatif. Dans un message MIDI, c’est de type bit 6 (le bit 7, puisqu’il est fondé de 0). Par exemple: + 4 serait 0b00000100, et -4 serait 0b01000100.
- Un troisième moyen est de qualifier 127 + 1 0 et -1. Nous pouvons continuer ce: + 2 = 1 et -2 = 126, etc. jusqu’en + 63 = 63 -63 = 65.
Donc, si votre encodeur fait des choses étranges dans votre logiciel particulier, comme sauter vraiment extrême, si vous tournez uniquement une seule étape, vous pouvez modifier cela dans votre programme.
Cependant, peut-être que vous ne devez vraiment écrire votre propre programme...