Ми створили серію навчальних посібників з Raspberry Pi, в яких ми розглянули взаємодію Raspberry Pi з усіма основними компонентами, такими як світлодіод, РК-дисплей, кнопка, двигун постійного струму, сервомотор, кроковий двигун, АЦП, реєстр змін тощо. опублікував кілька простих проектів Raspberry Pi для початківців, а також кілька хороших проектів IoT. Сьогодні, продовжуючи ці підручники, ми збираємося керувати 8x8 світлодіодним матричним модулем від Raspberry Pi. Ми напишемо програму python для показу символів на матричному модулі.
Також перевірте взаємодію світлодіодної матриці 8x8 з Arduino та світлодіодної матриці з мікроконтролером AVR.
Необхідні компоненти:
Тут ми використовуємо Raspberry Pi 2 Model B з ОС Raspbian Jessie. Усі основні вимоги до обладнання та програмного забезпечення обговорювались раніше, ви можете переглянути їх у Вступі про Raspberry Pi та Світлодіодний індикатор Raspberry PI для початку, крім того, що нам потрібно:
- Raspberry Pi Board
- Блок живлення (5 В)
- Конденсатор 1000 мкФ (підключений через блок живлення)
- Резистор 1 кОм (8 штук)
8x8 світлодіодний матричний модуль:
Матричний модуль 8 * 8 світлодіодів містить 64 світлодіоди (світлодіоди), які розташовані у формі матриці, отже, назва - світлодіодна матриця. Ці компактні модулі випускаються різних розмірів та різноманітних кольорів. Вибрати їх можна за зручністю. Конфігурація PIN-коду модуля така, як показано на малюнку. Майте на увазі, що розписування модуля не в порядку, тому PIN-коди повинні бути пронумеровані точно так, як показано на малюнку, щоб уникнути помилок.
У модулі LED Matrix є 8 + 8 = 16 загальних клем. Над ними ми маємо 8 загальних позитивних клем і 8 загальних негативних клем у вигляді 8 рядків і 8 стовпців для підключення 64 світлодіодів у матричній формі. Якби модуль малювався у вигляді принципової схеми, ми отримаємо малюнок, як показано нижче:
Отже, для 8 рядків ми маємо 8 загальних позитивних терміналів (9, 14, 8, 12, 17, 2, 5). Розглянемо перший рядок, світлодіоди від D1 до D8 мають спільну позитивну клему, і штифт виводиться на PIN9 модуля LED Matrix. Коли ми хочемо, щоб один або всі світлодіоди в РЯДКУ ввімкнулися, відповідний штифт світлодіодного модуля повинен мати живлення + 3,3 в.
Подібно до загальних позитивних терміналів, ми маємо 8 загальних негативних терміналів як стовпці (13, 3, 4, 10, 6, 11, 15, 16). Для заземлення будь-якого світлодіода в будь-якій колонці відповідний загальний негативний висновок повинен бути заземлений.
Пояснення схеми:
Зв'язки між Raspberry Pi та матричним модулем LED показані в таблиці нижче.
Світлодіодний матричний модуль Контактний номер |
Функція |
Raspberry Pi GPIO Pin No. |
13 |
ПОЗИТИВНИЙ0 |
GPIO12 |
3 |
ПОЗИТИВНИЙ1 |
GPIO22 |
4 |
ПОЗИТИВНИЙ2 |
GPIO27 |
10 |
ПОЗИТИВНИЙ3 |
GPIO25 |
6 |
ПОЗИТИВНИЙ4 |
GPIO17 |
11 |
ПОЗИТИВНО5 |
GPIO24 |
15 |
ПОЗИТИВНО6 |
GPIO23 |
16 |
ПОЗИТИВНО7 |
GPIO18 |
9 |
НЕГАТИВНА0 |
GPIO21 |
14 |
НЕГАТИВНО1 |
GPIO20 |
8 |
НЕГАТИВНО2 |
GPIO26 |
12 |
НЕГАТИВНО3 |
GPIO16 |
1 |
НЕГАТИВНО4 |
GPIO19 |
7 |
НЕГАТИВНО5 |
GPIO13 |
2 |
НЕГАТИВНО6 |
GPIO6 |
5 |
НЕГАТИВНО7 |
GPIO5 |
Ось остаточна електрична схема для взаємодії 8x8 світлодіодної матриці з Raspberry Pi:
Робоче пояснення:
Тут ми використаємо Мультиплексну техніку, щоб показати символи на 8x8 світлодіодному матричному модулі. Тож давайте детально обговоримо це мультиплексування. Скажімо, якщо ми хочемо увімкнути світлодіод D10 в матриці, нам потрібно увімкнути PIN14 модуля і заземлити PIN3 модуля. За допомогою цього світлодіода D10 увімкнеться, як показано на малюнку нижче. Це також слід спочатку перевірити на MATRIX, щоб знати, що все в порядку.
Тепер, скажімо, якщо ми хочемо увімкнути D1, нам потрібно увімкнути PIN9 матриці і заземлити PIN13. При цьому світлодіод D1 буде світитися. Поточний напрямок у цьому випадку показано на малюнку нижче.
Тепер, що стосується складної частини, розглянемо, що ми хочемо ввімкнути одночасно D1 і D10. Отже, ми повинні живити як PIN9, PIN14, так і заземлювати обидва PIN13, PIN3. Це ввімкне світлодіоди D1 і D10, але разом із цим він також увімкне світлодіоди D2 і D9. Це тому, що вони мають спільні термінали. Отже, якщо ми хочемо увімкнути світлодіоди по діагоналі, ми будемо змушені увімкнути всі світлодіоди по ходу. Це показано на малюнку нижче:
Щоб уникнути цієї проблеми, ми використовуємо техніку, яка називається Мультиплексування. Ми також обговорили цю техніку мультиплексування під час взаємодії 8x8 світлодіодної матриці з AVR, тут ми ще раз пояснюємо. Цей самий метод мультиплексування також використовується у прокрутці тексту на світлодіодній матриці 8x8 з Arduino та мікроконтролером AVR.
Людське око не може вловлювати частоту більше 30 Гц. Тобто, якщо світлодіод постійно вмикається і вимикається зі швидкістю 30 Гц або більше. Око бачить, що світлодіод постійно горить. Однак це не так, і світлодіод буде насправді постійно вмикати та вимикати. Цей прийом називається Мультиплексування.
Скажімо, наприклад, ми хочемо увімкнути лише світлодіоди D1 та LED D10, не вмикаючи D2 та D9. Фокус у тому, що ми спочатку подамо живлення лише на світлодіод D1, використовуючи PIN-коди 9 і 13, і зачекаємо 1 мсек, а потім вимкнемо. Тоді ми подамо живлення на світлодіод D10, використовуючи PIN-коди 14 і 3, і зачекаємо 1 мсек. Цикл триває безперервно з високою частотою, і D1 & D10 швидко вмикаються і вимикаються, і обидва світлодіода, здається, постійно увімкнені для нашого ока. Означає, що ми одночасно подаємо живлення лише на один ряд (світлодіод), виключаючи шанси на включення інших світлодіодів в інших рядах. Ми використаємо цю техніку, щоб показати всіх персонажів.
Ми можемо далі зрозуміти це на одному прикладі, наприклад, якщо ми хочемо відобразити "А" на матриці, як показано нижче:
Як сказано, ми одразу включимо один рядок, При t = 0m SEC, PIN09 встановлюється HIGH (в цей час інші РЯДНІ штифти НИЗЬКІ), PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 заземлені (інші штифти СТОЛБКИ ВИСОКИЙ в цей час)
При t = 1 м SEC, PIN14 встановлюється ВИСОКО (в цей час інші РЯДНІ штифти НИЗЬКІ), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 заземлюються (інші штифти СТОЛБКИ в цей час ВИСОКИ)
При t = 2 м SEC, PIN08 встановлюється ВИСОКО (в цей час інші РІВНІ штифти НИЗЬКІ), PIN13, PIN3, PIN15, PIN16 заземлені (інші штифти СТОЛБКИ ВИСОКИЙ в цей час)
При t = 3 м SEC, PIN12 встановлюється ВИСОКО (в цей час інші РЯДНІ штифти НИЗЬКІ), PIN13, PIN3, PIN15, PIN16 заземлені (інші штифти СТОЛБИ В цей час ВИСОКИЙ
При t = 4 м SEC, PIN01 встановлюється HIGH (в цей час інші ROW-шпильки НИЗЬКІ), в цей час PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 (інші COLUMN-шпильки в цей час HIGH)
При t = 5 м SEC, PIN07 встановлюється HIGH (в цей час інші РІВНІ штирі НИЗЬКІ), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 заземлюються (інші штифти СТОЛБИ В цей час HIGH)
При t = 6 м SEC, PIN02 встановлюється HIGH (в цей час інші РІВНІ штифти НИЗЬКІ), PIN13, PIN3, PIN15, PIN16 заземлені (інші COLUMN штифти в цей час HIGH)
При t = 7 м SEC, PIN05 встановлюється ВИСОКО (в цей час інші РІВНІ штифти НИЗЬКІ), PIN13, PIN3, PIN15, PIN16 заземлені (інші штифти СТОЛБКИ ВИСОКИЙ в цей час)
При такій швидкості дисплей буде бачитись як постійно відображаючий символ «А», як показано на малюнку.
Програма Python для показу символів на світлодіодній матриці за допомогою Raspberry Pi наведена нижче. Програма добре пояснюється коментарями. Значення портів для кожного символу вказані в програмі. Ви можете показати будь-які символи, які хочете, просто змінивши значення "pinp" у "for loop " у даній програмі. Також перевірте демонстраційне відео нижче.