Encodeur rotatif

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

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

jpjcb66: 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?

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

jpjcb66:

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

:grin:
Il est cablé comment ton encodeur ?
le commun va sur quoi ? +5V ou GND

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

jpjcb66: 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é?

john_lenfr:

jpjcb66: 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 :grin:

[u]Encoder provides 4X counting mode[/u] 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.

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

division/4 ou comptage sur modulo 4

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.

division/4 ou comptage sur modulo 4

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

jpjcb66: 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 :grin: 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

Artouste:
division/4 ou comptage sur modulo 4

/4 fonctionne mais pas %4

john_lenfr:

Artouste: division/4 ou comptage sur modulo 4

/4 fonctionne mais pas %4

si mais à condition de faire un test sur condition=0 :grin: pas utile là

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 :

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

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:

/* 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;
  }
}
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 :wink:

jpjcb66: 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 :

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)

void loop() { long newPosition = myEnc.read(); if (newPosition != oldPosition) { oldPosition = newPosition; Serial.println(newPosition); } }

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.

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

Bonne nuit, merci pour le coup de main. ;)