Klok vertraagd 1 sec per 2 min op serial monitor
8 berichten
• Pagina 1 van 1
Klok vertraagd 1 sec per 2 min op serial monitor
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
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Klok vertraagd 1 sec per 2 min op serial monitor
En nu in gewoon Nederlands en volledige zinnen?
Re: Klok vertraagd 1 sec per 2 min op serial monitor
Hardwarematig kan er niet zoveel fout gaan, tenzij het kristal een afwijking heeft.
Heb je al met verscheidene sketches getest?
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
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001
Re: Klok vertraagd 1 sec per 2 min op serial monitor
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);
}
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);
}
Re: Klok vertraagd 1 sec per 2 min op serial monitor
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.
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
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001
Re: Klok vertraagd 1 sec per 2 min op serial monitor
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
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
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Klok vertraagd 1 sec per 2 min op serial monitor
het kan ook wel op de goedkopere manier, maar dan moet je zorgen dat je alles afgewikkeld hebt binnen 1 msec.
Re: Klok vertraagd 1 sec per 2 min op serial monitor
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.
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
shooter@home.nl
8 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten