Go Down

Topic: Encodeur rotatif (Read 12691 times) previous topic - next topic

jpjcb66

Apr 08, 2014, 02:39 pm Last Edit: Apr 08, 2014, 02:43 pm by jpjcb66 Reason: 1
Bonjour à tous,

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.
https://www.flickr.com/photos/64022727@N02/13715610163/
(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

john_lenfr

#1
Apr 08, 2014, 02:43 pm Last Edit: Apr 08, 2014, 02:47 pm by john_lenfr Reason: 1
J'ai utilisé cette lib jointe si ça peux t'aider...

Je l'utilise pour mon projet Relaix box control

Avec:

Code: [Select]
#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):
Code: [Select]
if(digitalRead(SWI)==LOW){
    digitalWrite(MENULED,HIGH); // menu led is on when we are in the menu
    menu();
  }


L'encodeur se fait par:
Code: [Select]
// 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;
}

Artouste


Bonjour à tous,

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.
https://www.flickr.com/photos/64022727@N02/13715610163/
(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


bonjour
le plus simple avec les encodeurs en quadratures et arduino est d'utiliser
cette lib (et l'exemple basic)
http://www.pjrc.com/teensy/td_libs_Encoder.html

attention , elle est tres efficace (4 points) et selon les encodeurs il faut savoir si ils comportent une detente mecanique.


john_lenfr

Tiens, vais l'essayer ce soir celle la  :smiley-mr-green:

Artouste


Tiens, vais l'essayer ce soir celle la  :smiley-mr-green:

anecdotiquement
je suis actuellement en train de jouer avec sur un encodeur 2000 imp/tours  8)

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 !!!  ;))

Artouste

#6
Apr 08, 2014, 03:06 pm Last Edit: Apr 08, 2014, 03:12 pm by Artouste Reason: 1

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 !!!  ;))

:smiley-mr-green:
pour moi , la prochaine mise en route approuvée , ce sera vendredi  :smiley-mr-green:

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

jpjcb66

Merci, c'est qu'est ce que j'fais pour les images mais rien n'apparait.  Pour ça que j'ai mis le lien direct à "flickr".

Artouste


Merci, c'est qu'est ce que j'fais pour les images mais rien n'apparait.  Pour ça que j'ai mis le lien direct à "flickr".


pour simple exemple
lien vers une page selectronic
http://www.selectronic.fr/encodeur-numerique-bi-phase-20-impulsions-t.html

lien vers l'image (pas sur qu'il soit pérenne)
http://www.selectronic.fr/media/catalog/product/cache/1/image/800x600/17f82f742ffe127f42dca9de82fb58b1/e/n/encodeur-numerique-bi-phase-20-impulsions--ta.png

et image affichée

jpjcb66

C'est bien ce que j'ai fait.
Bon je réessairai plus tard, je dois m'absenter.
Merci

jpjcb66

#10
Apr 08, 2014, 05:44 pm Last Edit: Apr 08, 2014, 06:13 pm by jpjcb66 Reason: 1
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.....

Code: [Select]
/* 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);
 }
}

john_lenfr

Tu n'as pas du placer la librairie au bon endroit du coup il connait pas ta déclaration Encoder...

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.

Artouste


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

john_lenfr


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.


Alors t'a trouvé ou jte donne la réponse?

Go Up