x20fan Creative Commons License 2015.01.27 0 0 725

Persze egy dolgot csinál egyszerre, úgy értettem, hogy sorban vannak a feladatok, és egymás után. A delay() az ebbe a koncepcióba nem ilik bele, az tipikusan a kezdő kis programocskákhoz jó. Viszont az időzítés az nagyon gyakori igény szinte bármilyen felhasználásnál, nade akkor majd a millis()-sel meg az rtc-vel ügyeskedek.

 

A belső eeprom írást akkor felejteni kell, meg ha lesz rtc, akkor már úgyis ott a ram rajta.

 

A delay nélküli példát néztem, és láttam hogy nem törődik a túlcsordulással:

if(currentMillis - previousMillis > interval)

ha a millis átcsordul, és kezdi 0-ról, akkor ez az if 50 napig nem lesz igaz, vagyis egy most bekapcsolt Arduino 50 napig szépen fogja villogtatni a ledet, majd 50 napig nem villog. Szóval ezt le kell kezelni, ha túlcsordult, akkor külön módon kell eljárni, és az értéket átírni a previousMillis-be.

 

Ha már említetted a sebességet, kb. mire lehet számítani? Mondjuk egy ledvillogtató delay nélkül mekkora frekivel villogna?

void loop() {
  digitalWrite(led, HIGH);
  digitalWrite(led, LOW);
}

Előzmény: Prof (724)