[Résolu] Alternance de deux temps sur Arduino UNO

Bonjour,

Je travaille actuellement sur la réalisation d'un Training Manager pour un club d'athlétisme. En ce moment, je me concentre sur la partie « temps fractionné » de mon programme. (Soit une alternance entre un temps de travail et un temps de repos.)
J'utilise, pour ceci :

  • un Arduino Uno R3
  • une Base Shield de référence SLD01099P de chez Seeed studio
  • un afficheur un afficheur série de 4*7 segments, de référence COM-11442, de chez Sparkfun.

Le programme que je tente de mettre en oeuvre est attaché avec mon message.
Ce que je voudrais faire, c'est alterner deux temps : un temps de course de 20 secondes et un temps de repos de 30 secondes.
Lors du test, on démarre bien sur un temps de travail (course), comme je le voudrais. Ensuite, on bascule sur le temps de repos.
Le problème se pose alors : au lieu de basculer à nouveau sur le temps de travail lorsque le temps de repos est à 0, on reste, en boucle, sur le temps de repos.

Avez-vous quelques conseils, éventuellement quelques corrections à apporter à mon programme, afin que je réussisse à obtenir une alternance entre mes deux temps ?

Merci d'avance.

test_chrono_frac.ino (1.99 KB)

salut,

dans ton programme tu n'utilises temps_course que 2 fois : une fois pour le déclarer, une fois pour l'initialiser ... après dans le loop, il n'y a que temps_repos qui est utilisé ...Dans le loop, quand second_remain et minute_remain sont à 0, tu relances toujours avec temps_repos (second_remain = temps_repos) ...

Comme tu bascules de l'un à l'autre, déclare un drapeau du genre boolean = phase_repos; qui te dit dans quelle phase tu es.
Avant de réinitialiser second_remain dans le loop, tu testes si repos = false ...
si phase_repos= false alors //on est dans une phase de travail, la phase qui suit est du repos
phase_repos= true;
seond_remain = temps_repos;
sinon //on est dans une phase de repos, la phase qui suit est du travail
phase_repos = false;
second_remain = temps_travail:
fin si

Merci beaucoup pour ton aide !

Du coup, pour que le temps de course ne se répète pas deux fois au départ, j'ai mis directement secondes_remain à 0. Il prend ensuite les valeurs de temps_course puis temps_repos.

Du coup, c'est résolu. Merci encore ! (:

test_chrono_frac.ino (2.7 KB)