Charlieplexing - це техніка управління багатьма світлодіодами за допомогою декількох штифтів вводу-виводу. Шарліплексинг - це те саме, що і мультиплексування, але він використовує тристанічну логіку (високий, низький вхід), щоб різко зменшити кількість висновків та отримати ефективність при мультиплексуванні. Техніка Charlieplexing названа на честь її винахідника Чарлі Аллена, який винайшов цю техніку в 1995 році. Раніше ми використовували техніку мультиплексування в Arduino для взаємодії 4-значного 7-сегментного дисплея та керування світлодіодною матрицею 8x8.
Charlieplexing дозволяє вам керувати N * (N - 1) світлодіодами, де N - кількість контактів. Наприклад, ви можете керувати 12 світлодіодами, використовуючи 4 висновки Arduino 4 * (4-1) = 12. Світлодіоди - це діоди, а в діодах струм тече лише в одному напрямку. Отже, в Charlieplexing ми підключаємо два світлодіоди паралельно один одному, але з протилежною полярністю, так що одночасно вмикається лише один світлодіод. Що стосується Arduino або інших плат мікроконтролера, у вас ніколи не вистачає вхідних / вихідних контактів. Якщо ви працюєте над проектом, в якому вам потрібно встановити інтерфейс РК-дисплея, купу світлодіодів та деяких датчиків, тоді у вас вже немає контактів. У такій ситуації ви можете підключити світлодіодні індикатори для зменшення кількості контактів.
У цьому посібнику ми збираємося використовувати техніку Charlieplexing для управління 12 світлодіодами за допомогою 4 штифтів Arduino.
Потрібні компоненти
- Arduino UNO
- Світлодіод (12)
- 4 резистор (330 Ом)
- Провід перемички
- Макет
Кругова діаграма
В основному, на цій електричній схемі 12 світлодіодів з'єднані з 4 штирями Arduino через резистори. Кожен штифт Arduino з'єднаний трьома світлодіодами. Є шість груп світлодіодів, і в кожній групі підключено по 2 світлодіоди, і обидва світлодіоди паралельні один одному, але з протилежною полярністю, так що одночасно вмикається лише один світлодіод. Отже, згідно з принциповою схемою, щоб увімкнути світлодіод 1, на штифті А повинен бути сигнал ВИСОКОГО, а на штифті В сигнал НИЗЬКОГО, а штифти С і D потрібно від'єднати. Така ж процедура буде дотримуватися для інших світлодіодів. Повна таблиця налаштувань контактів для кожного світлодіода наведена нижче:
СВІТЛОДІОДНИЙ | Штифт 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 {{ВИХІД, ВИХІД, ВХІД, ВХІД}, {ВИСОКИЙ, НИЗКИЙ, НИЗКИЙ, НИЗКИЙ }}, {{ВИХІД, ВИХІД, ВХІД, ВХІД}, {НИЗЬКИЙ, ВИСОКИЙ, НИЗЬКИЙ, НИЗЬКИЙ}}, {{ВХІД, ВИХІД, ВИХІД, ВХІД}, {НИЗЬКИЙ, ВИСОКИЙ, НИЗКИЙ, НИЗКИЙ}}, ……………………………. ……………………………..
Тепер всередині цикла void програма виконає матрицю LED_COUNT для ввімкнення та вимкнення світлодіодів у заданій послідовності.
void loop () { for (int l = 0; l <LED_Num; l ++) { lightOn (l); затримка (1000 / LED_Num); }
Тепер підключіть Arduino до ноутбука, правильно виберіть плату та порт, а потім натисніть кнопку Завантажити. Після завантаження коду світлодіоди повинні почати блимати.
Отже, саме таким чином можна застосовувати техніку Charlieplexing для управління багатьма світлодіодами, використовуючи менше штифтів Arduino. Ви можете використовувати цей метод для управління більшою кількістю світлодіодів. Наприклад, якщо ви хочете контролювати 20 світлодіодів, просто відредагуйте матрицю та додайте умови для інших світлодіодів.
Повний код та робоче відео знайдіть нижче.