Wat is een goed alternatief voor urenlang "delay"?
11 berichten
• Pagina 1 van 2 • 1, 2
Wat is een goed alternatief voor urenlang "delay"?
Ik gebruik in onderstaande sketch 2x "delay" Het blijkt dat door een of andere oorzaak de "timing" toch uit sync raakt. Daarom de vraag: Wat is een goed alternatief voor het gebruik van "delay"?
/*
Avondtimer
Een avondtimer, schakelt een relais in bij schemer (externe schakeling)
van schemer tot bedtijd. Verlengt tussen 21 jun en 21 dec de avondtijd
elke dag met 2 minuten en na 21 dec verkort elke dag met 2 minuten.
De waarde van de variabele "d" kan worden aangepast aan de begindatum.
*/
int pinin = 5; // Krijgt 5 volt van schemerschakeling bij invallende duisternis
int pinuit = 6; // stuurt een vermogenstransistor met relais. Hoog is Aan
int vala = 0;
unsigned long d = 25200000; // donkere tijd in mSec; schemering tot bedtijd.
long x = 120000; // extra + of - tijd, 2 minuten (tot 21-12 +, daarna -)
void setup() {
pinMode(pinin, INPUT);
pinMode(pinuit, OUTPUT);
}
void loop() {
vala = digitalRead(pinin); // 0 volt bij licht en 5 volt in donkere tijd
if (vala == LOW)
digitalWrite(pinuit, LOW);
else {
digitalWrite(pinuit, HIGH); // donker = 5 volt stuurt relais Aan
delay(d); // schemer tot bedtijd
d = d + x; // dagelijkse verlenging of verkorting avondtijd
if (d >= 31560000) // 29 okt - 21 dec = 53(x) + 25.200.000
x = x * -1; // x wordt neg na 21 dec
digitalWrite(pinuit, LOW); // relais Uit bij bedtijd
if (vala == HIGH) // Voorkomt "delay" overdag, zodat pin 5 weer op tijd wordt geactiveerd
delay(50400000); // Wachten tot ca. 14:00 uur volgende dag. Dan pin 5 = LOW
}
}
Advertisement
Re: Wat is een goed alternatief voor urenlang "delay"?
Vraag: Hoe doe ik iets met timing ?
Anwoord: millis().
https://github.com/Koepel/Fun_with_millis/blob/master/millis_clock.ino
Anwoord: millis().
https://github.com/Koepel/Fun_with_millis/blob/master/millis_clock.ino
Re: Wat is een goed alternatief voor urenlang "delay"?
zowel delay als millis() is niet zo precies als je zou willen,dat heeft te maken met de deelwaarde in de processor en het gebruikte kristal.
Een veel beter oplossing is met een RealTimeClock IC.
een beetje goede doet maar 1 seconde per week mis.en zelfs als je de spanning eraf haalt en na een week weer aanzet blijft de tijd goed. alleen gebeurt er dan niks.
je kunt met die tijd dus een rekening doen die dan je dag verkort of verlengt.
ga uit van een correcte tijd bijv GMT en ga dan een paar regels rekenen om je tijd te krijgen.
Een veel beter oplossing is met een RealTimeClock IC.
een beetje goede doet maar 1 seconde per week mis.en zelfs als je de spanning eraf haalt en na een week weer aanzet blijft de tijd goed. alleen gebeurt er dan niks.
je kunt met die tijd dus een rekening doen die dan je dag verkort of verlengt.
ga uit van een correcte tijd bijv GMT en ga dan een paar regels rekenen om je tijd te krijgen.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Wat is een goed alternatief voor urenlang "delay"?
Bedankt voor de suggesties.
Andere vraag:
Is het ook mogelijk om b.v. een tijd uit b.v. een bron als internettijd, of een atoomklok te importeren?
Andere vraag:
Is het ook mogelijk om b.v. een tijd uit b.v. een bron als internettijd, of een atoomklok te importeren?
Re: Wat is een goed alternatief voor urenlang "delay"?
Beide is mogelijk als je een board hebt dat via wifi verbinding met internet heeft.
Daar zijn een heleboel varianten van.
Zoek eens op ESP32 of ESP8266.
Met een verbinding met internet is het ook mogelijk de tijd waarop de zon onder en/of opkomt ook via internet op te vragen.
m.v.g, Nico
Daar zijn een heleboel varianten van.
Zoek eens op ESP32 of ESP8266.
Met een verbinding met internet is het ook mogelijk de tijd waarop de zon onder en/of opkomt ook via internet op te vragen.
m.v.g, Nico
Re: Wat is een goed alternatief voor urenlang "delay"?
Samengevat:
Even een korte tijd wachten, bijvoorbeeld 10ms: delay().
Iets met een vaste interval doen, bijvoorbeeld iedere seconde: millis().
Een RTC met batterij geeft de juiste tijd. De DS3231 is de beste keus.
Een DCF77 ontvanger is ook een (onhandige) mogelijkheid, die ontvangt een radio-signaal uit Duitsland.
Een Ethernet Shield gebruiken en dan de tijd op internet opvragen is iets van een paar jaar geleden.
De ESP32 omgeving komt met een voorbeeld, zo eenvoudig kan het zijn: https://github.com/espressif/arduino-esp32/blob/master/libraries/ESP32/examples/Time/SimpleTime/SimpleTime.ino.
En dan heb je nog mijn persoonlijke jarenlange pogingen om via een LDR de tijd te synchroniseren op het dag- en nachtritme. De testen tot nu toe gaan nog niet goed.
Even een korte tijd wachten, bijvoorbeeld 10ms: delay().
Iets met een vaste interval doen, bijvoorbeeld iedere seconde: millis().
Een RTC met batterij geeft de juiste tijd. De DS3231 is de beste keus.
Een DCF77 ontvanger is ook een (onhandige) mogelijkheid, die ontvangt een radio-signaal uit Duitsland.
Een Ethernet Shield gebruiken en dan de tijd op internet opvragen is iets van een paar jaar geleden.
De ESP32 omgeving komt met een voorbeeld, zo eenvoudig kan het zijn: https://github.com/espressif/arduino-esp32/blob/master/libraries/ESP32/examples/Time/SimpleTime/SimpleTime.ino.
En dan heb je nog mijn persoonlijke jarenlange pogingen om via een LDR de tijd te synchroniseren op het dag- en nachtritme. De testen tot nu toe gaan nog niet goed.
Re: Wat is een goed alternatief voor urenlang "delay"?
Als je het wil proberen via zon opkomst en zon ondergang.
KNMI geeft via onderstaande link de tijden weer.
http://weerlive.nl/delen.php
http://weerlive.nl/api/json-data-10min.php?key=demo&locatie=Amsterdam
IK heb daarnaast vastgesteld dat (mijn) esp8266 board ook na 5 dagen altijd nog geen meetbare afwijking heeft t.o.v. de werkelijke tijd..
Ik doe geen tijd update maar controleer wel elk uur of er al een verschil is met NPT tijd.
Na 5 dagen altijd nog geen verschil groter dan + of - 1 seconde.
KNMI geeft via onderstaande link de tijden weer.
http://weerlive.nl/delen.php
http://weerlive.nl/api/json-data-10min.php?key=demo&locatie=Amsterdam
IK heb daarnaast vastgesteld dat (mijn) esp8266 board ook na 5 dagen altijd nog geen meetbare afwijking heeft t.o.v. de werkelijke tijd..
Ik doe geen tijd update maar controleer wel elk uur of er al een verschil is met NPT tijd.
Na 5 dagen altijd nog geen verschil groter dan + of - 1 seconde.
Re: Wat is een goed alternatief voor urenlang "delay"?
Mijn bedoeling met de LDR is om op ieder willekeurig eenvoudig Arduino board met een LDR de tijd te kunnen bepalen. Na het aanzetten zou de Arduino na een paar dagen de tijd kunnen weten. Bijvoorbeeld een getal van 0 t/m 23 voor het uur. Soms is een lamp 's avonds feller dan het daglicht overdag (in de winter). Maar het daglicht duurt langer, dus dat zou gedetecteerd kunnen worden. Ik wil niet dat de tijd gaat verschuiven doordat 's avonds een lamp aan is. Als de code de tijd opnieuw gaat synchroniseren, dan wil ik dat toch ieder getal van het uur voorbij komt, en dat er niets wordt overgeslagen. Soms draait een Arduino op batterijen op de interne clock. Die is niet nauwkeurig dus dan is niet meer precies bekend wanneer het 24 uur later is. Om dat te programmeren is met open ogen een moeras inlopen.
Re: Wat is een goed alternatief voor urenlang "delay"?
Doe voorzichtig(in het moeras) Opgave lijkt mij vrijwel onmogelijk.
Om een goed patroon te ontdekken heb je eigenlijk veel gegevens nodig.
Om veel gegevens te bewaren heb je weer veel computerruimte nodig.
Bovendien vergt het analyseren veel rekenkracht.
Elke willekeurige Arduino en elke willekeurige plaats.
Ik vrees dat je diep in het moeras beland.
Om een goed patroon te ontdekken heb je eigenlijk veel gegevens nodig.
Om veel gegevens te bewaren heb je weer veel computerruimte nodig.
Bovendien vergt het analyseren veel rekenkracht.
Elke willekeurige Arduino en elke willekeurige plaats.
Ik vrees dat je diep in het moeras beland.
Re: Wat is een goed alternatief voor urenlang "delay"?
ik denk dat je om binnen een uur te kunnen werken je een database van een jaar of 10 nodig hebt, dat kan wel want je kunt de zonneschijn wel in een database vinden op internet.
maar daar ging de vraagstelling niet over.
maar daar ging de vraagstelling niet over.
paul deelen
shooter@home.nl
shooter@home.nl
11 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: arahokol en 9 gasten