code loopt na 3 keer vast.

Arduino specifieke Software
Berichten: 68
Geregistreerd: 28 Aug 2012, 15:14

Re: code loopt na 3 keer vast.

Berichtdoor Nald » 03 Okt 2012, 15:12

Hij blijft het probleem geven.

Het lijkt net of bij de derde keer er aan de voorwaarde voldaan wordt, maar de lastmillis niet veranderd word in millis. En zo continu de counter gereset word naar 1.

Want na de 3e keer veanderdt de pushcounter niet verder dan 2, hoe vaak je ook drukt.

Advertisement

Berichten: 68
Geregistreerd: 28 Aug 2012, 15:14

Re: code loopt na 3 keer vast.

Berichtdoor Nald » 03 Okt 2012, 15:27

ik heb nog eens wat gespeeld met de seriële monitor. (tevens resette hij na de tijd de counter naar 5)

en toen kreeg ik onderstaand resultaat. Hoe kan het zijn dat mijn lastMillis naar negatief gaat?

on
number of button pushes: 2
Millis: 5
MillisNu 0
lastMillis: 0
off
on
number of button pushes: 3
Millis: 3133
MillisNu 3127
lastMillis: 0
off
on
number of button pushes: 4
Millis: 6394
MillisNu 6389
lastMillis: 0
off
on
number of button pushes: 2
Millis: 10355
MillisNu 10350
lastMillis: 6389
off
on
number of button pushes: 2
Millis: 18963
MillisNu 18958
lastMillis: 16390
off
on
number of button pushes: 3
Millis: 24306
MillisNu 24301
lastMillis: 16390
off
on
number of button pushes: 5
Millis: 41666
MillisNu 41661
lastMillis: -23875
off


Als ik nu blijf doorklikken voldoet immers altijd de reset functie. (millis - lastmillis is inderdaad groter dan 15sec)

Gebruikers-avatar
Berichten: 188
Geregistreerd: 23 Dec 2011, 00:12

Re: code loopt na 3 keer vast.

Berichtdoor Duality » 03 Okt 2012, 16:12

ik denk dat je van: int lastMillis = 0;
unsigned long lastMillis = 0;
met maken, je stopt namelijk een groot getal (millis()) in een kleine space een in een int,
een long is 4 bytes groot dus space voor 2^32 maar in een int is maar plaats voor 2^16 dat is dus minder,
ook als je gewoon een variable declared als int of long, zijn die signed, betekend dat die dus negatief kunnen gaan :)
je kunt dus grotere positive getallen krijgen door ze unsigned te maken.
Code: Alles selecteren
unsigned long previousMillis = 0;
int interval = 1000;

unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval){
   previousMillis = currentMillis;
   doStuff();
}

hoop dat het je helpt :)

Berichten: 68
Geregistreerd: 28 Aug 2012, 15:14

Re: code loopt na 3 keer vast.

Berichtdoor Nald » 03 Okt 2012, 16:35

probleem is daarmee inderdaad opgelost. Dank!

Vorige

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: oxiriewatizi en 33 gasten