je voudrais savoir si il est possible de détecter un front montant (ou descendant) sur un pin digital de l'arduino uno.
Bien sûr, je ne veux pas utiliser une interruption matérielle, je voudrais avoir une sorte de if(front montant)
ou quelque chose comme ça.
Comme ce n'est absolument pas pour réaliser un projet ou un montage mais juste pour ma culture "Arduinesque", je ne peux pas vous donner d'informations sur ce qui est à effectuer ou sur l'origine du changement d'état.
J'espère ne pas avoir été trop vague.
je voudrais savoir si il est possible de détecter un front montant (ou descendant) sur un pin digital de l'arduino uno.
Bien sûr, je ne veux pas utiliser une interruption matérielle, je voudrais avoir une sorte de if(front montant)
ou quelque chose comme ça.
Comme ce n'est absolument pas pour réaliser un projet ou un montage mais juste pour ma culture "Arduinesque", je ne peux pas vous donner d'informations sur ce qui est à effectuer ou sur l'origine du changement d'état.
J'espère ne pas avoir été trop vague.
Merci !
Bonjour
basiquement si tu ne souhaite pas utiliser d'interruption
il ne reste que l'option de faire de l'interrogation en polling
Tu le dit toi même, un front (montant ou descendant) c'est un changement d'état.
Haut et bas (High / low, 5V / 0V etc etc...) ce sont des états.
Hors interruption, comme le suggère Artouste, c'est de regarder continuellement l'état d'une broche et de mémoriser cet état et de comparer avec l'état précédent.
Si un état précédemment bas devient un état haut, tu as eu un front montant
Si un état précédemment haut devient un état bas, tu as eu un front descendant
Pourquoi ne pas vouloir utiliser les interruptions matérielles?
Le soucis de faire un if(front montant) , selon la densité du code, le programme peut passer à côté d'un évènement, particulièrement en cas d'usage de fonctions bloquantes
Leonito2003:
Les interruption matérielles ne sont pas idéales pour des fonctions longues, je voulais juste savoir si c'était possible autrement.
Pour de la récurrence d'apparition faible ET si tu connais/accepte le "temps de polling"
çà ne pose pas de problème.
une bonne approche des 2 concepts est plutôt bien résumé avec la lib encoder de PJRC
Leonito2003:
Les interruption matérielles ne sont pas idéales pour des fonctions longues, je voulais juste savoir si c'était possible autrement.
l'idée étant de ne pas avoir de fonction longue dans une interruption : tu réduis l'interruption à sa plus simple expression, par exemple positionner un flag ou incrémenter un compteur, et ensuite c'est dans ta loop que tu traites ce qu'il convient de faire en fonction de l'état du flag ou du compteur