• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь NodeMCU + Цифровой дисплей

BlackRaven

New member
Пытаюсь подружиться с ESP и NodeMCU на конекретной задаче по выводу нужных цифр на 4-хзначный дисплей из Китая (вот такой). Нашел на Гитхабе либу (эту), которая написана для этого дисплея, и она правда выводит нужные цифры на дисплей, но у меня не получается менять цифры по ходу работы программы. То есть код
Код:
dofile("qifei.lua")
displaywrite(1234)
выводит все верно, но когда пытаюсь менять цирфы вот таким кодом:
Код:
dofile("qifei.lua")
local i = 100
tmr.alarm(1,500,tmr.ALARM_AUTO,function()
   displaywrite(i)
   i = i + 1
end)
или вот таким:
Код:
dofile("qifei.lua")
for i=1, 100, 1 do
   displaywrite(i)
   tmr.delay(500)
end
то ничего не происходит, горит одна цифра и все. Что я делаю не так и как мне это исправить? заодно что можно почитать, чтобы впредь все работало?
 

NeoroN

Member
А почему не TM1637 - им же в разы проще управлять, чем матрицу через ESP переключать.

Потому и одна цифра горит - потому что там надо гнать переключающие импульсы с другими цифрами.
 

BlackRaven

New member
А почему не TM1637
заказывал с али вместе с платой, это в принципе мои первые подобные устройства, до этого с миром Arduino/ESP не сталкивался. Насчет TM1637 понял - буду использовать его. А с текущим дисплеем можно все-таки что-нибудь сделать?
 

NeoroN

Member
Ну если разобраться с переключением - но производительности LUA тут вряд ли хватит - нужен C++. Матричнаяя схема очень популярна у экономистов, но сейчас когда в китае имс стоят копейки - экономия не оправданна.
Суть дисплея в том что первый байт это цифра а второй это ее место - чтобы светились все цифры надо гнать поток из пар байт - постоянно. Пары байт - потому что там 2 регистра, один отвечает за положение цифры, воторой за саму цифру. Как только вы начинаете опрос сенсоров - поток прекращается и дисплей гаснет что очень неудобно - имхо устаревший метод.

В коде библиотеки постоянно переопределяется таймер - это не верный метод. Таймер должен всегда быть а меняться должен буфер, откуда таймер черпает данные.
 

BlackRaven

New member
В коде библиотеки постоянно переопределяется таймер - это не верный метод. Таймер должен всегда быть а меняться должен буфер, откуда таймер черпает данные.
то есть надо вынести таймер во внешний файл, из которого вызывать просто процедуру однократного вывода на дисплей данных?
 
Сверху Снизу