Voorloopnullen werken niet goed met RTC
11 berichten
• Pagina 1 van 2 • 1, 2
Voorloopnullen werken niet goed met RTC
Hallo allemaal,
Ik ben een ontzettende beginner, dus weet nog niet zoveel van Arduino programmeren.
Nu probeer ik te begrijpen hoe een RTC werkt.
Het volgende programma werkt wel, maar de voorloopnullen bij de minuten en de seconden werken niet OK.
Er wordt namelijk ALTIJD een voorloopnul gegeven, ook als de min/sec onder de 10 zijn.
Hopelijk kan iemand mij uitleggen hoe dit komt.
Alvast dank,
Ruud.
cpp code
Ik ben een ontzettende beginner, dus weet nog niet zoveel van Arduino programmeren.
Nu probeer ik te begrijpen hoe een RTC werkt.
Het volgende programma werkt wel, maar de voorloopnullen bij de minuten en de seconden werken niet OK.
Er wordt namelijk ALTIJD een voorloopnul gegeven, ook als de min/sec onder de 10 zijn.
Hopelijk kan iemand mij uitleggen hoe dit komt.
Alvast dank,
Ruud.
cpp code
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Serial.begin(9600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop () {
DateTime now = RTC.now();
Serial.print(now.day(), DEC);
Serial.print('-');
Serial.print(now.month(), DEC);
Serial.print('-');
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.print(' ');
Serial.print(' ');
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
if (now.minute(), DEC <10);
{
Serial.print("0");
}
Serial.print(now.minute(), DEC);
Serial.print(':');
if (now.second(), DEC <10);
{
Serial.print("0");
}
Serial.print(now.second(), DEC);
Serial.println();
delay(1000);
}
Advertisement
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Voorloopnullen werken niet goed met RTC
Dit doe je verkeerd:
cpp code
Moet zijn:
cpp code
En zo ook voor de seconden
Verder:
a) Je kan meerdere spaties printen tegelijk
b) kopieren van code is meestal de verkeerde aanpak. Meer tijd steken in de taal zelf is altijd beter. Er is ok nog ergens een nederlandse pdf van het ROC (ff googlelen op "Arduino Handleiding ROC") die zeer goed voor jou zou zijn.
c) Leer te programmeren zonder delay(). Afleren is moeilijker dan aanleren. Zie "Blink without delay".
d) google eens op "sprintf en c". De loop kan dan met 90% minder code hetzelfde doen.
cpp code
if (now.minute(), DEC <10);
{
Serial.print("0");
}
Moet zijn:
cpp code
if (now.minute() <10)
{
Serial.print("0");
}
En zo ook voor de seconden
Verder:
a) Je kan meerdere spaties printen tegelijk
b) kopieren van code is meestal de verkeerde aanpak. Meer tijd steken in de taal zelf is altijd beter. Er is ok nog ergens een nederlandse pdf van het ROC (ff googlelen op "Arduino Handleiding ROC") die zeer goed voor jou zou zijn.
c) Leer te programmeren zonder delay(). Afleren is moeilijker dan aanleren. Zie "Blink without delay".
d) google eens op "sprintf en c". De loop kan dan met 90% minder code hetzelfde doen.
Re: Voorloopnullen werken niet goed met RTC
Hallo Nico,
Ontzettend bedankt voor deze tip, het werkt.
Ik heb die handleiding al gevonden en ben daar druk mee bezig.
Het gekke is echter, dat ik nog niets heb gevonden over die " , DEC " gevallen.
Maar misschien heb ik nog niet goed genoeg gezocht.
Ga er wel mee verder hoor, om het te leren, maar zoals vaak, Tijd, Tijd, Tijd!
Bestond een dag maar uit 96 uur.
Maar dit gaat goed, nogmaals dank,
Ruud.
Ontzettend bedankt voor deze tip, het werkt.
Ik heb die handleiding al gevonden en ben daar druk mee bezig.
Het gekke is echter, dat ik nog niets heb gevonden over die " , DEC " gevallen.
Maar misschien heb ik nog niet goed genoeg gezocht.
Ga er wel mee verder hoor, om het te leren, maar zoals vaak, Tijd, Tijd, Tijd!
Bestond een dag maar uit 96 uur.
Maar dit gaat goed, nogmaals dank,
Ruud.
Re: Voorloopnullen werken niet goed met RTC
Tijd, Tijd , Tijd is now.minute:now.seconds
geintje
en ja nico heeft weer gelijk, opdracht: print de tijd als de seconde verandert.
en doe dat dan in een functie met void printtijd()
geintje
en ja nico heeft weer gelijk, opdracht: print de tijd als de seconde verandert.
en doe dat dan in een functie met void printtijd()
paul deelen
shooter@home.nl
shooter@home.nl
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Voorloopnullen werken niet goed met RTC
DEC gebruik je alleen bij print eigenlijk. DEC = Decimaal, HEX = hexadecimaal en BIN is binary.ruudhot schreef:Hallo Nico,
Ontzettend bedankt voor deze tip, het werkt.
Ik heb die handleiding al gevonden en ben daar druk mee bezig.
Het gekke is echter, dat ik nog niets heb gevonden over die " , DEC " gevallen.
Maar misschien heb ik nog niet goed genoeg gezocht.
Ga er wel mee verder hoor, om het te leren, maar zoals vaak, Tijd, Tijd, Tijd!
Bestond een dag maar uit 96 uur.
Maar dit gaat goed, nogmaals dank,
Ruud.
Ik zou eens goed naar al die printf (printf, sprintf, fprintf) functies zoeken. Ze staan voor formatted print. Alleen floating point is uitgezet bij de Arduino omdat je anders gelijk een kwart van je flash geheugen kwijt bent. Maar daar heb je de functie dtostrf() voor.
Re: Voorloopnullen werken niet goed met RTC
Nico en Paul,
Beiden bedankt, het klinkt nog allemaal als abacadabra, maar ik leer door.
Heb nog niet iets echt goeds gevonden, die handleiding ROC is best leuk, maar gaat niet erg ver.
Wat ik al schreef, die DEC i.c.m. tijd komt niet ter sprake, evenals de printf (printf, sprintf, fprintf) functies.
Een complete C cursus voert misschien wel weer te ver, hoewel je dan wel alles leert natuurlijk.
Eigenlijk zoek ik een handleiding die een beetje in praktische bewoordingen uitlegt wat alle functies doen.
Maar nogmaals, door jullie heb ik toch weer iets geleerd, bedankt.
Groet,
Ruud.
Beiden bedankt, het klinkt nog allemaal als abacadabra, maar ik leer door.
Heb nog niet iets echt goeds gevonden, die handleiding ROC is best leuk, maar gaat niet erg ver.
Wat ik al schreef, die DEC i.c.m. tijd komt niet ter sprake, evenals de printf (printf, sprintf, fprintf) functies.
Een complete C cursus voert misschien wel weer te ver, hoewel je dan wel alles leert natuurlijk.
Eigenlijk zoek ik een handleiding die een beetje in praktische bewoordingen uitlegt wat alle functies doen.
Maar nogmaals, door jullie heb ik toch weer iets geleerd, bedankt.
Groet,
Ruud.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Voorloopnullen werken niet goed met RTC
Die abracadabra komt door gebrek aan ervaring. Het kunstje wat je nu eenmaal niet uit de boeken leert. Dat je die functies niet in de handleiding ROC vindt komt doordat de handleiding puur basis is voor de taal C op de Arduino. Maar C/C++ is immense veel uitgebreider. Maar je moet eerst maar een beetje basis leren coderen. En als je handig bent kijk je ook naar hoe je moet programmeren. Dat is namelijk iets heel anders. Helaas kan ik het Onderwijs daar tegenwoordig nog weinig op betrappen.
Re: Voorloopnullen werken niet goed met RTC
OK Nico,
Maar ik weet al een beetje dat programmeren mij niet echt in het bloed zit.
Ik moet het (vaak) hebben van bestaande programma's en kijken hoe die werken.
Daarna kan ikzelf wel wat aanpassen en aan elkaar knopen.
Maar goed, ik doe mijn best.
Nogmaals dank,
Ruud.
Maar ik weet al een beetje dat programmeren mij niet echt in het bloed zit.
Ik moet het (vaak) hebben van bestaande programma's en kijken hoe die werken.
Daarna kan ikzelf wel wat aanpassen en aan elkaar knopen.
Maar goed, ik doe mijn best.
Nogmaals dank,
Ruud.
Re: Voorloopnullen werken niet goed met RTC
Het is trouwens wel zo, dat ook het printen van meerdere spaties op 1 regel niet lukt. Zodra ik meer dan 1 spatie geef, worden de quotjes zwart i.p.v. blauw, en dan krijg ik rare getallen tussen het jaar en de uren.
Er staat dan b.v. niet 02-06-2016 0:10:12 maar 02-06-201682240:10:12
Ik dacht ook dat je op 1 regel Serial.print('spatie spatie spatie '); kon geven, maar dat werkt niet.
Er staat dan b.v. niet 02-06-2016 0:10:12 maar 02-06-201682240:10:12
Ik dacht ook dat je op 1 regel Serial.print('spatie spatie spatie '); kon geven, maar dat werkt niet.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Voorloopnullen werken niet goed met RTC
Je moet dubbele quotes gebruiken bij strings. Er is een wezenlijk verschil tussen een enkele en dubbele quote.
Dus:
cpp code
Werkt prima
Dus:
cpp code
Serial.print(" dit zijn 5 spaties hiervoor");
Werkt prima
11 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 37 gasten