в #37 таймер правильный, верни его.в #37 сделано на таймере, замечаний не было, но мне не нравится как работает...
А что именно не нравится? Может то, что не мигает?
в #37 таймер правильный, верни его.в #37 сделано на таймере, замечаний не было, но мне не нравится как работает...
мигает, раз в 10 секунд с #52)Я в нем вижу одну ошибку, моя ставка - что он вообще не мигает
Как я вас люблю, новички... Просил же - запускай именно 37 код... И что? - все равно запустил какой-то другой...мигает, раз в 10 секунд с #52)
bool hasChange = false;
bool dot = false;
void Dots() {
static uint32_t t = millis();
if (millis() - t < 500) return;
t = millis();
dot = !dot;
hasChange = true;
if (dot) {
display.drawRect(27, 18, 2, 2, color);
display.drawRect(27, 23, 2, 2, color);
}
else {
display.drawRect(27, 18, 2, 2, green);
display.drawRect(27, 23, 2, 2, green);
}
}
bool dot = true;
void Dots() {
static uint32_t t = millis();
if (millis() - t < 500) return;
t = millis();
if (dot) {
display.clearDisplay();
display.drawRect(27, 18, 2, 2, color);
display.drawRect(27, 23, 2, 2, color);
dot = false;
return;
}
if (!dot) {
display.clearDisplay();
display.drawRect(27, 18, 2, 2, black);
display.drawRect(27, 23, 2, 2, black);
dot = true;
return;
}
}
void Time() {
int minute = ntpClient.getMinutes();
int m2 = minute % 10;
display.setFont(&atawi21x12b);
display.setTextColor(color);
display.setCursor(43, 11);
display.print (m2); //второй символ минуты
int new_time, old_time;
new_time = m2;
if (new_time != old_time){
display.clearDisplay();
old_time = new_time;
}
}
а ты не догадываешься?почему-то clearDisplay() в void Time() блокировал прорисовку точек...
если ты выкладываешь код, чтобы кто-то посмотрел - четче пиши, что в нем не так.такой вариант придумал
дай угадаю - процедура Time вызывается после процедуры Dots?@bort707, ну часы то показывались исправно) а вот точки уже нет)
если ты выкладываешь код, чтобы кто-то посмотрел - четче пиши, что в нем не так
Часы показывают не сразу, а спустя несколько минут. Думаю вынесу проверку в loop, и оттуда вызывать...чтобы часы сразу запускались, а не пока переменные заполнятся)
проще всего сделать переменную флаг, обозначающую, надо ли перерисовывать всю картинку. И в начале делать его истинным.Часы показывают не сразу, а спустя несколько минут
я вот думаю этот вариант не в моем случае...проще всего сделать переменную флаг
int new_time;
int old_time = -1;
void Time() {
int minute = ntpClient.getMinutes();
int m2 = minute % 10;
display.setFont(&atawi21x12b);
display.setTextColor(color);
display.setCursor(43, 11);
display.print (m2); //второй символ минуты
new_time = m2;
if (new_time != old_time){
display.clearDisplay();
old_time = new_time;
}
}
вот такой вариант будет)Перерисовка может потребоватся не только по смене минуты, но и например по температуре или другим элементам
if (new_time != old_time) {
display.clearDisplay();
TempHome();
TempStreet();
Press();
old_time = new_time;
}



логический уровень есп 3.3, а у матрицы 5в@BRUER,
п.с. как-то интересно работает матрица) с usb кабелем мерцаний практически нет, стоит запустить без кабеля, идут мерцания))