Wat gebeurt er als 'delay' negatief is?

Ik maakte volgende code:

if ( TheBe == HIGH && KraBe == HIGH)
{ digitalWrite(REL_Ketel,HIGH) ;
Timer = millis();}

if ( TheBo == LOW && TheBe == LOW)
{digitalWrite(REL_Ketel,LOW);
if ( millis() - Timer < 600000);
delay ( millis() - Timer );

Het is even de vraag hoe je Timer hebt gedefinieerd. Timer moet als unsigned long gedefinieerd worden. Door het op die manier te doen gaat het altijd goed omdat je automatisch een 'wrap around' krijgt. Zie tevens het uitstekende verhaal van Nick Gammon : http://www.gammon.com.au/millis

Dankje, Nico. Ik heb het verhaal van Nick Gammon gelezen. Kan het zijn dat je met zijn truucje maar tot 65536 kunt tellen? (4 bytes). Ik heb tot 10 min wachttijd nodig.

Ik weet niet over welk trucje van Nick Gammon je het hebt, maar 65535 milliseconden is dus bij lange na geen 10 minuten. Het is niet zo heel moeilijk om op de "recommended way" te werken. Maar dat leer je door het eens te doen, en dan maakt het niet erg veel uit of je daar dan 10 minuten voor neemt, of slechts 1 minuut of een halve. Het gaat er dan om dat je jezelf er in oefent door gewoon een beetje ermee te spelen. Wanneer je dat dan onder de knie hebt, kun je het ook met andere tijden gebruiken. Nick vermeldt ook dat je met die manier dus tot 49,71 dagen kunt tellen.

Je vergist je met die 4 bytes. 8 bits is 1 byte en geeft 256 mogelijkheden. 2 bytes zijn 256 * 256 mogelijkheden, en daarmee kom je op 65535, zo weet ik al 30 jaar want het is een van de magische getallen die aan de Commodore64 verbonden waren/zijn. 3 bytes wordt 256 * 256 * 256, en word al een stuk indrukwekkender met 16777216. En de vierde byte wordt dus 256 * 256 * 256 * 256, en is dus 4294967296; het getal dat je ook op Nick's pagina tegenkomt.

1,2,3,4,7,10 hihi ik kan al tot tien tellen een signed long is dus de helft maar ik ga geen 24 dagen wachten hoor. ik zag 60000 staan en dat is een INT en geen long dus die moet je declareren in een variabele const unsigned long =60000; ik zet nooit getallen in mijn programmas die zet ik allemaal boven de setup of met define maar meestal met een naam. je zult trouwens merken dat het niet precies is, dus dan hoef je maar op een plaats je getal te veranderen. unsigned long minuut =59953 bijvoorbeeld is dus 1 minuut en minuut/60 is 1 seconde.

MAS3. Ik ben ook een Commodore 64 gebruiker en zelfs nog de PET. Ik heb een fout gemaakt. 1 byte = 8 bits. Ik telde 4 bits (hexadecimaal) En ik maak een testprogramma, zoals gezegd. Bedankt voor jullie replies.

De PET is mij echt te oud, met zijn toetsenbord uit knopjes met opgeplakt metallic labeltje ;). De Commodore64 was in 1984 mijn introductie met computers en die heeft nog steeds een ereplaatsje hier in huis, ondanks zijn totaal rotte toetsenbord.

Ik vermoedde al dat je die vergissing maakte en FF FF als 4 bytes zag. Maar daarvan is 1 F dus een nibble en bestaat een byte uit twee nibbles (high en low nibble). Ik verbaas me dat ik dat nog weet, en moest het zelf ook ff google-checken.