tijd niet goed op LCD display

Arduino specifieke Software
Berichten: 68
Geregistreerd: 21 Apr 2013, 22:48
Woonplaats: Hoorn

tijd niet goed op LCD display

Berichtdoor babbelkwebbel » 19 Okt 2013, 14:53

Beste Allemaal,

Ik ben net begonnen met de arduino, of te wel een hoop te leren :D , ik heb het volgende stukje software gemaakt, en loop nu tegen het probleem aan dat als de seconden onder de 10 zijn er maar 1 cijfer wordt weergeven, of te wel bij 4 seconden zie ik een 4 in plaats van 04 seconden, ik heb zitten zoeken, en kwam de float functie tegen, echter hier kom ik (nog) niet uit, heb al flink zitten te googlen, echter ik heb niets gevonden, waarschijnlijk verkeerde zoekterm gebruikt, wie kan me even op weg helpen met dit probleem?.

bij voorbaat dank.

#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"

RTC_Millis RTC;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // initialize the library with the numbers of the interface pins

void setup()
{
lcd.begin(20, 4); // set display parameters
lcd.clear(); // clear display
Serial.begin(57600);
RTC.begin(DateTime(__DATE__, __TIME__)); // following line sets the RTC to the date & time this sketch was compiled
}


void loop()
{
DateTime now = RTC.now();
lcd.setCursor(0,0);
lcd.print("NeEr LIGHTING SYSTEM");

lcd.setCursor(0,1);
lcd.print("");

lcd.setCursor(0,2);
lcd.print(now.hour(), DEC);
lcd.print(":");
lcd.print(now.minute(), DEC);
lcd.print(":");
lcd.print(now.second(), DEC);


lcd.setCursor(10,2);
lcd.print(now.day(), DEC);
lcd.print("-");
lcd.print(now.month(), DEC);
lcd.print("-");
lcd.print(now.year(), DEC);
delay(1000);
lcd.clear();

}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: tijd niet goed op LCD display

Berichtdoor nicoverduin » 19 Okt 2013, 15:56

sprintf() gebruiken:

Code: Alles selecteren
char result[3];
sprintf(result("%02d", now.hour);   // bijvoorbeeld
lcd.print(hour);


Of nog gemakkelijker:

Code: Alles selecteren
char result[9];   // 6 posities voor de cijfers + 2 voor de dubbele punt + 1 voor terminating char (= '\0')
sprintf(result, "%2d:%2d:%2d", now.hour(), now.minute(), now.second());
lcd.setCrusor(0,2);
lcd.print(result);
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 68
Geregistreerd: 21 Apr 2013, 22:48
Woonplaats: Hoorn

Re: tijd niet goed op LCD display

Berichtdoor babbelkwebbel » 19 Okt 2013, 21:49

Hartelijk dank voor uw reactie ik ga proberen dit te ontcijferen!.

Met vriendelijk groet
Erik,

ik heb gezocht in de arduino Language Reference, echter ik kan nergens het commando sprintf vinden ???..

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: tijd niet goed op LCD display

Berichtdoor nicoverduin » 19 Okt 2013, 23:39

Arduino gebruikt gewoon de AVR-GCC compiler die nog wel veel meer ondersteund dan wat er in de Arduino reference staat. sprintf is onderdeel van stdio.h en wordt gewoon door de compiler verwerkt. Alleen de floats gaan niet lekker maar daar is een alternatief voor. stdio.h is een hele bak met standaard C functies die gewoon ondersteund worden
zie verder: http://www.cplusplus.com/reference/cstdio/sprintf/.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 68
Geregistreerd: 21 Apr 2013, 22:48
Woonplaats: Hoorn

Re: tijd niet goed op LCD display

Berichtdoor babbelkwebbel » 20 Okt 2013, 22:29

nogmaals bedankt voor uw reactie!.

nou was ik voor mijn gevoel begonnen met een cursus chinees a la arduino, nu komt u met japans a la C, pffff dat wordt een zware dobber, eh is het trouwens ook te doen met instructies uit de arduino reference?..

Met vriendelijke groet
Erik,

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: tijd niet goed op LCD display

Berichtdoor nicoverduin » 20 Okt 2013, 23:01

C++ is gebouwd grotendeels op C. Jij wilt Japans leren zonder het alfabet te kennen :)
Mogelijk geeft String een oplossing. Maar een slechtere oplossing kun je niet kiezen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: tijd niet goed op LCD display

Berichtdoor shooter » 27 Okt 2013, 11:58

ach een mooie om te leren!
jij wilt dus een 0 zien als het cijfer onder de 10 is dus if cijfer <10 { schrijf 0}
omdat dit een leerding is hou ik het even cryptisch.
lekker puzzelen.
paul deelen
shooter@home.nl

Berichten: 144
Geregistreerd: 29 Okt 2012, 16:54

Re: tijd niet goed op LCD display

Berichtdoor dirk ambu » 27 Okt 2013, 21:03

misschien helpt dit iets

lcd.setCursor(6, 4);
if (uren < 10){
lcd.print('0');

groet dirk ambu

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: acluboy, zitupinav en 8 gasten