Arduino контролна матрица 8x8, клас Robotics
В предишните уроци научихме как да управляваме група от осем светодиода с помощта на регистър за смяна. Това се оказа малко по-трудно от запалването на 1-2 светодиода директно от щифтовете с общо предназначение. Проблемът, който тогава трябваше да решим, беше ограниченият брой контролируеми изходи от контролера Arduino. Апогейът на нашето изследване беше използването на динамична индикация за контрол на три индикаторни номера едновременно. Сега е време да усложним още малко задачата: да се научим да работим с LED матрица.
1. Матричен индикатор
Както вече знаем, сегментните индикатори, независимо дали са везни или цифри, се състоят от отделни светодиоди, свързани заедно. Например, група светодиоди могат да имат свързани всички катоди. Такъв индикатор има послепис "с общ катод", в противен случай - "с общ анод".
Какво се случва, ако поставим светодиодите не под формата на число или скала, а под формата на решетка? Ще получите доста графичен индикатор. Тоест такава, на която можете да покажете не само число, но и някакво изображение.
Такава решетка се нарича матричен индикатор, а в случай на използване на светодиоди - LED матрица. Разделителната способност на матричния индикатор е броят на точките хоризонтално и вертикално. Например, най-често срещаните индикатори имат разделителна способност 8 × 8 пиксела.

Ако се изисква LED матрица с висока разделителна способност, тя просто се състои от няколко 8 × 8 индикатора. Ще видим как да направим това по-късно. Междувременно нека разберем как всички 64 светодиода са свързани вътре в матрицата.
Разбира се, би било възможно, както в случая на седемсегментен индикатор, да се свържат всички светодиоди с общ катод или анод. В този случай ще ни трябват или 64 пина на контролера, или 8 регистра на смяна. И двамата са разточителни.
По-правилен вариант е комбинирането на светодиоди в групи от по 8 с общ катод. Нека това са колоните на матрицата. След това паралелните светодиоди в тези колони отново се комбинират в групи от 8 парчета, вече с общ анод. Ще се получи следната схема:

Да предположим, че задачата е да запалите светодиода R6C3. За да направите това, трябва да приложим високо ниво на сигнала към щифт R6 и да свържем щифт C3 към земята.

Без да изключваме тази точка, нека се опитаме да запалим друга - R3C7. Свържете положителното захранване към R3 и земята към C7. Но в този случай редове R6 и R3 ще пресичат колони C3 и C7 не на две, а на четири места! Следователно ще светнат не две, а четири точки. Проблем!

Очевидно същата динамична индикация може да помогне. Ако включим много бързо точките R6C3 и R3C7 на свой ред, можем да използваме устойчивост на зрението - способността да интерпретираме бързо променящите се изображения като цяло.
2. LED масив и регистри за смяна
В нашия урок ще свържем най-простата 8 × 8 червена LED матрица към Arduino Uno. Номерирането на щифтове започва от долния ляв ъгъл. В същото време номерирането на крака 1-16 не е свързано по никаква логика с номерирането на колони и линии C и R.