У цьому підручнику ми збираємося розробити 8x8 світлодіодний матричний дисплей для прокрутки за допомогою Arduino Uno, який буде відображати прокручувані алфавіти.
8x8 світлодіодна матриця містить 64 світлодіоди (світлодіоди), які розташовані у формі матриці, отже, назва - світлодіодна матриця. Ми збираємося зробити цю матрицю, припаявши ці 64 світлодіоди до перфборда або DOT PCB. Світлодіоди можуть бути будь-якого кольору, виберіть ті, які доступні у вас. Потім ми напишемо програму для Arduino для управління цими 64 матрицями світлодіодів. Згідно з програмою, ООН передає відповідні світлодіоди, щоб відображати персонажів за допомогою прокрутки.
Необхідні компоненти:
- Arduino Uno
- 64 світлодіоди
- Перфборд з іншими інструментами для пайки
- Резистор 1 кОм (8 штук)
- Блок живлення (5 В)
Схема та робоче пояснення:
Є 64 світлодіоди, розташовані у матричній формі. Отже, маємо 8 стовпців і 8 рядків. Над цими рядками та стовпцями всі позитивні термінали в рядку зведені. Для кожного рядка існує один загальний позитивний термінал для всіх 8 світлодіодів у цьому рядку. Це показано на малюнку нижче,
Отже, для 8 рядків ми маємо 8 загальних позитивних клем. Розглянемо перший рядок, як видно на малюнку, 8 світлодіодів від D57 до D64 мають спільну позитивну клему і позначаються `` ПОЗИТИВНО0 ''. Тепер, якщо ми хочемо світити один або всі світлодіоди в першому РЯДУ матриці, тоді нам слід подати живлення на PIN0 світлодіодної матриці. Подібним чином, якщо ми хочемо світити будь-який світлодіод (або весь) у будь-якому РЯДКУ, тоді нам потрібно подати живлення на відповідний загальний позитивний контактний штифт відповідного рядка.
Це ще не закінчилося, і просто залишення MATRIX ROWS із позитивним запасом нічого не дасть. Нам потрібно заземлити негативи світлодіодів, щоб засвітити їх. Отже, в матриці світлодіодів 8x8 всі негативні клеми світлодіодів у будь-якому стовпці об’єднані, щоб утворити вісім загальних негативних терміналів, як і всі мінусові клеми в першій колонці, з'єднані разом з PIN-A1 (NEGATIVE7). Це показано на малюнку нижче:
Слід звернути увагу на ці штирі, паяючи світлодіоди на Perfboard.
Тепер, якщо нам потрібно заземлити будь-який світлодіод у першій колонці, тоді ми заземлимо PIN-A1 (НЕГАТИВНО7) МАТРИЦИ, і він заземлить всі світлодіоди в першій колонці. Той самий процес стосується всіх інших семи поширених негативних стовпців.
Відтепер ви знаєте, як працюють спільні позитивні та спільні негативні. Давайте складемо їх разом, щоб побачити, як вони працюють разом, і остаточна схема для прокрутки 8x8 світлодіодної матриці буде виглядати так:
Керування світлодіодною матрицею 8x8 за допомогою мультиплексування:
Тепер, скажімо, ми хочемо увімкнути LED57, тоді нам потрібно включити живлення PIN0 UNO і заземлити PIN-8 UNO. Тепер, щоб увімкнути як LED57, так і LED50, нам потрібно включити PIN0, PIN1 і заземлити PIN8, PIN9. Але це призведе не лише до D57, D50, але й до D49, D58. Щоб уникнути цього, ми використовуємо техніку, яка називається мультиплексування. Ми вже детально обговорювали цю мультиплексну техніку у світлодіодній матриці 8x8; перегляньте цю статтю для детального пояснення. Тут ми коротко пояснюємо мультиплексування.
Людське око не може вловлювати частоту більше 30 Гц. Тобто, якщо світлодіод постійно вмикається і вимикається зі швидкістю 30 Гц або більше. Око бачить, що світлодіод постійно горить. Однак це не так, і світлодіод буде насправді постійно вмикати та вимикати. Цей прийом називається Мультиплексування.
Скажімо, наприклад, ми хочемо увімкнути лише LED57 та LED50, не вмикаючи D49 та D58. Фокус у тому, що ми спочатку подамо живлення першому ряду, щоб увімкнути світлодіод 57 і зачекати 1 мсек. Потім ми надамо живлення другому ряду, щоб увімкнути світлодіод 50, і зачекаємо 1 мсек, а потім вимкнемо його. Цикл проходить безперервно з високою частотою, і світлодіоди LED57 і LED50 швидко вмикаються і вимикаються, і обидва світлодіода, здається, постійно увімкнені для нашого ока. Означає, що ми подаємо живлення лише по одному ряду за раз, виключаючи шанси включити інші світлодіоди в інших рядах. Ми використаємо цю техніку, щоб показати всіх персонажів.
Існує також бібліотека LedControlMS.h, щоб подбати про всю цю складність мультиплексування, де вам потрібно лише ввести символ або номер, який ви хочете надрукувати на світлодіодній матриці, детальніше ознайомтеся з цією світлодіодною матрицею Arduino за проектом MAX7219.
Пояснення програмування:
У нашому коді ми записали десяткове значення для кожного символу і запрограмували ці значення в Arduino. Програма написала перенесення цих значень у наступний рядок кожні 0,2 секунди, це буде сприйматися як прокрутка символів вгору, це дуже просто.
Щоб змінити символи для відображення, просто замініть значення в масиві char ALPHA відповідно до значень символів, наведених нижче, 24,60,102,126,102,102,102,0,0,0, // A 124,102,102,124,102,102,124,0,0,0, // B 60,102,96,96,96,102,60,0, 0,0, // C 120,108,102,102,102,108,120,0, 0,0, // D 126,96,96,120,96,96,126,0, 0,0, // E 126,96,96,120,96,96,96,0, 0,0, // F 60,102,96,110,102,102,60, 0, 0,0, // G 102,102,102,126,102,102,102,0, 0,0, // H 60,24,24,24,24,24,60,0, 0,0, // I 30,12,12,12, 12,108,56,0, 0,0, // J 102,108,120,112,120,108,102,0, 0,0, // K 96,96,96,96,96,96,126,0, 0,0, // L 99,119,127,107,99, 99,99,0, 0,0, // М 102,118,126,126,110,102,102,0, 0,0, // N 60,102,102,102,102,102,60,0, 0,0, // O 124,102,102,124,96,96,96,0, 0,0, // P 60,102,102,102,102,60,14,0, 0,0, // Q 124,102,102,124,120,108,102,0, 0,0, // R 60,102,96,60,6,102,60,0, 0,0, // S 126, 24,24,24,24,24,24,0, 0,0, // T 102,102,102,102,102,102,60,0, 0,0, // U 102,102,102,102,102,60,24,0, 0,0, // V 99,99,99,107,127,119,99,0, 0,0, // W 102,102,60,24,60,102,102,0, 0,0, // X 102,102,102,60,24,24,24,0, 0,0, // Y 126,6,12, 24,48,96,126,0, 0,0, // Z
Наприклад, якщо ви хочете відобразити DAD на світлодіодній матриці, спочатку замініть значення символів у масиві char ALPHA , поставивши значення для символів D, A та D із наведеного вище списку:
char ALPHA = {0,0,0,0,0,0,0,0,0,0,0, 120,108,102,102,102,108,120,0,0,0, 24,60,102,126,102,102,102,0,0,0, 120,108,102,102,102,108,120,0,0, 0, 0,0,0,0,0,0,0,0,0,0,0};
Загальні значення зараз становлять 5 * 10 = 50 значень, отже
Замінити, for (int x = 0; x <142; x ++) // 150-8 (щоб зупинити переповнення) {…….. With, for (int x = 0; x <42; x ++) // 50-8 (щоб зупинити переповнення) {……..
Тож вам просто потрібно змінити номер.
З цим ви закінчили програмування, і тепер ви можете прокручувати будь-який текст на світлодіодній матриці 8x8, перевіряти повний код нижче з демонстраційним відео.