Klok vertraagd 1 sec per 2 min op serial monitor

IDE gerelateerde berichten
Berichten: 7
Geregistreerd: 13 Aug 2013, 22:33

Klok vertraagd 1 sec per 2 min op serial monitor

Berichtdoor vissie13 » 11 Nov 2013, 22:15

Besten,

Ik ben aan het klooien met RTC module 1302 en gewoon sec,min en uren int'en en >59 laten veranderen.
Maar als ik naar serial monitor ga heeft de klok al snel vertraging vergeleken stopwatch :s.

Wat kan het probleem hier zijn?

1000 milles is toch ten allen tijde 1 sec?

Rick

Advertisement

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

Re: Klok vertraagd 1 sec per 2 min op serial monitor

Berichtdoor nicoverduin » 12 Nov 2013, 01:34

En nu in gewoon Nederlands en volledige zinnen?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: Klok vertraagd 1 sec per 2 min op serial monitor

Berichtdoor Rudi » 12 Nov 2013, 10:37

Hardwarematig kan er niet zoveel fout gaan, tenzij het kristal een afwijking heeft.
Heb je al met verscheidene sketches getest?
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

Berichten: 7
Geregistreerd: 13 Aug 2013, 22:33

Re: Klok vertraagd 1 sec per 2 min op serial monitor

Berichtdoor vissie13 » 12 Nov 2013, 22:00

Sorry, ik zal het wat beter uitleggen.

Ik gebruik onderstaande code.

ik wil hiermee een simpele klok simuleren, welke ik uiteindelijk in kan stellen met een minuutknop en een uurknop.
De LDR stuurt een transistor aan, zodat de uiteindelijke ledjes combinatie die aangestuurd gaat worden door de klok kunnen faden afhankelijk van het ligt.

Als ik nu naar serial monitor ga en een stopwatch ernaast houd, dan loopt de arduino per 10 minuten ongeveer 2 seconden achter.

Wat is hier het probleem, pakt de arduino ook tijd voor het uitlezen van de LDR etc?

Ik ben beginner, lekker aan het klooien, maar wat mis ik hier in kennis?

Groet,

Rick

const int uurbutton = 3;
int seconde = 0;
int minuut = 0;
int uur = 0;
int buttonstatus = 0;
int ldr = A0;
int trans = 2;
int ldrwaarde = 0;
int transwaarde = 0;
int lastbuttonstatus = 0;


void setup()
{
Serial.begin(9600);
pinMode(uurbutton, INPUT);
}

void loop()
{
static unsigned long eindesec = 0;
if (millis() - eindesec >= 1000) {
eindesec = millis();
seconde++;
}

if (seconde > 59) {
minuut++;
seconde = 0;
}

if (minuut > 59) {
uur++;
minuut = 0;
}

if (uur > 23) {
uur = 0;
}

buttonstatus = digitalRead(uurbutton);

if (buttonstatus != lastbuttonstatus) {
if (buttonstatus == HIGH) {
minuut++;
}

}
lastbuttonstatus = buttonstatus;
{

ldrwaarde = analogRead(ldr);
transwaarde = (ldrwaarde)/4;
analogWrite(trans, transwaarde);

if (transwaarde <= 5) {
analogWrite(trans, 5);
}

}
serialOutput();
}


void serialOutput() {
Serial.print(uur);
Serial.print(":");
Serial.print(minuut);
Serial.print(":");
Serial.print(seconde);
Serial.print(" ");
Serial.println(transwaarde);
}

Gebruikers-avatar
Berichten: 270
Geregistreerd: 30 Dec 2012, 11:42

Re: Klok vertraagd 1 sec per 2 min op serial monitor

Berichtdoor Rudi » 12 Nov 2013, 22:44

Op deze manier zal je nooit een accurate tijd verkrijgen. Ik vind ook nergens in je sketch het gebruik van de RTC module terug , waarvan sprake in je oorspronkelijke post :?:
Zonder RTC module kan je best met de time library werken voor minimale afwijking.
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001

Berichten: 7
Geregistreerd: 13 Aug 2013, 22:33

Re: Klok vertraagd 1 sec per 2 min op serial monitor

Berichtdoor vissie13 » 13 Nov 2013, 18:01

Bedankt voor je reactie Rudi,

Ik heb deze sketch ook met een RTC-module. Die doet het inderdaad goed! Ik hoopte alleen dat het via deze (goedkopere) weg kon, maar leg nu mijn vertrouwen in de RTC-module.

MVG,

Rick

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

Re: Klok vertraagd 1 sec per 2 min op serial monitor

Berichtdoor nicoverduin » 13 Nov 2013, 19:46

het kan ook wel op de goedkopere manier, maar dan moet je zorgen dat je alles afgewikkeld hebt binnen 1 msec.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

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

Re: Klok vertraagd 1 sec per 2 min op serial monitor

Berichtdoor shooter » 15 Nov 2013, 22:53

in het eerste deel van je loop zeg je als er meer dan 1000 millis voorbij zijn dan is dat 1 seconde , maar je vergeet even om wat er nog meer is dan 1000 (de rest dus) weer bij te tellen, dus als je loop langer dan 1 millis duurt dan raak je millis kwijt. Ik moet wel bekennen dat de processor niet precies op 1 millis pulsen afgeeft, maar voor veel toepassingen toch genoeg.

dus als jouw 1 seconde timer afloopt dan moet je de oude van de nieuwe aftrekken gelijk je doet bij de IF vraag. je houd dan een kleine rest over en die moet je dus van de nieuwe tijd aftrekken.
bijvoorbeeld huidig - oud = 1005 1000 aftrekken je houdt 5 over.
dus nu moet je al stoppen bij 1000-5 ofwel 995 millis.
let op het kan zijn dat je dan ineens -3 over houd dus geen unsigned gebruiken.
paul deelen
shooter@home.nl

Terug naar Arduino IDE

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten