kolik milisekund uběhlo

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
piipecek
Příspěvky: 4
Registrován: 12 úno 2019, 20:29
Reputation: 0

kolik milisekund uběhlo

Příspěvek od piipecek » 12 úno 2019, 20:36

Ahoj, snažím se dostat pod kůži funkci millis(). Zatím zkouším jen se serial monitorem a na něm vidím divné výsledky:

Kód: Vybrat vše

void setup() {
  Serial.begin(19200);
  Serial.println("started millis school");
    
}

void loop() {
long now = millis();
if (now == 2){
  Serial.println("ted byla dvojka");
}

}
cekal bych, ze na monitoru uvidim

Kód: Vybrat vše

started millis school
ted byla dvojka

ale to se nedeje, misto toho vidim:

Kód: Vybrat vše

!rkstarted millis school
ted byla dvojka
ted byla dvojka
ted byla dvojka
to vypada jakoby se ten if statement aktivoval 3x. je tomu tak?

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: kolik milisekund uběhlo

Příspěvek od jankop » 12 úno 2019, 21:21

Nejspíš ano, uvědom si, že smyčka loop() se v závislosti na trvání příkazů v ní obsažených může vykonat třeba 100 000x za vteřinu.

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: kolik milisekund uběhlo

Příspěvek od petan » 14 úno 2019, 08:01

Stejne tak se podminka nemusi vykonat vubec, pokud program temito prikazy neprojde presne v case 2 ms.

Zkus napsat

Kód: Vybrat vše

Serial.println(now);
Uvidis kolikrat se pousti smycka za 1 ms.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 18 hostů