La même broche pour envoyer, recevoir et interruption c'est possible ?

Bonjour,

J'aimerai savoir si avec arduino il est possible de faire ceci :

envoyer un signal tout ou rien sur une pin (ça pour le coup je sais que c'est possible)
puis mettre cette pin en interruption externe pour attendre un etat ou un front particulier
et lire le signal de réponse sur cette même pin.

donc la pin en question va passer de sortie à interruption externe puis entrée en boucle...

Et si c'est possible quelle serait la procédure ?
J'ai un peu peur de tout cramer

merci

Non, pas de problème, à condition que le récepteur du signal se comporte en conséquence, c'est à dire qu'il soit récepteur, puis émetteur ensuite.

pinMode(PIN, OUTPUT);
DigitalWrite(PIN, HIGH);      // PIN en sortie
delay(X);                            // X en ms
DigitalWrite(PIN, LOW);
pinMode(PIN, INPUT);         // PIN en entrée
attachInterrupt(digitalPinToInterrupt(PIN), fonction, CHANGE);

Voir la doc : attachInterrupt() - Arduino Reference

Je ne vois pas l'intérêt de "entrée en boucle", puisque la fonction d'interruption va être appelée à chaque front (montant ou descendant ou les deux).

PIN peut être D2 ou D3 sur ATMEGA328, sinon il faut passer par PinChangeInterrupt.

Ah bonne nouvelle, merci pour l'aide, il y a même du code d'exemple, merci beaucoup :smiley:

hbachetti:
Je ne vois pas l'intérêt de "entrée en boucle", puisque la fonction d'interruption va être appelée à chaque front (montant ou descendant ou les deux).

Et bien après avoir lu il faut bien remettre la pin en sortie et couper l'interruption externe pour recommencer un nouveau cycle d'envoi et reception... a moins qu'il soit possible d'avoir une pin en sortie avec une interruption attachée dessus dans le même temps sans conflit... c'est le cas ?

donc la pin en question va passer de sortie à interruption externe puis entrée en boucle...

OK. Je n'avais pas bien compris la phrase.

a moins qu'il soit possible d'avoir une pin en sortie avec une interruption attachée dessus dans le même temps sans conflit... c'est le cas ?

Oui, c'est possible, mais quand on change la sortie, cela provoque une interruption. La doc dit qu'ainsi on peut avoir une interruption soft.
Si tu ne souhaite pas être interrompu, soit il faut désactiver l'interruption, soit dans la fonction d'interruption ne pas la traiter.

jero_niimo:
Et bien après avoir lu il faut bien remettre la pin en sortie et couper l'interruption externe pour recommencer un nouveau cycle d'envoi et reception.

On ne voit pas très bien l'application pratique