Je suis sur un projet de treuil avec un moteur pas a pas qui doit se dérouler et se réenrouler d'un nombre de tour donné par un encodeur rotatif.
Mes connaissances en programmation sont limitées, et je bute sur le déchiffrage d'un code qui pourrait m'aider.
ICACHE_RAM_ATTR indique qu'il s'agit d'une routine d'interruption, apparemment déclenchée par une horloge.
Si la pin data a changé de valeur quad est décrémenté ou incrémenté.
encoder_update apparemment récupère la valeur de quad, en divisant par quatre.
ca c'est la fonction de lecture de la position moteur
L' état du capteur est lu si la lecture est possible (digitalRead(DT) << 1 ) ou alors un backup timé ailleurs dans le code digitalRead(CLK). Enfin, j'interprète çà il faudra aller regarder ailleurs dans le code pour voir à quoi servent DT et CLK, mais çà me semble être çà.
Si la data lu est le même que le précédent, alors on ne fait rien, on sort de cette fonction, toutes les instructions après ne sont pas exécutées
if( current_data == previous_data )
return;
Sinon:
Si le bit lu est égal au bit lu une position précédente on retranche 1 à la position moteur. sinon on rajoute 1. on fait un back up de la position actuelle dans la position précédente