SetDigitalOutput() {FR}
Objectif
Contrôle une broche numérique(DIG) en mode sortie
Quand l’utiliser
À chaque fois que vous souhaitez modifier la sortie numérique, après un appel à SetDigitalPinMode() {FR}
Où l’utiliser
Probablement dans la section void loop()
pour réagir à l’environnement, ou dans la section void setup()
si vous souhaitez que la broche aie une valeur connue au démarrage.
Cliquez ici pour en apprendre plus sur les broches numériques du CRCduino
C’est fonction requiert l’utilisation des fonctions suivantes dans votre programme:
Valeur de retour
Aucune.
Prototype principal
static void CrcLib::SetDigitalOutput(unsigned char pin, unsigned char value)
Les paramètres suivants sont requis par la fonction:
pin
: Le nom de la broche à vérifier, de typeunsigned char
. Doit avoir été configurée comme sortie parSetDigitalPinMode
au préalable.value
: La valeur de contrôle de la broche, de typeunsigned char
. Peut être une de ces deux valeurs:LOW
, pour que la broche soit à 0 V.HIGH
, pour que la broche soit à 5 V.
Overloads
Cette fonction n’a pas d’overloads, elle ne peut être utilisée qu’avec le prototype principal.
Exemples
En apprendre plus
Pourquoi ne pas simplement utiliser la fonction Arduino native digitalWrite() à la place ?
Nous recommandons d’utiliser CrcLib::SetDigitalOutput()
parce qu’elle ajoute quelques couches de validation pour s’assurer qu’une broche n’est pas contrôlée de manière imprévue.
Comment est-ce que l’Exemple #2 fonctionne ?
Dans le monde Arduino, LOW
est implicitement égal à false
et HIGH
à true
.
Lorsque CrcLib::ReadDigitalChannel()
est appelé, il retourne l'état du bouton correspondant comme un bool
. Si le bouton est appuyé, true
est retourné, et, autrement, false
est retourné. En d’autres termes, si le bouton est appuyé, le code qui s’exécutera sera: CrcLib::SetDigitalOutput(CRC_DIG_1, !true);
L’opérateur !
, appelé NOT, inverse l'état logique de la valeur qui le suit. true
devient false
et vice versa. Ainsi, toujours lorsque le bouton est appuyé, le code exécuté sera en fait CrcLib::SetDigitalOutput(CRC_DIG_1, false);
Comme false
est équivalent à LOW
, la sortie ne sera pas allumée.
Ainsi, la ligne CrcLib::SetDigitalOutput(CRC_DIG_1, !(CrcLib::ReadDigitalChannel(BUTTON::COLORS_UP)));
contrôlera à chaque fois le port DIG1 afin qu’il soit exactement l’opposé du bouton du haut de type “couleur“.
Pourquoi utiliser la méthode de l’Exemple #2 au lieu de celle de l’Exemple #1 ?
Les deux méthodes sont valides et peuvent être toutes deux utilisées. Cependant, même si #1 est plus facile à programmer et à lire pour un novice, #2 devrait être favorisée puisqu’elle est plus directe et qu’il est donc moins facile d’y introduire une erreur lors d’une modification (par exemple, changer le port à un seul des deux endroits).