Go Down

Topic: [RESOLU] lire état d'une sortie digitale (Read 3 times) previous topic - next topic

john_lenfr

Jan 28, 2013, 09:03 pm Last Edit: Jan 30, 2013, 09:15 am by john_lenfr Reason: 1
Est-il possible de connaitre l'état d'une sortie digitale?

Autrement dit est-ce qu'un digitalread(pin) fonctionne sur un pin paramétré en OUTPUT?

Ou bien je n'ai pas d'autre choix que de gérer l'état de ma sortie par un flag?


EDIT: Après discussion sur ce topic très intéressant, il s'avère que l'on peut effectivement faire un digitalread() sur un pin déclaré en OUTPUT. Et que c'est le moyen le plus simple.

Christian_R

Je ne comprends pas trop la question.
C'est ton programme qui décide ce que sort la sortie digitale, donc tu sais déjà ce qu'il doit y avoir dessus.
Christian

B@tto

Au pire tu te sers d'un boolean

Code: [Select]

boolean etat;
...
digitalWrite(pin,etat);
Serial.print("Le pin n°");
Serial.print(pin);
Serial.print(" est ");
if(etat) {
Serial.print("HIGH");
} else { Serial.print("FALSE");
}




john_lenfr

En fait je suis en I2C entre une arduino UNO et une NANO.

Mon arduino UNO est la "Master"
Mon arduino NANO est la "Slave"

La NANO pilote des relais, la master gère le LCD+Ethernet+DS1307

Ce qu'il se passe, c'est que la NANO reçoit les ordres de la UNO, mais si l'ordre n'est pas bien reçu, je n'ai aucun moyen de savoir si la sortie pour laquelle j'ai demandé qu'elle soit à HIGH y est bien?

Donc si je pouvais lire l'état d'une sortie de la NANO, pour remonter l'info à la UNO par l'intermédiaire de l'I2C cela me rassurerait au niveau contrôle de l'application.

Parce que les flags c'est bien gentil, mais si j'ai une coupure quelconque, il se peut que j'ai un décalage entre un flag qui est situé dans la partie Master du programme, et un flag qui est situé dans la partie Slave du programme.

Ce que je fais en ce moment c'est de passer les paramètres de flag entre les deux cartes par l'intermédiaire du bus I2C.

Mais si j'ai par exemple un flag qui est à "true" d'un coté, et "false" de l'autre coté, comment je sais quel est le bon sans pouvoir scrutter réellement la sortie?

Ou alors la solution serait de réinjecter le signal des OUTPUTS sur d'autres pin déclarés en INPUTS pour connaitre l'état des sorties?

Est-ce que j'ai été clair parce que je suis un peu dans mon truc donc pas évident à expliquer...
:smiley-mr-green:

Artouste


En fait je suis en I2C entre une arduino UNO et une NANO.

Mon arduino UNO est la "Master"
Mon arduino NANO est la "Slave"

La NANO pilote des relais, la master gère le LCD+Ethernet+DS1307

Ce qu'il se passe, c'est que la NANO reçoit les ordres de la UNO, mais si l'ordre n'est pas bien reçu, je n'ai aucun moyen de savoir si la sortie pour laquelle j'ai demandé qu'elle soit à HIGH y est bien?

Donc si je pouvais lire l'état d'une sortie de la NANO, pour remonter l'info à la UNO par l'intermédiaire de l'I2C cela me rassurerait au niveau contrôle de l'application.

Parce que les flags c'est bien gentil, mais si j'ai une coupure quelconque, il se peut que j'ai un décalage entre un flag qui est situé dans la partie Master du programme, et un flag qui est situé dans la partie Slave du programme.

Ce que je fais en ce moment c'est de passer les paramètres de flag entre les deux cartes par l'intermédiaire du bus I2C.

Mais si j'ai par exemple un flag qui est à "true" d'un coté, et "false" de l'autre coté, comment je sais quel est le bon sans pouvoir scrutter réellement la sortie?

Ou alors la solution serait de réinjecter le signal des OUTPUTS sur d'autres pin déclarés en INPUTS pour connaitre l'état des sorties?

Est-ce que j'ai été clair parce que je suis un peu dans mon truc donc pas évident à expliquer...
:smiley-mr-green:

bonjour
peut etre en  lisant les ports concernés
voir
http://www.arduino.cc/en/Reference/PortManipulation

Go Up