Arduino & IoT Academy · Oppitunti

Poista värinä millis()-funktiolla

Ohita häiriöt lyhyen vakausjakson avulla.

Oppitunti 2/413 vaihetta

Poista värinä millis()-funktiolla on ilmainen Arduino & IoT Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Arduino & IoT Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Arduino & IoT Academy-kurssilla on yhteensä 4 oppituntia.

Miksi ei vain delay()?

Voisit pysäyttää ohjelman delay()-kutsulla painalluksen jälkeen, mutta se jäädyttää koko kortin toiminnan. Siistien painiketulojen käsittelyyn parempi työkalu on millis().

millis() on sekuntikello

millis() palauttaa ajan millisekunteina siitä, kun kortti käynnistyi. Vertaamalla kahta lukemaa voit mitata kulunutta aikaa pysäyttämättä ohjelmaa.

unsigned long now = millis();

Poistonestomenetelmä

Ajatus on yksinkertainen: kun nastan tila muuttuu, käynnistä ajastin. Luota uuteen tilaan vasta, jos se pysyy vakaana lyhyen aikaikkunan ajan.

Valitse poistonestoaika

Noin 50 millisekunnin viive on perinteinen valinta. Se kestää riittävän kauan värähtelyn yli, mutta on silti aivan liian nopea havaittavaksi.

const unsigned long DEBOUNCE = 50;

Muista viimeisin muutos

Tarvitset muuttujan tallentamaan, milloin nastan tila vaihtui viimeksi. Vertaa sitä nykyiseen aikaan jokaisella silmukan kierroksella.

unsigned long lastChange = 0;

Seuraa kahta tilaa

Säilytä raaka lukema ja vahvistettu vakaa tila erikseen. Raaka lukema on häiriöinen, mutta vakaa tila on se, johon logiikkasi luottaa.

int lastRaw = HIGH;
int stable = HIGH;

Havaitse muutos

Lue nasta jokaisella kierroksella. Jos lukema eroaa viimeisimmästä raaka-arvosta, signaali juuri muuttui, joten nollaa ajastin.

int raw = digitalRead(BTN);
if (raw != lastRaw)
  lastChange = millis();

Odota vakaantumista

Jos viimeisimmästä muutoksesta on kulunut riittävästi aikaa, lukema on vakaantunut. Nyt sen voi turvallisesti hyväksyä oikeaksi tilaksi.

if (millis() - lastChange > DEBOUNCE) {
  stable = raw;
}

Toimi reunan perusteella

Jos haluat suorittaa toiminnon kerran painallusta kohti, tarkkaile vakaan tilan muuttumista tilaan LOW. Tämä yksittäinen reuna on siistitty ja poistovärähdelty painallus.

if (stable == LOW && lastStable == HIGH)
  Serial.println("clean press");

Päivitä seuraavaa kierrosta varten

Tallenna silmukan lopussa nykyiset lukemat last-muuttujiisi. Näin vertailu käyttää tuoreita arvoja jokaisella kierroksella.

lastRaw = raw;
lastStable = stable;

Lukkiutumattomuus kannattaa

Koska millis() ei koskaan pysäytä korttia, anturit ja lähdöt jatkavat toimintaansa. Poistat värähtelyä samalla, kun kaikki muu jatkaa toimintaansa. 🚀

Pikatarkistus

Tarkistetaan, miten millis()-poistonesto päättelee painalluksen olevan todellinen.

Kertaus: siistit painallukset

Käytit millis()-funktiota värähtelyn ohittamiseen ilman kortin jäädyttämistä ja hyväksyit painalluksen vasta sen vakaannuttua. Vankkaa, ammattimaista tulonkäsittelyä! ✅

Aloita maksutta

Opi C++ tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Poista värinä millis()-funktiolla” ilmainen?

Kyllä – oppitunnin ”Poista värinä millis()-funktiolla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Arduino & IoT Academy-kurssin, päivitä CoddyKit PROhon. Arduino & IoT Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Poista värinä millis()-funktiolla”?

Ohita häiriöt lyhyen vakausjakson avulla. Harjoittelet Arduino & IoT Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Arduino & IoT Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Arduino & IoT Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Poista värinä millis()-funktiolla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Arduino & IoT Academy-oppitunnilla?

Kyllä. Jokainen Arduino & IoT Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Miksi painikkeet ”värisevät”
  2. Poista värinä millis()-funktiolla
  3. Tallenna arvo EEPROM-muistiin
  4. Säilytä laskuri nollauksen jälkeen
← Takaisin: Arduino & IoT Academy