Etat portes et serialprint

Bonjour, j'aimerais connaitre la façon la plus élégante pour écrire le code permettant d'envoyer un Serial.print("x=numéro de la porte") (et un seul) dès lors qu'une porte d'entrée passe de HIGH en LOW ou inversement. Il y a 8 portes à scanner ainsi.
Il s'agit de la carte uno.
Un grand merci par avance.

Vincent.

bonjour,
le plus élégant serait de passer par des interruptions.
Comme elles ne sont pas assez nomrbeuses, tu peux en utiliser une qui va détecter un changement d'état sur n'importe laquelle des huit portes, puis analyser avec un test laquelle c'était.

Bonjour, merci pour la réponse. Intelligente, l'idée! J'avais effectivement lu que l'attachinterrupt était la solution permettant de ne pas surcharger le fonctionnement par une boucle lourde, mais la limitation du nombre de broches pour cette fonction m'avait fait abandonner l'option. Donc, chouette l'idée d'utiliser une porte qui va tester les autres. Une petite piste pour le code? Grand merci encore.

Ajout pour la question du code. J'utilise le code utilisant la variable buttonstate à comparer avec le lastbuttonstate, cela fonctionne bien, mais je ne vois pas très bien dès lors qu'il faut scanner l'ensemble des portes. Merci

Vincdubois:
Ajout pour la question du code. J'utilise le code utilisant la variable buttonstate à comparer avec le lastbuttonstate, cela fonctionne bien, mais je ne vois pas très bien dès lors qu'il faut scanner l'ensemble des portes. Merci

Faire la même chose en utilisant un tableau possédant autant d'éléments que tu as d'entrées à surveiller.

Il ne faut pas faire de complexe, une boucle de scrutation n'a rien de moins élégant qu'un système fonctionnant sous interruption. Tout dépend du besoin. Si le programme n'est pas chargé par ailleurs il n'y a aucune raison de ne pas faire une boucle de scrutation. C'est simple et sans surprise. Et la mise au point et bien moins complexe.

Un code "élégant" c'est un code qui répond aux besoins, qui est proprement écrit et commenté et qui peut facilement évoluer.

Dans une application comme la tienne, la principale contrainte qu'il faut se donner c'est d'interdire les fonctions bloquantes comme delay() qui peuvent introduire du retard dans l'identification de phénomènes transitoires.

Je te remercie pour ta réponse. Je vais essayer selon ton conseil, mais je débute. J'ai commencé par une application simple en domotique. J'envoie via le serialprint un chiffre de 1à 16 vers Excel, résultant selon le high/low des portes arduino. Et Excel déclenche alors en VBA un fichier son, ainsi que l'envoi d'un mail. Cette partie fonctionne parfaitement déjà. Juste encore à faire comme tu dis, sous forme de tableau. J'ai pas encore réussi à trouver un modèle parmi les nombreux exemples sur le web, mais je finirai bien par trouver. Encore merci.