Bonjour,
J'aimerais comprendre comment est-ce qu'avec un encodeur de type KY-040, régler un minuteur.
Je ne demande pas un code tout fait, mais juste, soit un lien soit une bonne explication car, je ne vois pas par où commencer.
merci
Bonjour,
J'aimerais comprendre comment est-ce qu'avec un encodeur de type KY-040, régler un minuteur.
Je ne demande pas un code tout fait, mais juste, soit un lien soit une bonne explication car, je ne vois pas par où commencer.
merci
Pas mal d'informations ici sur les librairies disonibles et sur l'usage.
Mais, en gros, une variable contient le temps pour le minuteur lorsqu'on fait tourner l'axe de l'encodeur le programme reçoit des informations d'incrémentation/décrémentation qui vont faire évoluer la valeur dans cette variable. Lorsqu'on appui sur le bouton de l'encodeur on lance la temporisation.
oui la "Encoder Library" de PJRC est pratique est bien optimisée
Pour simplifier votre gestion des boutons, éventuellement utilisez la librairie de @bricoleau, ça fonctionnera bien avec le bouton
voici un petit exemple qui affiche un compteur dans la console à 115200 bauds et vous dit quand vous appuyez sur le bouton
(mon encodeur envoie 2 impulsions par tick, d'où la division par 2 du nombre de ticks pour avoir le bon compteur. J'effectue cette division par deux avec un décalage binaire >> 1
)
#include <Encoder.h> // https://www.pjrc.com/teensy/td_libs_Encoder.html
Encoder encodeurRotatif(2, 3); // attaché sur pins 2 (Encodeur DT) et 3 (Encodeur CLK)
#include <simpleBouton.h> // http://forum.arduino.cc/index.php?topic=375232.0 la librairie de @bricoleau
simpleBouton boutonEncodeur(4);//Cablage : pin 4 --- Encodeur SW
long positionEnCours = 0L;
void setup()
{
Serial.begin(115200);
encodeurRotatif.write(0); // valeur initiale du compteur
}
void loop()
{
long nouvellePosition = encodeurRotatif.read() >> 1; // on divise par 2 car mon encodeur envoie 2 impulsions par tick
if (nouvellePosition != positionEnCours) {
positionEnCours = nouvellePosition;
Serial.println(positionEnCours);
}
if (boutonEncodeur) Serial.println(F("appui bouton"));
}