Go Down

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

jpjcb66

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
--------
-1
-2
-3
-4
-------
-5
-4
-5
-6
-7
-8
-------
-9
-8
-9
-8
-9
-----

Artouste


...
Déjà la librairie m'inverse les pins par rapport aux autres essais.
Basic Encoder Test:


:smiley-mr-green:
Il est cablé comment ton encodeur ?
le commun va sur quoi  ? +5V ou GND

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.

Artouste


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  :smiley-mr-green: )
la librairie utilise les pull-up interne , il faut pour avoir un fonctionnement OK avec les impulsions connecter ce pin à GND

john_lenfr

#19
Apr 08, 2014, 08:49 pm Last Edit: Apr 08, 2014, 08:55 pm by john_lenfr Reason: 1

Si je connecte l'encodeur sur 2 & 3 il affiche par rafales de 4 voir plus


Moi pareil, que ce soit avec les pins 2 et 3 ou  5 et 6.

Le cablage est celui ci: http://snootlab.com/shields-snootlab/339-encodeur-rotatif-24-positions-bleu-breakout-board.html

Et ça reste beaucoup trop sensible. Je fais comment pour changer la sensibilité?

Artouste

#20
Apr 08, 2014, 08:59 pm Last Edit: Apr 08, 2014, 09:02 pm by Artouste Reason: 1


Si je connecte l'encodeur sur 2 & 3 il affiche par rafales de 4 voir plus


Moi pareil, que ce soit avec les pins 2 et 3 ou  5 et 6.

Le cablage est celui ci: http://snootlab.com/shields-snootlab/339-encodeur-rotatif-24-positions-bleu-breakout-board.html



ça c'est normal  :smiley-mr-green:
Quote
Encoder provides 4X counting mode and highly optimized code (explained below) when running on Teensy or Arduino boards.

çà permet de quadrupler la resolution , ce n'est pas tres utile avec de l'encodeur basique pour entrée d'info equipé de detente (le click  8) ) , mais avec de l'encodeur de moteur c'est au contraire tres utile.

Quote
Et ça reste beaucoup trop sensible. Je fais comment pour changer la sensibilité?

division/4 ou comptage sur modulo 4

jpjcb66

#21
Apr 08, 2014, 09:13 pm Last Edit: Apr 08, 2014, 09:27 pm by jpjcb66 Reason: 1
Ah! ma réponse est restée coincée.
les deux communs sont à la masse puisque les pattes actives sont sur pullup.
Il est c^blé bizarre cet encodeur. les deux pattes seules opposées aux trois de l'autre côté sont les deux sorties encodeur.
Côté trois pattes deux sont les communs et la dernière le bouton.


Quote
division/4 ou comptage sur modulo 4

Et tu l'écris comment ça en "C". je vais chercher.  :D

Artouste


Ah! ma réponse est restée coincée.
les deux communs sont à la masse puisque les pattes actives sont sur pullup.
Il est c^blé bizarre cet encodeur. les deux pattes seules opposées aux trois de l'autre côté sont les deux sorties encodeur.
Côté trois pattes deux sont les communs et la dernière le bouton.

Alors on va reprendre  :smiley-mr-green:
pour l'instant on oublie le contact poussoir (les 2 pins du meme coté)

ne t'occupe que du coté 3 pins
il n'y a pas 2 communs , mais normalement un seul
(donne le lien exact chez selectronic de ton encodeur )
en general les petits encodeurs sont cablés comme ça
ACB où :
A= canal A
B= canal B
C = Commun
tu connecte C à GND
A sur pin 5
B sur pin 6


john_lenfr


division/4 ou comptage sur modulo 4


/4 fonctionne mais pas %4

Artouste



division/4 ou comptage sur modulo 4


/4 fonctionne mais pas %4

si mais à condition de faire un test sur condition=0  :smiley-mr-green:
pas utile là

jpjcb66

#25
Apr 08, 2014, 09:39 pm Last Edit: Apr 08, 2014, 09:47 pm by jpjcb66 Reason: 1
le câblage est là :
https://www.flickr.com/photos/64022727@N02/13715610163/  Voir figure 4  A et B encodeur, enface deux communs et un SW
C'est le premier de ta photo lien sélectro, il y a l'icône pdf en dessous.

Ca marche avec  /4  mais faudra le sortir de la boucle pour l'affichage. sinon :

Code: [Select]

0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3

john_lenfr

#26
Apr 08, 2014, 09:54 pm Last Edit: Apr 08, 2014, 09:58 pm by john_lenfr Reason: 1
Pas besoin de le sortir de la boucle suffit de diviser par 4 avant le prélèvement.

J'ai testé une petite modif qui me renvoie -1 ou 1 suivant le sens de rotation ce qui permet de se servir de l'encodeur pour gérer un menu par exemple:

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()/4;
 if (newPosition != oldPosition) {
   Serial.println(newPosition);
   Serial.print("pos=");
   Serial.println(oldPosition-newPosition);
   oldPosition = newPosition;
 }
}


Code: [Select]
Basic Encoder Test:
0
pos=-999
-1
pos=1
-2
pos=1
-3
pos=1
-4
pos=1
-5
pos=1
-4
pos=-1
-3
pos=-1
-2
pos=-1
-1
pos=-1
0
pos=-1
-1
pos=1


Je pense que ça va venir remplacer ma lib actuellement utilisée  car c'est crai qu'elle est plus performante.

Merci Artouste  ;)

Artouste


le câblage est là :
https://www.flickr.com/photos/64022727@N02/13715610163/  Voir figure 4  A et B encodeur, enface deux communs et un SW
C'est le premier de ta photo lien sélectro, il y a l'icône pdf en dessous.

Ca marche avec  /4  mais faudra le sortir de la boucle pour l'affichage. sinon :

Code: [Select]

0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3


ton affichage vient juste de l'exemple basic de la lib encoder ?
pas de modifs de ta part ?
c'est etonnant parce que l'affichage serial ne se fait qu'en cas de changement de valeurs
balises citations assumée et pas code pour mise en valeur  8)
Quote
void loop() {
 long newPosition = myEnc.read();
if (newPosition != oldPosition) {
   oldPosition = newPosition;
   Serial.println(newPosition);
 }
}

jpjcb66

C'est bien Artouste, compliments.
Si t'es aussi bon au manche qu'en "C" tu vivras vieux,  (comme moi  :D  )
Pour les tests avec une tempo c'est sympa et on voit l'efficacité des interrupts.
Bon avec ta modif  ( long newPosition = myEnc.read()/4;)  c'est nickel.

La librairie est plutôténorme. Tout ça pour ça.......

Bon je vais pouvoir m'attaquer enfin au menu de ma nouvelle régulation solaire.

john_lenfr

Clair que la lib est énorme mais elle est super efficace et prend en charge quasi toutes les cartes

Go Up