Светодиодная матрица 8x8

Среди бесчисленных деталей давным-давно у меня пылилась китайская светодиодная матрица, шедшая в комплект с каким-то набором модулей, заказанным на али. Все никак не доходили руки до нее. 16 контактов казались каким-то безумным количеством для подключения к ардуинке.
Но недавно я обзавелся сдвиговыми регистрами, призванными устранить сие недоразумение.

Сей тип матриц — один из самых популярных на просторах алиэксперса. Мне она досталось в качестве подарка.

8 контактов столбцов и 8 контактов строк, 2 сдвиговых регистра 74HC595 справятся с этой задачей отлично. По-хорошему нужно использовать транзисторную сборку для катодов матрицы, но токи совсем небольшие, так что можно и голый регистр запихать. И так сойдет…

Кое-как разместил все на двух бредбордах. На такую конструкцию опасно чихать. Ножки резисторов оказались очень тонкими и чуть что — контакт теряется.

Даже не стал проверять, есть ли там готовые библиотеки для работы с матрицами через сдвиговые регистры, или нет их там. Так не интересно. Дело это не затейливое и я написал свою библиотеку с блэкджеком и ….

Для отображения применяется динамическая индикация. Изображение выводится по строкам, меняющихся с огромной частотой. Глупый человек не видит этого.

Небольшой кусок кода, отвечающих за вывод изображения. Тут buffer_ — массив, который хранит в себе колонки, а row_ — битовая маска, она отправляется на сдвиговый регистр, отвечающий за контроль строк.

void Matrix8::draw() {
  row_ = 1;
  for (int i = 0; i < MATRIX_SIZE; i++) {
    // Lock latch pin
    digitalWrite(latch_pin_, 0);
    // Write row shift register
    shiftOut(data_pin_, clock_pin_, LSBFIRST, ~row_);
    // Write column shift register
    shiftOut(data_pin_, clock_pin_, LSBFIRST, buffer_[i]);
    // Unlock latch pin
    digitalWrite(latch_pin_, 1);
    // Switch to next row
    row_ <<= 1;
  }
}

Ссылка на всю библиотеку — вот туть.
Естественно, что столь хрупкая конструкция — не для глаз публики. Поэтому было решено припаять все на одну макетную плату.

Резисторы размещены под матрицей (в целях экономии места).

Паялось замечательно и ровненько. Да вот жаль, что про провода я начисто забыл. Дальнейшая конструкция получилась нереально нелепой. Но рабочей.

По такой вакханалии пришлось пройтись тестером на предмет замыканий и контакта.

А с лицевой стороны — все няшно и красиво.



24.06.2018
DIY