Rebonjour Jacques,
C'est avec joie que je constate que je ne suis pas le seul autodidacte et adepte de petit pas en petit pas. J'ai pratiqué et pratique encore cette méthode pour les problèmes d'encodeurs depuis le début et si nous lisons bien le présent fils de discussion, cela transpire beaucoup cette méthode !
JMe87:
Bonjour,
je na sais pas s'il faut tester a nouveau. Ce que je sais c'est que, quand tu apprends a developper sous Arduino tu dois avoir un hardware en BETON. Tu dois etre sur que TOUT fonctionne a 100%, alim contacts etc etc.
Sinon tu ne sais pas localiser facilement la source du probleme.
Comme déjà mentionné, au point de départ, chez moi ce n'est pas toujours à 100 %, mais à petits pas, je finis par y arriver.
JMe87:
Dans ton cas, tu fais un petit programme qui utilise un seul codeur et par exemple 2 leds (+ et -).
C'est fait et individuellement, les quatre encodeurs fonctionnent très bien, seulement si j'utilise deux broches avec interruption de l'Arduino. Sinon, avec une seule broche dans strictement le même code de programmation, je n'ai en retour que des « O » et des « 1 », et pas de « -1 », donc pas moyen de savoir si j'ai un plus ou un moins, seulement qu'il y a eu un changement, comme en mode binaire, et le code en question est celui de l'exemple « Basic.ino » fourni avec la bibliothèque. Je ne change que le numéro des broches.
En revoici ma version francisé déjà publié ici :
/* Encoder Library - Basic Example
* http://www.pjrc.com/teensy/td_libs_Encoder.html
*
* Ce code d'exemple est dans le domaine public.
*/
#include <Encoder.h>
// Changer ces numéros de broches sur les broches connectées à votre encodeur.
// Meilleure performance: Deux broches ont une capacité d'interruption
// Bonnes performances: Seule la première broche est interruptif
// Faible performance: Aucune broche est interruptif
const byte ENCODEUR_1_SORTIE_A = 20;
const byte ENCODEUR_1_SORTIE_B = 22;
Encoder Encodeur_1 (ENCODEUR_1_SORTIE_A, ENCODEUR_1_SORTIE_B);
// Éviter d'utiliser des broches de LED attachés
void setup ()
{
Serial.begin (115200);
Serial.println ("Test de base d'Encoder :");
}
long Encodeur_1_EtatPrecedent = -999;
void loop()
{
long Encodeur_1_EtatActuel = Encodeur_1.read ();
if (Encodeur_1_EtatActuel != Encodeur_1_EtatPrecedent)
{
Encodeur_1_EtatPrecedent = Encodeur_1_EtatActuel;
Serial.println (Encodeur_1_EtatActuel);
}
}
Ou voir en pièce jointe.
Dans mon cas, je devrai utiliser au moins 6 encodeurs dans le même programme, pour le moment j'en suis à 4.
JMe87:
Et quand cela fonctionne, tu recommences avec un autre encodeur toujours tout seul etc etc
Je suis autodidacte et c'est la methode que j'utilise a mon entiere satisfaction ..... petit a petit, l'oiseau fait son nid
Jacques
Avec la bibliothèque « Encoder », les problèmes apparaissent soit en utilisant la paire des 5 et 6 ième broches d'interruptions de l'Arduino (broches 20 et 21) sur un troisième encodeur ou dès l'utilisation d'un encodeur avec une seule broche sur un connecteur avec interruption. Dans tous ces cas, le problème reste localisé et ne se propage.
L'ami René
Tous pour un et un pour tous !
Basic.zip (820 Bytes)