Подкиньте идею по реализации дисплея из 9 светодиодных матриц.
- Войдите на сайт для отправки комментариев
Здравствуйте. Хочу сделать некое устройство, которому потребуется индикация чуть сложнее, чем пара светодиодов. Устройство будет стоять в машине. Поэтому, нужно максимально чёткий способ вывода информации - ЖК дисплей слишком мелкий для такой цели. Решил использовать 9 светодиодный матриц (8Х8), собрав их них квадрат 24Х24. Устройство - некая приблуда с функциями парктроника и контролем слепых зон, ему потребуется выводить информацию о расстоянии (число, до 3 знаков) и показывать, с какой стороны событие (например, стрелка или просто заливка соответствующей матрицы цветом). Напрашивается реализация "в лоб" - 3 матрицы в центре под цифры, по 3 сверху и снизу под остальную индикацию. Это я смогу - сдвиговые регистры, киллограмм резисторов и относительно простая прошивка. НО! Не подскажете ли, есть ли шанс соорудить настоящий дисплей? Так, что бы я мог по настоящему оперировать пространством - выводить число в определённой координате не привязываясь к отдельным матрицам. Нечто вроде ledmatrix.write('Hello', 9, 1).
P.S. Думаю, я прошу помощи кодом, как прожжёных халявщик, но боюсь признаться в этом :) Потому как сам я могу написать сложный парсер логов, и положить результат в БД, например. Но вот в данном случае просто не знаю с чего начать. Это же нужно нечто вроде программного драйвера дисплея...
Для реализации данного проекта понадобится:
1. Светодиодная матрица 8х8 - 9шт.
2. Сдвиговый регистр 74HC595 - 6шт.
3. Транзисторная сборка ULN2803 - 3шт.
4. Резистор 100 Ом - 24шт.
Вроде ничего не забыл.
Резисторы специально заниженного номинала дабы повысить яркость матриц т.к. индикация динамическая.
Для реализации данного проекта понадобится:
1. Светодиодная матрица 8х8 - 9шт.
2. Сдвиговый регистр 74HC595 - 6шт.
3. Транзисторная сборка ULN2803 - 3шт.
4. Резистор 100 Ом - 24шт.
Вроде ничего не забыл.
Резисторы специально заниженного номинала дабы повысить яркость матриц т.к. индикация динамическая.
Ну... Спасибо. Это такой намёк, что нужно самому ковыряться?
P.S.
А чем опасно без транзисторов светить? Ну...всмысле: "оно же работает". Регистр долго не проживёт или просто опять таки яркость?
И вот схема
я бы посовсетовал порыскать по сайтам разработчиков готовых драйверов чем маяться с сборкой драйвера по частям(из 74595 и ULN2803),например :
max6960,как мне кажеться поиск такого решения,если вы на "ты" с ЛУТом,намного упростит програмную реализацию)) такие же драйвера можно поискать и у других гигантов полупроводниковой индустрии : PCF8562 - NXP Semiconductors,AS1130 - Austriamicrosystems
еще лучше,тупо поискать готовые библиотеки под матрицы,и поглядять на каком драйвере все реализованно ,например AS1107(совместим с MAX7221) ролик демонстрации,ссылки и пояснения на библиотеки(из гугла) : один,два,три
И часто в "программировании" задают вопросы по аппаратной реализации? Я представляю, как это выглядит "в железе". У меня нет идею по программной реализации. Я совершенно не представляю, как мне формировать "кадр" на дисплее 24Х24, не задумываясь об отдельных матрицах.
я бы посовсетовал порыскать по сайтам разработчиков готовых драйверов чем маяться с сборкой драйвера по частям(из 74595 и ULN2803),например
Кажется это то, что нужно.
И вот схема
Ах тыж я тупая обезьяна! Вы же дали мне схему ьез привязки к конкретной матрице! Это спасибо! Осталось теперь прояснить, насчёт формирования кадра.
Бывает, но чаще что бы решить ту или иную программную задачу нужно правильное железо. А кадр формировать просто - объявляете массив байт соответствующий вашей матрице и пишите функцию, которая выводит этот массив на дислей, меняя в этом массиве данные они меняются на дисплее.
Вот есть похожая тема.
Бывает, но чаще что бы решить ту или иную программную задачу нужно правильное железо. А кадр формировать просто - объявляете массив байт соответствующий вашей матрице и пифите функцию, которая выводит этот массив на дислей, меняя в этом массиве данные они меняются на дисплее.
Вот есть похожая тема.
Это я понимаю. Не понимаю, как мне работать с массивом. Вот вывожу я число 42 и заливаю левую грань цветом. А что делать, если число теперь - 111? Не писать же кучу if'ов для каждого случая.
Не совсем понятно, что вы хотите спросить. Вы создаете маску для каждой цифры и заполняете массив в нужном месте этой маской.
Все не так просто... Здесь же матрица 24х24 - ей динамическую индикацию надобно организовывать.
Но идея (я имею ввиду схему) - правильная, нужно использовать SPI.
Вот опять, и речи не шло о статике, да и по схеме видно, что это динамика, ну вы хотя бы выше сообщения прочитали.
Не так просто, как в той теме, на которую ссылка была дана. Нужно делать динамическую индикацию, которая будет работать "в фоне", то есть по прерыванию, чтобы о ней потом вообще не задумываться. 24 бита - нестандартная длина, нужно будет выделять или по 3 байта на строку, или по long int (4 байта).
И еще. "не так просто" - не подразумевает "очень сложно"
Не так просто потому что матриц не одна, а 9. Но я не вижу в этом проблемы, вот тестилка, которая двигает 1 байт в массиве из 3 байт, по аналогии можно вставлять и массив байт в многомерной массив в любую "точку координат массива".
А вывод на дисплей сделать в прерывании по таймеру вообще просто так как есть готовая либа.
Часто простые вещи для нас становятся камнем преткновения для других :)
Для меня "не так просто" - эквивалент "не решается с классическим набором библиотек и функциями Ардуино (без заглубления в с)
А вывод на дисплей сделать в прерывании по таймеру вообще просто так как есть готовая либа.
Я погуглил и невод вернулся с тиною морскою... Не ткнёте носом, раз уж такое дело?
Вот например MsTimer2
И вот TimerOne