J'ai suivi les différents fils sur le sujet et testé différents sketchs.
Le dernier et plus court que l'on retrouve un peu partout vient de http://bildr.org/2012/08/rotary-encoder-arduino/
Je suis sur un arduino uno, l'encodeur est une réf. sélectronic avec bouton axial.
(Pas encore compris la combine pour insérer une image !!! Pas étonnant que je ne comprenne pas l'encodeur...)
Le problème comme pour beaucoup est un comptage irrégulier. J'ai essayé les différentes possibilité (CHANGE, RISING, FALLING, LOW) mais je n'arrive pas à obtenir un comptage un par un.
Quelqu'un aurait, il une petite idée. Merci
#include <QuadEncoder.h>
// encoder variables
#define SWI 2 // Intr 0 = Pin 2 but finally I don't use interupt
#define CHA 6
#define CHB 7
#define MENULED 5
// initialize the encoder
QuadEncoder encoder(CHA,CHB); // initialize the encoder
// has the encoder moved in a loop?
boolean moved = false;
///// SETUP /////
void setup() {
pinMode(CHA, INPUT);
pinMode(CHB, INPUT);
pinMode(SWI, INPUT);
}
La détection du bouton se fait par (pas interruptions):
if(digitalRead(SWI)==LOW){
digitalWrite(MENULED,HIGH); // menu led is on when we are in the menu
menu();
}
L'encodeur se fait par:
// returns 1 for right, -1 for left, or 0 for no movement
int readEncoder() {
moved = true;
switch(encoder.hb()) {
case '>': return 1;
case '<': return -1;
}
moved = false;
return 0;
}
J'ai suivi les différents fils sur le sujet et testé différents sketchs.
Le dernier et plus court que l'on retrouve un peu partout vient de http://bildr.org/2012/08/rotary-encoder-arduino/
Je suis sur un arduino uno, l'encodeur est une réf. sélectronic avec bouton axial. Capture d’écran 2014-04-08 à 14.45.54 | jpjcb66 | Flickr
(Pas encore compris la combine pour insérer une image !!! Pas étonnant que je ne comprenne pas l'encodeur...)
Le problème comme pour beaucoup est un comptage irrégulier. J'ai essayé les différentes possibilité (CHANGE, RISING, FALLING, LOW) mais je n'arrive pas à obtenir un comptage un par un.
Quelqu'un aurait, il une petite idée. Merci
Merci les gars je vais tester ça tout à l'heure.
Salut artouste ! Ca turbine ?
Si on peut m'expliquer pour les images. J'ai demandé au modo mais apparemment je n'ai pas compris.
Décidemment j'comprends pas grand chose. L'âge surement = viscosité mentale !!! ;))
jpjcb66:
Merci les gars je vais tester ça tout à l'heure.
Salut artouste ! Ca turbine ?
Si on peut m'expliquer pour les images. J'ai demandé au modo mais apparemment je n'ai pas compris.
Décidemment j'comprends pas grand chose. L'âge surement = viscosité mentale !!! ;))
pour moi , la prochaine mise en route approuvée , ce sera vendredi
retour lib
perso pour moi , tres bonne librairie
pour demo , un petit encodeur basique 20 click/tour +push à coté d'un encodeur libre 2000 pas
pour inserer une image , une fois que tu a le lien , tu l'insere avec la balise img sous le Italique
Bon j'ai testé en premier la proposition d'Artouste.
Ca plante sur 'Encoder myEnc(5, 6); ' does not name a type juste avant void setup()
Je cherche.....
/* Encoder Library - Basic Example
* http://www.pjrc.com/teensy/td_libs_Encoder.html
*
* This example code is in the public domain.
*/
#include <Encoder.h>
// Change these two numbers to the pins connected to your encoder.
// Best Performance: both pins have interrupt capability
// Good Performance: only the first pin has interrupt capability
// Low Performance: neither pin has interrupt capability
Encoder myEnc(5, 6);
// avoid using pins with LEDs attached
void setup() {
Serial.begin(9600);
Serial.println("Basic Encoder Test:");
}
long oldPosition = -999;
void loop() {
long newPosition = myEnc.read();
if (newPosition != oldPosition) {
oldPosition = newPosition;
Serial.println(newPosition);
}
}
Le fait que ce soit une version .pde au lieu de .ino, ça ne joue pas ? Elle y est bien avec les autres ma lib.
Je chercherai après souper. Mais ça fait plusieurs fois que ça me fait. J'ai calé aussi sur le même genre de déclaration objet avec ton code.
jpjcb66:
Le fait que ce soit une version .pde au lieu de .ino, ça ne joue pas ? Elle y est bien avec les autres ma lib.
Je chercherai après souper. Mais ça fait plusieurs fois que ça me fait. J'ai calé aussi sur le même genre de déclaration objet avec ton code.
J'ai juste modifié les .pde en .ino
ça tourne sans probleme pour moi (test avec un uno) sous IDE 1.05
la librairie est bien reprise dans les exemples
Je veux bien la réponse parce que maintenant ça compile normalement.
Je l'ai réenresitré en .ino. Après avoir relancé l'IDE tout est renté dans l'ordre.
Par contre en utilisant les pins 56 rien ne se passe quand je tourne.
Si je connecte l'encodeur sur 2 & 3 il affiche par rafales de 4 voir plus
genre : première rafale une vingtaine de 0 -1 puis -1 -2 -3 -4 etc
Déjà la librairie m'inverse les pins par rapport aux autres essais.
Basic Encoder Test:
0
-1
0
-1
0
-1
0
-1
0
-1
0
-1
0
-1
0
-1
0
-1
0
-1
0
-1
0
C'est pas grave ça, il suffit d'inverser dans "Encoder myEnc(3, 2);" ou alors inverser matériellemnt les connexions.
Je suis en train de regarder comment est foutue la librairie .h
En fait, à peine je touche le bouton et le programme réagit, avant même le passage du cran.
C'est du sport ces encodeurs.. Pourtant c'est censé marcher. Celui-là n'a pas servi. J'avais réussi à le faire tourner sous Mikrobasic.
jpjcb66:
C'est pas grave ça, il suffit d'inverser dans "Encoder myEnc(3, 2);" ou alors inverser matériellemnt les connexions.
Je suis en train de regarder comment est foutue la librairie .h
En fait, à peine je touche le bouton et le programme réagit, avant même le passage du cran.
C'est du sport ces encodeurs.. Pourtant c'est censé marcher. Celui-là n'a pas servi. J'avais réussi à le faire tourner sous Mikrobasic.
Jje crois que tu n'a pas compris ma question 8)
la broche commune aux canaux A et B de ton encodeur est cablée sur quoi ? (elle n'est pas en l'air )
la librairie utilise les pull-up interne , il faut pour avoir un fonctionnement OK avec les impulsions connecter ce pin à GND