bon alors j'ai commencé à réflechir au problème, mais je ne sais pas si l'instruction millis() est adaptée :
pour la 1ère action, dans tous les cas ça se passe au démarrage, et il ne peut rien se passer pendant ce temps, donc un délai de 30 secondes devrait suffire.
Ensuite, pour les 2 actions possibles, je ne sais pas dans quel ordre elles arrivent. En fait, c'est pour faire un allumage d'essuie-glace par intermittence selon la position d'un interrupteur, et un allumage automatique des feux en fonction d'une photo résistance ...
Donc je peux avoir plusieurs configurations :
intermittence des essuie-glaces, feux éteints, mais pendant l'intermittence, je peux passer dans un tunnel
feux déjà allumés car c'est la nuit, et j'enclenche l'interrupteur de l'intermittence
Ça n'a rien de sorcier ... Et millis() a tout sont intérêt quand il s'agit de voir le temps qui passe ...
Dans le loop
If millis() > 30000 alors déclencher_premiere action (millis part de zéro quand le nono démarre, et compte pendant 50 jours ...)
Si bouton2 appuyé déclencher_seconde_action
Sinon arrêter_seconde_action
Si lumiere_faible declencher_troisieme_action
Sinon arreter_troisieme_action
Fin du loop, on repart au début ...
Ce n'est pas du multitâches ... Mais de la tâche multiple ...
derder9161:
Au passage j'aimerais savoir si il existe un noyau multitâche temps réel sur Arduino ?
Bonjour,
Je vais prêcher pour ma paroisse : il existe Trampoline, un OS temps-réel multitâche préemptif conforme OSEK/VDX et AUTOSAR 4. Cet OS est développé par des membres de l'équipe Systèmes Temps Réel de l'IRCCyN (UMR CNRS) à Nantes. Il est sous licence LGPL (et probablement GPL pour la v3). Il tourne, entre autres, sur AVR depuis quelques années et est employé sur cette cible à l'IUT de Nantes en GEII. Il fonctionne sur les Arduino Uno (et très probablement sur tous ceux à base d'ATMega 328) et sur le Mega. Une particularité est que la configuration est construite hors ligne à partir d'une description (il n'y a donc pas de création dynamique d'objets). Ceci permet de tailler l'OS selon l'application et permet également de loger les descripteurs statiques en FLASH avec une économie de RAM substantielle.
Actuellement j'ai un étudiant de Master qui retouche les libs de base de l'Arduino, et quelques autres, pour assurer qu'elles fonctionnent correctement en multitâche préemptif et également pour récupérer une base de temps. Ça sera opérationnel en septembre mais à tester (en ce qui concerne les libs).
Si des utilisateurs avancés de l'Arduino se montrent intéressés, on poussera vers le support des Arduino à base d'ARM mais aussi vers un support de plus de libs si de l'aide est apportée.