bonjour,
quelqu'un peut-il m’expliquer ce code?
Car, je pense que ça pourras m'aider .
Merci d'avance!
/ / Mux_Shield_DigitalOut_Example
/ / Mux Shield | Mayhew Labs
/ *
Cet exemple montre comment afficher haute ou basse sur tous les 48 pins. Pour utiliser les broches analogiques que numériques, nous utilisons
numéros des broches 14-16 (au lieu de numéros analogiques 0-2).
Pour simplifier ce code en outre, on peut utiliser pour les boucles imbriquées ou des appels de fonction.
/ / Donner des noms pratiques pour les broches de commande
Define CONTROL0 5 / / MUX broche de commande 0 (S3 est connecté à Arduino broche 2)
Define Control1 4
Define Control2 3
Define Control3 2
void setup ()
{
/ / Définit les broches de commande MUX à la sortie
pinMode (CONTROL0, OUTPUT);
pinMode (Control1, OUTPUT);
pinMode (Control2, OUTPUT);
pinMode (Control3, OUTPUT);
}
void loop ()
{
/ / Comme tous les 3 multiplexeurs ont les mêmes broches de commande, le multiplexeur de données en ligne que nous voulons
/ / Parler devrait être réglé pour la sortie et les deux autres lignes de multiplexeur doit être être «contournée» par
/ / Fixer les repères d'entrée
/ / Activer la sortie numérique à la broche 14 (0 MUX) et éteindre les 2 autres broches de données du multiplexeur
pinMode (14, OUTPUT);
pinMode (15, INPUT);
pinMode (16, INPUT);
/ / Cette boucle for est utilisée pour faire défiler le premier multiplexeur
for (int i = 0; i <16; i + +)
{
/ / Les 4 commandes suivantes définir la logique correcte pour les broches de commande pour sélectionner l'entrée désirée
digitalWrite (CONTROL0, (i & 15) >> 3); / / S3
digitalWrite (Control1, (i & 7) >> 2); / / S2
digitalWrite (Control2, (i & 3) >> 1); / / S1
digitalWrite (Control3, (i & 1)); / / S0
digitalWrite (14, HIGH);
retard (100);
digitalWrite (14, LOW);
retard (100);
}
/ / Activer la sortie numérique à broche 15 (1 MUX) et éteindre les 2 autres broches de données du multiplexeur
pinMode (14, INPUT);
pinMode (15, OUTPUT);
pinMode (16, INPUT);
/ / Cette boucle for est utilisée pour faire défiler la deuxième multiplexeur
for (int i = 0; i <16; i + +)
{
digitalWrite (CONTROL0, (i & 15) >> 3); / / S3
digitalWrite (Control1, (i & 7) >> 2); / / S2
digitalWrite (Control2, (i & 3) >> 1); / / S1
digitalWrite (Control3, (i & 1)); / / S0
digitalWrite (15, HIGH);
retard (100);
digitalWrite (15, LOW);
retard (100);
}
/ / Activer la sortie numérique à la broche 16 (MUX 2) et éteindre les 2 autres broches de données du multiplexeur
pinMode (14, INPUT);
pinMode (15, INPUT);
pinMode (16, OUTPUT);
/ / Cette boucle for est utilisée pour faire défiler la troisième multiplexeur
for (int i = 0; i <16; i + +)
{
digitalWrite (CONTROL0, (i & 15) >> 3); / / S3
digitalWrite (Control1, (i & 7) >> 2); / / S2
digitalWrite (Control2, (i & 3) >> 1); / / S1
digitalWrite (Control3, (i & 1)); / / S0
digitalWrite (16, HIGH);
retard (100);
digitalWrite (16, LOW);
retard (100);
}
}