черговий шилд

Невелике вступ.
Давно було бажання виготовити світлодіодну матрицю, а ще більше погратися з написанням скетчів для її пожвавлення. І ось нарешті дійшли руки. (Найдивовижніше, що плату зробив досить швидко, а от написання програми і оформлення статті - саме времязатратное справа).
Отже, спробуємо зробити світлодіодну матрицю, розміром 8х8. Причому, для здешевлення конструкції, візьмемо не готову платформу, а 64 світлодіода. (Не повірите, по грошах виходить майже в три рази дешевше. Звичайно, з запаюванням доведеться повозитися, але ці труднощі мене не зупинили).
Можливо, я трохи перестарався в написанні, але дуже хотілося розповісти все досконально. Як часто пишуть в інеті: "феєрична розстановка крапок над." За традицією, розіб'ю статтю на три частини: «Теорія», «HARD» і «SOFT» :)
Отже, частина перша, «Теоретична».
Кому все давно відомо і зрозуміло, сміливо можемо пропускати :)
Що таке світлодіодна матриця?
Логічно припустити, що світлодіодна матриця складається з світлодіодів.
Світлодіод (LED англ. Light Emmiting Diode) це Світло Випромінюючий Діод. І ніяк не лампочка. А так як це діод, то він, (крім того, що може випромінювати світло) є напівпровідниковим приладом.
Світлодіоди можуть бути різних кольорів, розмірів, форм, потужностей і т.д. (Погуглити на цю тему самостійно).
Найбільш ходовими (у Ардуінщіков) є круглі, 3-х (рідше 5-ти) міліметрові, з дифузійної (розсіює) лінзою, стандартні.

Важливою характеристикою світлодіода є залежність падіння напруги від струму при прямому і зворотному включеннях. За графіком (дивися нижче) можна визначити, що кожному значенню струму відповідає своє падіння напруги на світлодіоді. Чим вище значення струму, тим вище падіння напруги (і тим вище яскравість).

- Полярність. світлодіод в одну сторону не проводить струм, а в іншу проводить і при цьому світиться. Тому, якщо переплутати полярність - Світлодіоди не буде світиться, але при цьому не перегорить.
- Напруга пробою. Якщо при неправильно включеному світлодіоді збільшити зворотне напруга більше допустимого світлодіод згорить. Зазвичай близько - 5 вольт.
- Робочий струм. Світлодіод, коли світиться, має максимально допустимий прямий струм (If), якщо цей струм більший допустимого - світлодіод згорить. Максимальний струм світлодіода залежить від його моделі.
! ВАЖЛИВО!
Світлодіод не можна безпосередньо підключати до джерела напруги.
Нижче способи підключення і приклад розрахунку струмообмежувального резистора:

Трохи поясню. У розрахунках ми використовуємо закон Ома :) I = U / R.
Кому ліньки рахувати і лазити по довідниках, раджу скористатися ON-Line калькулятором.
Там, до речі, ви знайдете і більш точні параметри для різних світлодіодів.
Спільне між світлодіодом і лампочкою тільки те, що вони випромінюють світло, більше подібностей немає :)
* У світлодіода два висновки: Анод (довга ніжка) і Катод (коротка ніжка).
* Якщо через світлодіод пропустити струм в прямому напрямі (+ до анода, а мінус - до катода) - то він буде світитися.
* Для нормальної роботи світлодіода, що протікає через нього струм повинен бути, як правило, від 3 до 20 мА.
Тепер будемо плавно переходити до питання об'єднання світлодіодів в щось БІЛЬШЕ і, найголовніше, управління цим «об'єднанням».
Далі по тексту, для простоти розуміння, поки забудемо про струми, резистори і т.п. Будемо вважати, що все це у нас вже забезпечено.
Ага, значить два дроти на один світлодіод ...
Хм, а якщо у нас 4 світлодіода - знадобитися 8 проводів, для 16 - 32. Не, так не годиться. Спробуємо трохи заощадити на висновках. У першому наближенні, ми запросто можемо все катоди об'єднати і посадити на землю

Подаємо на висновок №1 позитивний потенціал - загоряється перший світлодіод ну і т.д.
Той же принцип, але кілька рядків :)

Наче все добре. Ми в такій схемі можемо незалежно управляти кожним світлодіодом і запалювати їх у потрібній нам комбінації. Це, так званий, режим статичної індикації. Але є тут і ложка дьогтю ... У такій схемі з'єднання, ми маємо для 9 світлодіодів - 9 керівників ліній. А для 64 світлодіодів - відповідно 64 виведення. Коротше, скільки світлодіодів, стільки і керуючих сигналів. Досить марнотратно ...
Скорочуються ще.
І тут на сцені з'являється динамічна індикація.
Динамічна індикація - це метод відображення цілісної картини через швидке послідовне відображення окремих елементів цієї картини. Причому, «цілісність» сприйняття виходить завдяки інерційності людського зору. (На цьому принципі, як ви здогадуєтеся, побудовано кіно і телебачення :)).
В світлодіодним матриці світлодіоди з'єднані між собою в такий спосіб:

Виходить за схемою, що світлодіоди зібрані в рядки і стовпці. Якщо подати «1» в стовпець (тобто подати потрібне напруження), а одну (або кілька) рядків з'єднати з землею, то загоряться світлодіоди на перетині цих рядків і стовпці.
Пару прикладів, що пояснюють даний принцип:

Я вибрав для реалізації найзручніший варіант матриці - 8х8 (не буду пояснювати чому ... Але дам підказку: 1 байт = 8 біт).
А як виводити потрібне зображення на таку матрицю?
Відповідь: через підрядник. (Ну або по стовпцях)
Нагадаю, що в один момент часу будуть горіти потрібні світлодіоди тільки одного рядка. І виходить, що при високих частотах, людське око не здатне розгледіти ці перемикання, і здається що картинка горить постійно. (До речі, в інтернеті рекомендується не використовувати частоти кратні 50 Гц).
Розглянемо, висновок на матрицю зображення літери «А»

Домовимося, що за активність ( «притягненість до землі») рядки у нас відповідає регістр "ROW REGISTER", а за потрібні (для поточного рядка) колонки "COLUMN REGISTER".
Весь висновок картинки буде складатися з восьми кроків. На кожному кроці до землі буде підключена тільки один рядок.

Думаю, що остання картинка дуже добре пояснює весь процес. Як мені здалося, додати словами тут і нічого. Пора переходити до питання воплащения задуманого в життя.
To be continued ... (або по нашому) Далі буде ...