Charlieplexing е техника за управление на много светодиоди с помощта на няколко I / O щифта. Charlieplexing е същото като мултиплексирането, но използва логиката на три състояния (висок, нисък вход), за да намали драстично броя на щифтовете и да спечели ефективност при мултиплексиране. Техниката Charlieplexing е кръстена на изобретателя си Чарли Алън, който е изобретил техниката през 1995 г. Преди това използвахме техника на мултиплексиране в Arduino, за да свържем 4-цифрен 7-сегментен дисплей и да управляваме 8x8 LED матрица.
Charlieplexing ви позволява да контролирате N * (N - 1) светодиоди, където N е броят на щифтовете. Например можете да контролирате 12 светодиода, като използвате 4 щифта Arduino 4 * (4-1) = 12. Светодиодите са диоди, а при диодите токът тече само в една посока. Така че в Charlieplexing свързваме два светодиода паралелно един на друг, но с противоположна полярност, така че само един светодиод да се включва наведнъж. Що се отнася до Arduino или други платки за микроконтролер, никога нямате достатъчно пинове за вход / изход. Ако работите по проект, в който трябва да свържете LCD дисплей, куп светодиоди и някои сензори, значи вече нямате щифтове. В тази ситуация можете да използвате светодиоди charlieplex, за да намалите броя на щифтовете.
В този урок ще използваме техниката Charlieplexing, за да контролираме 12-те светодиода, използвайки 4 щифта Arduino.
Необходими компоненти
- Arduino UNO
- LED (12)
- 4 резистор (330 ома)
- Джъмперни проводници
- Макет
Електрическа схема
По принцип в тази електрическа схема 12 светодиода са свързани с 4 щифта Arduino чрез резистори. Всеки щифт на Arduino е свързан с три светодиода. Има шест групи светодиоди и във всяка група са свързани 2 светодиода и двата светодиода са успоредни един на друг, но с противоположна полярност, така че да се включва само един светодиод в даден момент. Така че, съгласно схемата на веригата, за да включите led 1, трябва да има HIGH сигнал на пин A и LOW сигнал на pin B, а щифтовете C и D трябва да бъдат изключени. Същата процедура ще се следва и за останалите светодиоди. Пълната таблица на настройките на щифтове за всеки светодиод е дадена по-долу:
LED | ПИН 8 | ПИН 9 | ПИН 10 | ПИН 11 |
1 | ВИСОКО | НИСКО | ВХОД | ВХОД |
2 | НИСКО | ВИСОКО | ВХОД | ВХОД |
3 | ВХОД | ВИСОКО | НИСКО | ВХОД |
4 | ВХОД | НИСКО | ВИСОКО | ВХОД |
5 | ВХОД | ВХОД | ВИСОКО | НИСКО |
6 | ВХОД | ВХОД | НИСКО | ВИСОКО |
7 | ВИСОКО | ВХОД | НИСКО | ВХОД |
8 | НИСКО | ВХОД | ВИСОКО | ВХОД |
9 | ВХОД | ВИСОКО | ВХОД | НИСКО |
10 | ВХОД | НИСКО | ВХОД | ВИСОКО |
11. | ВИСОКО | ВХОД | ВХОД | НИСКО |
12 | НИСКО | ВХОД | ВХОД | ВИСОКО |
След връзките хардуерът ми изглежда като изображението по-долу. Както можете да видите от изображението има шест групи светодиоди и във всяка група 2 светодиода са свързани срещуположно един на друг. Модулът Arduino UNO се захранва от USB порт.
Обяснение на кода
Пълен код с работещо видео е даден в края на този урок, тук ние обясняваме пълната програма, за да разберем работата на проекта.
В началото на кода на Arduino дефинирайте всички щифтове, на които са свързани светодиодите. След това дефинирайте общия брой светодиоди и светодиодно състояние.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
Сега създайте матрица за включване и изключване на светодиоди в последователност, можете да промените последователността, като промените състоянието на пина и конфигурацията на щифтовете. Според тази матрица LED1 първо ще се включи, след това LED2 и така нататък.
int matrix = { // PIN_CONFIG PIN_STATE // ABCDABCD {{ИЗХОД, ИЗХОД, ВХОД, ВХОД}, {HIGH, LOW, LOW, LOW}}, {{OUTPUT, OUTPUT, INPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, {{INPUT, OUTPUT, OUTPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, ……………………………. ……………………………..
Сега вътре в цикъла void , програмата ще изпълни LED_COUNT матрицата, за да включва и изключва светодиодите в дадената последователност.
цикъл void () { for (int l = 0; l <LED_Num; l ++) { lightOn (l); забавяне (1000 / LED_Num); }
Сега свържете Arduino с лаптопа и изберете правилно платката и порта и след това щракнете върху бутона Качване. След като качите кода, вашите светодиоди трябва да започнат да мигат.
Така че по този начин техниката Charlieplexing може да се използва за управление на много светодиоди, използвайки по-малко Arduino щифтове. Можете да използвате този метод, за да контролирате по-голям брой светодиоди. Например, ако искате да контролирате 20 светодиода, просто редактирайте матрицата и добавете условията за останалите светодиоди.
Намерете пълния код и работещото видео по-долу.