Массивы для LED матрицы в Excel — легко!

в 10:18, , рубрики: c/c++, diy или сделай сам, Excel, LED matrix, stm8, массивы

Разрабатываю устройство с выводом информации на LED-матрицу. Стандартное типовое решение на МК STM8S105C6T6 + 74HC595.

image

И вот, после прогоночных тестов на простых картинках и строках, я столкнулся с проблемой, как же забивать эти массивы данных самым простым способом? Ведь каждый пиксел это или 1 или 0, а даже в самой маленькой матрице 8х8 – этих пикселов аж целых 64.

Можно, конечно, вручную, воспользовавшись блокнотом набить что-то типа этого:

image

Но потом массив 0 и 1 надо перевести в десятичные или шестнадцатеричные значения, соответствующие строкам или столбцам, например, при помощи инженерного калькулятора. Но это долго и неинтересно. Можно написать простенький редактор на C#, но у меня на работе надо устанавливать и настраивать среду. Зато под рукой есть Excel! Он же прекрасно справляется с такого рода задачами. Итак, приступим.

Для начала договоримся, что светящийся пиксел – это «1», не светящийся – «0». Чтобы Excel показывал нам в табличке «лампочки» вместо скучных цифр, воспользуемся условным форматированием. Пусть вс§, что равно и больше 1 — будет зелёным кружком, а всё что меньше — не закрашенным белым.

image

Получаем в левой части ячеек кружок, который соответствует состоянию ячейки. В правой видим содержимое ячейки.

image

Но зачем нам видеть «0» и «1»? Скроем их, для этого надо уменьшить ширину ячеек так, чтобы остались видны только «лампочки». У меня это получилось при ширине столбца = «2». Теперь самое интересное. Как превратить восемь нулей и едениц в один байт в Excel? Для этого возьмем школьную формулу перевода двоичного числа в десятичное.

Для тех, кто не помнит:

10110110 = (1·2^7)+(0·2^6)+(1·2^5)+(1·2^4)+(0·2^3)+(1·2^2)+(1·2^1)+(0·2^0) = 128+32+16+4+2 = 182

В ячейке под лампочками получается такая же формула:

=J14*2^7+J13*2^6+J12*2^5+J11*2^4+J10*2^3+J9*2^2+J8*2^1+J7*2^0

Ну и напоследок, мы же хотим получить код массива, чтобы сразу вставить в программу и проверить. Для этого объединяем содержимое ячеек через запятую при помощи конструкции &", "&. В итоге получится формула:

=«unsigned char to_display[]={»&B16&", "&C16&", "&D16&", "&E16&", "&F16&", "&G16&", "&H16&", "&I16&", "&J16&", "&K16&", "&L16&", "&M16&", "&N16&", "&O16&", "&P16&", "&Q16&", "&R16&", "&S16&", "&T16&", "&U16&", "&V16&", "&W16&", "&X16&", "&Y16&", "&Z16&", "&AA16&", "&AB16&", "&AC16&", "&AD16&", "&AE16&", "&AF16&", "&AG16&", "&AH16&", "&AI16&", "&AJ16&", "&AK16&", "&AL16&", "&AM16&", "&AN16&", "&AO16&", "&AP16&", "&AQ16&", "&AR16&", "&AS16&", "&AT16&", "&AU16&", "&AV16&", "&AW16&", "&AX16&", "&AY16&", "&AZ16&", "&BA16&", "&BB16&", "&BC16&", "&BD16&", "&BE16&", "&BF16&", "&BG16&"};"

В итоге, набив массив значениями «1» и «0», мы сразу видим результат:

image

А сгенерированный код можно сразу вставлять в программу и смотреть результат:

Автор: IronHead

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js