Bonjour, j'ai récupéré la responsabilité d'une activité utilisant un arduino léonardo pour piloter le passage de diapositives dans le logiciel Powerpoint. On utilise deux contacteurs pour détecter un passage et changer de diapo (il y a également des diodes lumineuses et un buzzer qui s'actionnent au contact) .
Actuellement on peut actionner le bouton A ou le bouton B indifféremment: un appui sur l'un ou l'autre fait passer la diapo (juste une temporisation de 2 secondes entre chaque appui). On peut actuellement appuyer deux fois sur le même bouton consécutivement.
Je voudrais faire évoluer le code en obligeant à une alternance de passage entre BtA et BtB (pas de double appui successif sur l'un ou l'autre).
Action BtA-> BtA bloqué -> Action BtB -> BtB bloqué -> Action BtB ......
Toutefois on doit pouvoir initier la séquence en commençant indifféremment par BtA ou BtB.
Comme je suis un jeune débutant en Arduino (70 ans), je fais appel à la communauté pour m'aider à progresser, car je découvre progressivement les fonctions et la programmation..
Voici le code actuel
Comme dit JML tu peux faire une machine d'état.
Ca me parait quand même un peu surdimensionné. Il suffit de mémoriser le dernier bouton enfoncé et de regarder si le bouton enfoncé est différent.
Une petite remarque:
Tu as donné un nom à tes entrées, pourquoi tu n'as pas donné de nom à tes sorties? Ca rendrait quand même le programme plus lisible.
Merci de vos réponses. J'ai pris en compte vos conseils et retravaillé le programme.
Il fonctionne désormais selon mes souhaits. (jusqu'à une nouvelle envie de fonctionnalité, probablement une gestion du temps...)
Oui, tu peux faire un reset, ça demande un bouton supplémentaire si tu trouves que le bouton reset de la carte n'est pas pratique..
Tu pourrais envisager autre chose:
soit tu appuies longuement sur un bouton
soit tu appuies sur les deux boutons en même temps
soit tu appuies 5 fois de suite sur le même bouton
Je reviens avec une autre question: Mes deux entrées ButtonPin1 et ButtonPin2 sont reliées à des contacteurs éloignés, avec une longueur de fil de 4 à 5 mètres. Dans un cas comme cela, faut il mieux mettre une résistance PullUp par la programmation, ou créer une résistance PullDown avec une résistance?
Dans mon cas ces deux contacteurs commandent le passage d'une diapositive Powerpoint avec le clavier virtuel (lettre "s") et j'ai parfois des déclenchements fantômes. Merci
Si tu soupçonnes des perturbations sur les boutons, tu peux mettre une résistance de pullup externe (tu peux descendre jusqu'à 1k) et éventuellement mettre un condensateur de 100nF aux bornes des boutons.