Bonsoir
Je fais une erreur avec constrain(), mais je ne la retrouve pas.
Mon constrain fonction en décrémentant et s'arrête bien à la valeur min, mais lorsque j'incrémente et qu'il atteint la valeur max, il reprend la valeur min, et recommence.
//LINE TRACKER BY KAMMO
//STEPPER, définition des pins
#define E1 10 // Enable PWM Pin for motor 1
#define E2 11 // Enable PWM Pin for motor 2
#define I1 8 // Control pin a for motor 1
#define I2 9 // Control pin b for motor 1
#define I3 5 // Control pin a for motor 2
#define I4 6 // Control pin b for motor 2
//Pins Capteurs: LL LC CC CR RR
byte PinFF = 7; //Front sensor
byte PinLL = 2; //LPin capteur Left Left
byte PinCC = 3; //Center Center
byte PinRR = 4; //Right Right
//Déclaration des variables de lecture binaire
boolean b3, b2, b1, b0;
int b = 0;
// Vitesse des moteurs PWM
byte vitesse = 125; //vitesse au démarrage
byte adh = 5; //1=accélération douce 255=accélération forte
byte Vmin = 90; //vitesse minimum des moteurs
byte Vmax = 255; //vitesse maximum des moteurs
void setup() {
Serial.begin(9600);
//Pins Moteurs
pinMode(E1, OUTPUT);
pinMode(E2, OUTPUT);
pinMode(I1, OUTPUT);
pinMode(I2, OUTPUT);
pinMode(I3, OUTPUT);
pinMode(I4, OUTPUT);
//Pins digitaux capteurs
pinMode ( PinLL , INPUT) ;
pinMode ( PinCC , INPUT) ;
pinMode ( PinRR , INPUT) ;
pinMode ( PinFF , INPUT) ;
delay(2000);
}
void loop() {
//V I T E S S E
//comparateur
if (digitalRead (PinFF) == LOW) { //Si le capteur capte du noir
VITMOTEUR(1); //1=accélérer
}
else { //Si la couleur est claire
VITMOTEUR(-1); //-1=ralentir
} //fin du comparateur
Serial.println(vitesse);
delay(20);
}//fin de loop()
// F O N C T I O N S
void VITMOTEUR(byte sens) {
vitesse = vitesse + (adh * sens); //byte adh est déclarée en début de code et vaut 5
vitesse = constrain (vitesse, Vmin, Vmax); // Vmin<vitesse<Vmax
delay(70);
}
/*void print5bits(byte aByte)
{
//Serial.println(F("B"));
//for (int8_t aBit = 2; aBit >= 0; aBit--)
// Serial.println(bitRead(aByte, aBit) == 0 ? F("0") : F("1")); // affiche les trois booléens
Serial.println();
Serial.println("b0");
Serial.println (b0);
Serial.println("aByte");// cette partie renvoie le code binaire en fonction des capteurs
Serial.println(aByte);
Serial.println(" ");
delay(500); }*/