dizzyy писал(а): ↑13.06.2018{, 12:46}
а если поделить отдельно кнопки, светодиоды и сегменты
Неужели булевые переменные 24-х кнопок, 16-и светодиодов и 8-и позиций десятичных/разделительных точек перестанут занимать 48 байт от этого? Хотя отчасти Вы правы, не всем всё это нужно, но кажется не в Вашем случае.
По теме.
Извините за длительное молчание, не был готов предметно говорить, и оказалась, что применяемая библиотека, ко всем warning-ам компилятора, ещё неправильно «общается» с ТМ1638. Если интересует этот вопрос,- обратите внимание на принудительные (IMHO) переключения состояния пинов Ардуино в High, при наличии подтяжек к Vcc сигнальных линий Data, Clock, Strobe, которые и предназначены для формирования этого уровня. К сожаленью не нашлось альтернативы и на github-е. Впрочем это касается всей линейки ТМ16хх, что у некоторых устройств (ТМ1628, ТМ1637, ТМ1651 и т.д. с эрзац-TWI/I2C) неизбежно приведёт к выгоранию вывода Ардуино и/или самого драйвера при удержании линии DIO в LOW (ACK или response ) подчинённым устройством. Вероятно виноваты Chinese GoogleTranslated Datasheets. К слову, предпочтительным считается втекание тока в МК, а не вытекание (см. нагрузочные ха-ки по документации).
dizzyy, ОК. Вообще-то я спрашивал об функционале «некоего устройства по отображению буквенно-числовой на 7-ми сегментном индикаторе, другой информации на одиночных светодиодах, а также сканирования кнопочной клавиатуры», которое Вы хотите создать на базе передней панели ТРМ251 применив мс ТМ1638 (или один из модулей на ТМ1638 ?). По приложеной Вами фотографии корпуса ТРМ251 я догадываюсь, что Вам нужно управлять 4-х разрядным 7-и сегментным индикатором, 19-ю ( ? ) одиночными светодиодами и 13-ю ( ? ) кнопками.
Указанная библиотека предназначена (см. описание) для промышленно выпускаемых модулей:
- LED&KEY- 8 одиночных светодиодов, клавиатура- «матрица» 1х8 кнопок (pin3 TM1638-K3), 8-разрядный 7-сегм. индикатор с общим катодом (СС);
- JY-LKM1638– 8 одиночных 2-полярных светодиодов с общим анодом (то-же, что 16- одноцветных), клавиатура- «матрица» 1х8 кнопок (pin3- TM1638_K3) 8-разрядный 7-сегм. индикатор с общим катодом (СС);
- QYF-TM1638- клавиатура- «матрица» 2х8 кнопок (pins1,2- TM1638_К1,K2- неуточн.инф.) 8-разрядный 7-сегм. индикатор с общим анодом (СА);
- ТМ1640- 16-разрядный 7-сегм. индикатор с общим катодом (СС).
Наверное, ни одна из конфигураций полностью не удовлетворяет Ваших потребностей. Отсюда и вытекал мой вопрос. Тем не менее, если использовать возможности самого драйвера, заложенные производителем, то при дописании функций:
- setBinaryToLEDs(0bxxxxxxxx, positionToStart), вместо ненужных(?) для ваших задач 4-х старших разрядов из 8-и присутствующих, можно выводить состояние до 24-х одиночных светодиодов дополнительно к 16-ти имеющимся функции setLEDs(word led). Это если Вам не хватает (в чем сомневаюсь, потому не делал);
-get24Buttons()- поддержка "хитро" подключенных/кодированных 24 кнопок (готово).
Тест и новую библиотеку могу (при желании/актуальности и ответах на вопросы с пометкой-(?)) предоставить в личке (!- поддержку QYF-TM1638 пришлось пока отложить). Извините, в паблик больше тесты не выкладываю- безполезно.
Удачи!