Étape 3: Firmware
Le firmware est jointe. Vous pouvez le compiler avec « make », tel que décrit à l’étape précédente. Il est écrit dans un matériel moyen indépendant : toutes les fonctions, qui ne sont pas standard C, sont implémentées dans hardware.cpp, donc portage vers un autre microcontrôleur est facile. Les fonctions de l’encodeur rotatif sont dans main.c. Dans les display.c est sont les fonctions de texte, les nombres et les rectangles. L’écran OLED a une auto-détection de la vitesse de transmission, donc vous pouvez utiliser d’autres taux baud ainsi.Il y a deux broches d’entrée de l’encodeur rotatif coder les quatre phases des signaux en quadrature (voir le Wikipedia image http://upload.wikimedia.org/wikipedia/en/thumb/6/68/Quadrature_Diagram.svg/500px-Quadrature_Diagram.svg.png). La direction de la tour peut être détectée, si vous comparez le dernier état de phase avec le nouvel État, par exemple lorsqu’il change d’État 2 au stade 3 il était a viré à droite et si elle change d’État 3 à l’état 2 il a été tourné à gauche.
Si vous avez besoin de connaître le dernier État et l’état actuel. Un État est encodé dans deux bits. Le dernier État et l’état suivant combinés sont 4 bits. Il s’agit de l’index dans une table avec 16 entrées, qui donne + 1, 0 ou -1, comme la direction dans laquelle a été tournée la molette.
Le tableau présente l’avantage que vous pouvez facilement implémenter un comportement spécial, par exemple pour le codeur Alpes il y a des transitions de phase à la position ralentie, qui est ignorée, parce qu’il en est résulté rebondir entre deux valeurs parfois. Et cette mettez-la la résolution, qui se traduit en une seule étape de comptage par raster.
Rebond des contacts n’est pas un problème si le temps entre en comparant les deux phases est plus rapide que la vitesse la plus rapide peut changer en deux phases.