Décidément j'ai du mal. J'ai plusieurs problèmes:
-- Sens de rotation voici le code:
//#define ENCODER_DO_NOT_USE_INTERRUPTS
#include <Encoder.h>
const int dir = 4;
const int vitesse = 5;
//const int Mtr1SA = 4;
//const int Mtr1SB = 5;
Encoder myEnc(2, 3);
long oldPosition = -999;
void setup() {
pinMode(vitesse, OUTPUT);
pinMode(dir, OUTPUT);
Serial.begin(9600);
analogWrite(vitesse, 0);
analogWrite(dir, HIGH);
}
void loop() {
analogWrite(dir, HIGH);
delay(1000);
Serial.println("on demare");
analogWrite(vitesse, 100);
delay(1000);
analogWrite(vitesse, 0);
delay(1000);
Serial.println("on change de sens");
analogWrite(dir, LOW);
analogWrite(vitesse, 250);
delay(1000);
analogWrite(vitesse, 0);
}
Le moteur tourne toujours dans le même sens... J'ai bien branché le cable J1-1 en 4 sur la carte arduino (je l'ai même changé au cas ou....)
-- Problème sue les encodeurs:
voici le programme:
#include <Encoder.h>
const int dir = 4;
const int vitesse = 5;
//const int Mtr1SA = 4;
//const int Mtr1SB = 5;
Encoder myEnc(2, 3);
long oldPosition = -999;
void setup() {
pinMode(vitesse, OUTPUT);
pinMode(dir, OUTPUT);
Serial.begin(9600);
Serial.println("Basic encoder Test:");
Serial.println(HIGH);
Serial.println(LOW);
analogWrite(vitesse, 0);
analogWrite(dir, HIGH);
}
void loop() {
long newPosition = myEnc.read();
Serial.println(newPosition);
if (newPosition != oldPosition) {
oldPosition = newPosition;
Serial.println(newPosition);
Serial.println(dir);
}
if ( newPosition > -200 ) {
analogWrite(vitesse, 127);
}
else {
analogWrite(vitesse, 0);
}
}
-- J'ai du mal a savoir combien de "tick" "compteur de l'encodeur" pour un tour d'axe. Si j'ai bien compris d'après la doc il y en a 6 par tour moteur avec une réduction de 52.734 cela ferai 6*52.734=316 . Il semble pourtant que cela ne fait qu'un demi tour d'axe ....
-- Les pins de l'encodeur doivent bien être branché en 2 et 3? si je les branche en 4 et 5 (en modifiant dans le programme bien évidemment) je n'ai pas le même résultat
-- Je voulais contrôler le nombre de tick: arréter le moteur au bous de 200 tick par exemple mais il s'arrête au bous de 358. Est ce du à l'inertie? au temps de traitement? Peut on faire mieux?
Décidément je ne suis pas très doué....