To use the node in your project you should have the sergtzar67/program-clock-v01 library installed. Use the “File → Add Library” menu item in XOD IDE if you don’t have it yet. See Using libraries for more info.
C++ implementation
struct State {
TimeMs nextTrig;
};
{{ GENERATED_CODE }}
uint8_t minutes = 0;
uint8_t seconds=0;
uint8_t hours=0;
void evaluate(Context ctx) {
State* state = getState(ctx);
TimeMs tNow = transactionTime();
TimeMs tNext = 0;
// как только разница между текущим временем и временем записанным в tNext становится больше 1000 миллисекунд...
while(tNext-tNow > 1000){
//...обновляем tNext и добавляем к счетчику Секунд +1
tNext=tNow;
seconds+=1;
if (seconds > 59) {
seconds = 0;
// как только счетчик секунд достигнет 60, обнуляем его и добавляем к счетчику Минут +1...
minutes+=1;
emitValue<output_MIN>(ctx, minutes);
}
// ...тоже самое для Часов...
if (minutes > 59) {
minutes = 0;
hours+=1;
emitValue<output_HOUR>(ctx, hours);
}
// ... и обнуляем счетчик Часов в конце дня
if (hours > 23) {
hours = 0;
}
state->nextTrig = tNext;
//пауза на 1 сек
setTimeout(ctx, 1000);
emitValue<output_SEC>(ctx, seconds);
}
}