точка, на часах ГРИ

Мегавольт
Мегавольт аватар
Offline
Зарегистрирован: 10.10.2018
  if(sec<1) // светодиоды не горят
    {
      // зажечь светодиоды
      digitalWrite(led1,HIGH);
     
    }
    if(sec>=1) // светодиоды горят
    {
      // потушить светодиоды
      digitalWrite(led1,LOW);
 
Кто то может по простому объяснить как это работает?
Green
Offline
Зарегистрирован: 01.10.2015

Когда на секундах 0... иначе... Написано же открытым текстом.

Мегавольт
Мегавольт аватар
Offline
Зарегистрирован: 10.10.2018

Как я понимаю, эти строки кода отвечают за мигание точек разделителей. Хочется понять как это работает, а главное, можно ли использовать этот выход как сигнал для десятичного счётчика. 

Мегавольт
Мегавольт аватар
Offline
Зарегистрирован: 10.10.2018

считывание секунд происходит как двухзначного числа. Вот я и не пойму, как реализовано мигание раз в секунду.  

nik182
Offline
Зарегистрирован: 04.05.2015

За моргание точек обычно отвечает строка if (sec % 2) digitalWrite(led1,HIGH); else  digitalWrite(led1,LOW); а тот код моргает раз в минуту.

b707
Offline
Зарегистрирован: 26.05.2017

Так он же не показывает остальной код, может у него sec - это и есть остаток деления на два
Эти новички вечно жалеют лишнюю строку кода показать

Мегавольт
Мегавольт аватар
Offline
Зарегистрирован: 10.10.2018

код какой то рваный.... 

я так понимаю весь пакет выглядит так: 

   if(sec<1) // светодиоды не горят
    {
      // зажечь светодиоды
      digitalWrite(led1,HIGH);
      
    }
    if(sec>=1) // светодиоды горят
    {
      // потушить светодиоды
      digitalWrite(led1,LOW);
    }
    startTime = currentTime;
    ReadDS3231(); 
    sec = (sec+1);
    if(sec>=2) sec=0;
 
  }
Мегавольт
Мегавольт аватар
Offline
Зарегистрирован: 10.10.2018

прошу прощения... Код результат коллективной работы. Я туда ещё свою часть напихал для работы МР3 модуля... В результате работает, но понять как и что, мне чайнику, конечно сложно

b707
Offline
Зарегистрирован: 26.05.2017

Ее

Мегавольт
Мегавольт аватар
Offline
Зарегистрирован: 10.10.2018

Если я правильно понимаю, то мигание точки ни как не завязано на работу модуля реального времени. вывод сделан исходя из : 

 startTime = currentTime; , а

 currentTime = millis();.

То есть , это чисто ардуиновский отсчёт. Интересно, на сколько он точен.... Можно ли как то синхронизировать с реальными секундами?

nik182
Offline
Зарегистрирован: 04.05.2015

Можно,  и даже красиво. На одной из ног принимаем прерывание от секундной ноги ds3231 и включаем точку на 500 мс через блинк без делэй. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Я так мигаю

 
THandle hColon = TimerList.Add(500, tmrColon); // двоеточие раз в полсекунды
 
void tmrColon(void) {
    Screen.ToggleColon();
}
 
Мегавольт
Мегавольт аватар
Offline
Зарегистрирован: 10.10.2018

nik182 пишет:

Можно,  и даже красиво. На одной из ног принимаем прерывание от секундной ноги ds3231 и включаем точку на 500 мс через блинк без делэй. 

Я об этом думал. Но на модуле версии мини эта ножка не выведена на разъём. Можно конечно подпаяться... так или иначе выход с неё делать надо.