Le Charlieplexing est une technique de contrôle de nombreuses LED à l'aide de quelques broches d'E / S. Le Charlieplexing est identique au multiplexage, mais il utilise la logique à trois états (entrée haute, basse) pour réduire considérablement le nombre de broches et gagner en efficacité par rapport au multiplexage. La technique Charlieplexing porte le nom de son inventeur, Charlie Allen, qui a inventé la technique en 1995. Nous avons précédemment utilisé la technique de multiplexage dans Arduino pour interfacer un affichage à 7 segments à 4 chiffres et piloter une matrice LED 8x8.
Charlieplexing vous permet de contrôler N * (N - 1) LED, où N est le nombre de broches. Par exemple, vous pouvez contrôler 12 LED en utilisant 4 broches Arduino 4 * (4-1) = 12. Les LED sont des diodes, et dans les diodes, le courant ne circule que dans une seule direction. Ainsi, dans Charlieplexing, nous connectons deux LED en parallèle l'une avec l'autre mais avec une polarité opposée de sorte qu'une seule LED s'allume à la fois. Lorsqu'il s'agit d'Arduino ou d'autres cartes microcontrôleurs, vous n'avez jamais assez de broches d'entrée / sortie. Si vous travaillez sur un projet dans lequel vous devez interfacer un écran LCD, un tas de LED et des capteurs, vous êtes déjà à court de broches. Dans cette situation, vous pouvez LED charlieplex pour réduire le nombre de broches.
Dans ce tutoriel, nous allons utiliser la technique Charlieplexing pour contrôler les 12 LED à l'aide de 4 broches Arduino.
Composants requis
- Arduino UNO
- À LED (12)
- 4 résistances (330 ohms)
- Fils de cavalier
- Planche à pain
Schéma
Fondamentalement, dans ce schéma de circuit, 12 LED sont connectées avec 4 broches Arduino via des résistances. Chaque broche d'Arduino est connectée à trois LED. Il y a six groupes de LED, et dans chaque groupe, 2 LED sont connectées, et les deux LED sont parallèles entre elles mais avec une polarité opposée de sorte qu'une seule LED s'allume à la fois. Donc, selon le schéma de circuit pour allumer la led 1, il doit y avoir un signal HIGH sur la broche A et un signal LOW sur la broche B, et les broches C et D doivent être déconnectées. La même procédure sera suivie pour les autres LED. Le tableau complet des réglages des broches pour chaque LED est donné ci-dessous:
LED | Broche 8 | Broche 9 | Broche 10 | Broche 11 |
1 | HAUTE | FAIBLE | CONTRIBUTION | CONTRIBUTION |
2 | FAIBLE | HAUTE | CONTRIBUTION | CONTRIBUTION |
3 | CONTRIBUTION | HAUTE | FAIBLE | CONTRIBUTION |
4 | CONTRIBUTION | FAIBLE | HAUTE | CONTRIBUTION |
5 | CONTRIBUTION | CONTRIBUTION | HAUTE | FAIBLE |
6 | CONTRIBUTION | CONTRIBUTION | FAIBLE | HAUTE |
sept | HAUTE | CONTRIBUTION | FAIBLE | CONTRIBUTION |
8 | FAIBLE | CONTRIBUTION | HAUTE | CONTRIBUTION |
9 | CONTRIBUTION | HAUTE | CONTRIBUTION | FAIBLE |
dix | CONTRIBUTION | FAIBLE | CONTRIBUTION | HAUTE |
11 | HAUTE | CONTRIBUTION | CONTRIBUTION | FAIBLE |
12 | FAIBLE | CONTRIBUTION | CONTRIBUTION | HAUTE |
Après les connexions, mon matériel ressemble à l'image ci-dessous. Comme vous pouvez le voir sur l'image, il y a six groupes de LED et dans chaque groupe 2 LED sont connectées en face l'une de l'autre. Le module Arduino UNO est alimenté par un port USB.
Explication du code
Le code complet avec une vidéo de travail est donné à la fin de ce tutoriel, ici nous expliquons le programme complet pour comprendre le fonctionnement du projet.
Au début du code Arduino, définissez toutes les broches sur lesquelles les LED sont connectées. Après cela, définissez le nombre total de LED et l'état des LED.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
Créez maintenant une matrice pour allumer et éteindre les LED dans une séquence, vous pouvez changer la séquence en changeant l'état des broches et la configuration des broches. Selon cette matrice, LED1 sera d'abord allumée puis LED2 et ainsi de suite.
int matrix = { // PIN_CONFIG PIN_STATE // ABCDABCD {{OUTPUT, OUTPUT, INPUT, INPUT}, {HIGH, LOW, LOW, LOW}}, {{OUTPUT, OUTPUT, INPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, {{INPUT, OUTPUT, OUTPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, ……………………………. ……………………………..
Maintenant dans la boucle vide , le programme exécutera la matrice LED_COUNT pour allumer et éteindre les LED dans la séquence donnée.
boucle vide () { for (int l = 0; l <LED_Num; l ++) { lightOn (l); délai (1000 / LED_Num); }
Connectez maintenant l'Arduino à l'ordinateur portable et choisissez correctement la carte et le port, puis cliquez sur le bouton Télécharger. Après avoir téléchargé le code, vos voyants devraient commencer à clignoter.
C'est ainsi que la technique Charlieplexing peut être utilisée pour contrôler de nombreuses LED en utilisant moins de broches Arduino. Vous pouvez utiliser cette méthode pour contrôler un plus grand nombre de LED. Par exemple, si vous souhaitez contrôler 20 LED, modifiez simplement la matrice et ajoutez les conditions pour les LED restantes.
Trouvez le code complet et la vidéo de travail ci-dessous.