SetDigitalOutput() {FR}

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 type unsigned char. Doit avoir été configurée comme sortie par SetDigitalPinMode au préalable.

  • value: La valeur de contrôle de la broche, de type unsigned 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

#include <CrcLib.h> void setup() { CrcLib::Initialize(); // Configurer le port DIG 1 comme sortie CrcLib::SetDigitalPinMode(CRC_DIG_1, OUTPUT); /* Reste du code d'initialisation ... */ } void loop() { CrcLib::Update(); // Vérifier l'état du bouton du haut dans le groupe "couleur" if (CrcLib::ReadDigitalChannel(BUTTON::COLORS_UP) == HIGH) { // Le bouton est appuyé, éteindre le port DIG 1 CrcLib::SetDigitalOutput(CRC_DIG_1, LOW); } if (CrcLib::ReadDigitalChannel(BUTTON::COLORS_UP) == LOW) { // Le bouton n'est pas appuyé, allumer le port DIG 1 CrcLib::SetDigitalOutput(CRC_DIG_1, HIGH); } /* Reste de la boucle principale ... */ }
#include <CrcLib.h> void setup() { CrcLib::Initialize(); // Configurer le port DIG 1 comme sortie CrcLib::SetDigitalPinMode(CRC_DIG_1, OUTPUT); /* Reste du code d'initialisation ... */ } void loop() { CrcLib::Update(); // Le port DIG 1 réplique l'inverse du bouton vers le haut de type "couleur" CrcLib::SetDigitalOutput(CRC_DIG_1, !(CrcLib::ReadDigitalChannel(BUTTON::COLORS_UP))); /* Reste de la boucle principale ... */ }

 

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).

Articles reliés