Bonjour, je rencontre un problème avec mon programme Arduino.
Je vous explique mon problème, j'ai relié le bouton play et le bouton musique suivante d'un mp3 à un relais qui est relié à Arduino. J'ai créée un programme qui lance des instructions lorsqu'une personne est détectée, voici le programme :
Ce programme fonctionne très bien sauf que je rencontre un soucis. Le lecteur MP3 s'éteint au bout d'une minute d'inactivité donc cela fait que si quelqu'un est détecté puis rien pendant 1 minute, la prochaine personne n'aura pas la musique vu que le lecteur MP3 sera éteint, si vous voyez ce que je veut dire...
La solution que j'ai envisagé est donc de relier le bouton musique suivante à un relais de l'arduino et faire tourner en boucle ce programme.
Cela permet de cliquer sur le bouton musique suivante toutes les 20 secondes et d'empêcher la mise en veille du MP3.
Sauf que je voudrais que dès que l'évènement d'une personne survient même pendant ces delay, le 1er programme se mette en route puis dès qu'il a fait un tour il retourne dans la seconde boucle.
J'espère que j'ai été clair si vous voulez des précisions hésitez pas !
Tu pourrais aussi utiliser une variable de temps genre previousMillis que tu met à 0 après avoir jouer ta musique. Et dès qu'elle est à 50 seconde (par exemple) ou tu appelles ta fonction appuie sur le bouton mp3 ou tu fais un if du type si previousMillis >= 50000 appuie sur le bouton et previousMillis = 0.
Je ne sais pas du tout si j'ai été clair .
Mais je pense que les delay sont à enlever
Je comprends mais le problème c'est que les delay sont différents, regarde dans mon premier code, je ne peux rajouter la fonction previousMillis si? En tout cas je ne vois pas comment faire...
La fonction loop() va alors s'exécuter plusieurs centaines de milliers de fois par seconde, sans jamais s'arrêter sur un delay. Et une fois de temps en temps, elle entrera dans une des instructions IF.
A partir de là, tu peux ajouter d'autres instructions.
L'ensemble donnera l'impression de s'exécuter en parallèle.