Capteur de vitesse & sens de rotation (encodeur optique)
Capteur angulaire
Asservissement de l’angle
Commutateur électromécanique multipositions
Curseur/ Slider électronique
Potentiomètre électromécanique linéaire
Etc.
Principe de fonctionnement
Le tuto est une application directe de l’utilisation d’un encodeur rotatif comme potentiomètre linéaire numérique. En effet, l’encodeur permet d’ajuster l’intensité d’un laser d’une façon progressive et linéaire. L’objectif est d’incrémenter ou décrémenter la valeur du rapport cyclique d’un signal PWM sur 8-bits avec un pas constant. Le pas est défini par l’utilisateur dans le programme. La valeur du rapport cyclique peut varier entre 0 (0%) et 255(100%).
int encodUpDown(int clkpin, int dtpin, int rotmax,int stpwm, int delay_ms, int nrst) { static int rotVal = 0; static bool clkState = LOW, clkLast = HIGH;
clkState = digitalRead(clkpin); if ((clkLast == LOW) && (clkState == HIGH)) { if (digitalRead(dtpin) == HIGH) // Down { rotVal-=stpwm; if ( rotVal < 0) rotVal = 0; } else // Up { rotVal+=stpwm; if ( rotVal >= rotmax)rotVal = rotmax; } delay(delay_ms); } clkLast = clkState;