2016-04-14 21 views
0

RTC modülümü ve LCD'yi Arduino'ma bağlıyorum. Zaman doğru olarak yazdırılır, ancak, örn. 10:13:09 gerçek zamanlı olarak, LCD ekranda 10:13:19 olarak basıldı. 10:13:10'a geldiğinde, iyi bir şekilde basılıyor. Örnek: 10:13:58LCD ve RTC_DS1307- 1-9 basamaklı saniyeleri doğru şekilde LCD'ye basamamak

10:13:59

10:14:10

10:14:11 ... İşte sorun

10:14 olduğunu : 19 Burada sorun

10:14:10

10:14:11 ... vb olduğunu

Bunun için

Kodum (Ben yanlış gidiyorum emin olduğu):

//time displayed on lcd 
lcd.setCursor(4, 0); 
lcd.print(now.hour(), DEC); 
lcd.print(':'); 
lcd.print(now.minute(), DEC); 
lcd.print(':'); 
if(Serial.print(now.second(), DEC) >= 10){ 
    lcd.setCursor(10,0); 
    lcd.print(now.second(), DEC); 
} 
else if(Serial.print(now.second(), DEC) < 10){ 
    lcd.setCursor(11,0); 
    lcd.print(now.second(), DEC); 
    lcd.setCursor(10,0); 
    lcd.print(" "); 
} 

birisi bu kodla bana yardım eder misiniz? tarafından

+1

[Serial.::print, yazdırılan bayt sayısını döndürür] (https://www.arduino.cc/en/Serial/Print) Daha sonra 10'a yazılan bayt sayısını karşılaştırırsınız. istemek. – user4581301

+0

Saniye <10 olduğunda, hem Serial.print hem de lcd.print tek bir rakam basacaktır. Bu rakamı doğru yere yazdırarak telafi ettiniz, ancak "onlar" konumunda kalan rakamı değiştirmediniz. Öndeki 0'ı yazdırmanız gerekiyor. –

cevap

2

kod Şaud:

//time displayed on lcd 
lcd.setCursor(4, 0); 
lcd.print(now.hour(), DEC); 
lcd.print(':'); 
lcd.print(now.minute(), DEC); 
lcd.print(':'); 
if(now.second() >= 10){ 
    lcd.setCursor(10,0); 
    lcd.print(now.second(), DEC); 
} 
else if(now.second() < 10){ 
    lcd.setCursor(11,0); 
    lcd.print(now.second(), DEC); 
    lcd.setCursor(10,0); 
    lcd.print(" "); 
} 

(now.second(), DEC) halinde Serial.print içinde Serial.print çıkarmak seri bağlantı Sended bayt sayısını verir. https://www.arduino.cc/en/Serial/Print Burada yararlı değil.

İlgili konular