2016-05-09 6 views
0

Хорошо, поэтому я написал этот код, и это должно, насколько мне известно, вывести время HMS, но оно выводит 00:00:00 WAY больше секунды. Я не пробовал ждать дольше, чем через пару часов, чтобы узнать, не изменилось ли это. Я знаю, что это не проблема с оборудованием, потому что мой lcd работает отлично и У меня нет ничего другого, связанного с моим arduino. Если вы хотите знать, я попытался установить цикл «_time» «over».Подсчет секунд не работает

Это код:

#include <LiquidCrystal.h> 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 

int hour; 
int minute; 
int seconds = -1; 
boolean printed = false; 
boolean secCounted = false; 
unsigned long nextMillis = 1000; 

void setup() { 
    lcd.begin(16, 2); 
} 

void loop() { 
    unsigned long currentMillis = millis(); 
    if(currentMillis = nextMillis) _time(), nextMillis += 1000; 
} 

void _time(){ 

            seconds += 1; 
    if(seconds == 60)     seconds = 0, minute += 1; 
    if(minute == 60 && hour <= 12) minute = 0, hour += 1; 

    if(printed == false){ 
    if(hour == 0)      lcd.print("00"); 
    if(hour != 0 && hour < 10)  {lcd.print("0"); 
            lcd.print(hour);} 
    if(hour > 9)      lcd.print(hour); 
            lcd.print(":"); 
    if(minute == 0)     lcd.print("00"); 
    if(minute != 0 && minute < 10) {lcd.print("0"); 
            lcd.print(minute);} 
    if(minute > 9)     lcd.print(minute); 
            lcd.print(":"); 
    if(seconds == 0)     lcd.print("00"); 
    if(seconds != 0 && seconds < 10) {lcd.print("0"); 
            lcd.print(seconds);} 
    if(seconds > 9)     lcd.print(seconds); 
    printed = true; 
    } 
} 
+0

Это может помочь, если вы добавили тег для языка программирования ([тег: с]?) – Filburt

ответ

0

Изменить

if(currentMillis = nextMillis) // here is nextMillis is assigned to currentMillis 

на

if(currentMillis == nextMillis) // here is nextMillis is compared with currentMillis on equality 
+0

Спасибо! Также я забыл две вещи: 1) сделать «напечатанную» ложь, 2) очистить lcd. –