si la lumière varie en permanence entre 499 et 501, c'est normal.
soit tu mets une valeur plus petite et une plus grande 400 - 550
soit tu mets hysteresis afin de palier au passage permanent entre chaque valeur.
mais le fait de mettre digitalWrite(onOff, LOW); dans ta boucle for, c'est pas le top ![]()
à chaque incrémentation, ca met le onoff à low
mets le après ta boucle
void MoteurAccelerationPWM()
{
// Acceleration
for( int i = 80; i<= 90; i++ )
{
analogWrite( onOff, i );
delay(50); // delay pour avoir un progression
}
digitalWrite(onOff, LOW); // arrête le moteur a la fin de l'action
}
ou tu le mets juste après l'appel dans ton if
if (lum1 > 500 && valid == 0)
{
digitalWrite(monter, HIGH);
digitalWrite(descendre, LOW);
MoteurAccelerationPWM();
valid = 1;
digitalWrite(onOff, LOW); // arrête le moteur a la fin de l'action
}
if (lum1 < 500 && valid ==1 ) // Si lecture est inférieur a 500 le moteur descend en ralentissant.
{
digitalWrite(monter,LOW);
digitalWrite(descendre, HIGH);
MoteurDescelerationPWM();
valid = 0;
digitalWrite(onOff, LOW); // arrête le moteur a la fin de l'action
}
mais ca m'étonnerait que ta valeur puisse être égale à 500 très longtemps ![]()