Merci pour l'astuce.
J'ai une erreur avec startMillisPause que je ne comprends pas , j'ai essayer de refaire à partir du code du bateau.
Arduino : 1.8.5 (Windows 10), Carte : "Arduino/Genuino Uno"
D:\ACER-Patrick\CLARISSE\Code bateau\00 ok\Voiture_OK_BATEAU\Voiture_OK_BATEAU.ino: In function 'void pause()':
Voiture_OK_BATEAU:137: error: 'startMillisPause' was not declared in this scope
startMillisPause = millis(); // <-- remise à 0 du second chrono ici
^
Voiture_OK_BATEAU:138: error: 'startMillis' was not declared in this scope
startMillis = millis(); // <-- remise à 0 du premier chrono
^
exit status 1
'startMillisPause' was not declared in this scope
Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.
void loop() {
// Variable globale pour faire le décompte du temps
unsigned long startMillis; // à 0 par défaut pour le chrono de checkDirection()( MVT normal) suivi de checkDirectionVersBordure()( mvt vers les bords)
unsigned long startMillisPause ; // à 0 par défaut pour le chrono des 15 mn
long TempsEcoule = millis() - startMillis;
long TempsEcouleAvantPause = millis() - startMillis;
// on regarde le temps, puis on choisit la direction et on roule
if (TempsEcoule < 600000) { // 10 mn * 60 * 1 000
checkDirection();
drive();
}
else if (TempsEcoule < 1200000) { // 20 mn * 60 * 1 000
checkDirectionVersBordure();
drive();
}
else if (TempsEcouleAvantPause > 1800000) { // 30 mn * 60 * 1 000 après 30 mn de fonctionnement mise en pause de 10 mn
pause();
}
else startMillis = millis();
delay (100);
}
void pause () { // utilisation du second chrono pour arrété au bout de 30 mn
delay (600000); // 10 mn d'attente soit 10 *60*1000(milli secondes)
startMillisPause = millis(); // <-- remise à 0 du second chrono ici
startMillis = millis(); // <-- remise à 0 du premier chrono
}
une autre question.
Je veux que le bateau continue de tourner pendant 3 sec même s'il ne détecte rien
Mais dans le code j'ai déjà un delay de 0.4 sec pour le servo.
Dans quel ordre écrire les 2 dealy ( 1 pour les moteurs, 1 pour le servo ) ?
// là on regarde la droite
if (ObsticalAhead == true) { // si ObstacleDevant est vrai donc si le coté gauche détecté, on s'y dirige
nextStep = TurnRight;
Serial.println("Next step is TurnRight");
delay (3000); // le bateau va dépasser l'angle saillant de la piscine
// on le force à continuer à tourner encore pendant 3 sec
// pour le recoller au bord
myservo.write(90);//RAZ de la position du servo
delay(400);
}