7. kísérlet
Figyeljen oda
Megjegyezzük, hogy ebben a kísérletben az ellenállások a katódok és a föld között helyezkednek el, szemben a pulzár kísérletével.
A LED-eket a digitális portokhoz csatlakoztatjuk, a 2. portról kiindulva. A 0 és 1 portokat használhatjuk, de ezek a soros port adatcsatornái, és minden egyes villogáshoz a lemeznek le kell választania a csatlakoztatott eszközöket.
A kód magyarázata
A kifejezés kifejezéssel egy hurkot rendezünk egy számlálóval. Ebben az esetben a portokat a kimenethez kell konfigurálni. Ehhez szüksége van:
Inicializálja a változó számlálót, hozzárendelve a kezdeti értéket. A mi esetünkben: int pin = FIRST_LED_PIN
Adja meg azt a feltételt, amely előtt a ciklus ismétlődik. A mi esetünkben: pin <= LAST_LED_PIN
Határozza meg azt a szabályt, amellyel a számláló megváltozik. A mi esetünkben ++ pin (lásd az alábbiakban a ++ operátorról).
Például készíthetsz egy ciklusra (int i = 10; i> 0; i = i - 1). Ebben az esetben:
A változó i értéke 10
Ez az érték megfelel az i> 0 feltételnek
Ezért a hurokba helyezett kódblokk első alkalommal kerül végrehajtásra
Az i érték értéke egy adott szabály szerint csökken, és értéke 9
A kódblokk második alkalommal kerül végrehajtásra.
Minden ismétlődő és ismétlődő érték 0-ig egyenlő
Amikor i lesz 0, akkor a i> 0 feltétel sikertelen, és a ciklus véget ér
A vezérlő a for hurkot követő kódra lép
Helyezze el a kódot, amelyet huroknak akarsz húzni egy pár fogantyú között <>. ha több utasítás is van benne.
Változó-számláló kijelentette a nyilatkozatban. használható egy hurokban. Például ebben a kísérletben a pólus egymás után 2-től 11-ig terjed, és a pinMode-ba továbbítódik. lehetővé teszi, hogy 10 sorozatot konfiguráljon egy sorban, melyet hurokba helyez.
A változók számlálói csak a hurokban láthatók. Ie Ha a hurok előtt vagy után szól a pálcára, akkor a fordító hibát ad vissza a be nem jelentett változóról.
Az i = i - 1 konstrukció a fenti magyarázatban nem egyenlet! A hozzárendelési operátor = értéket az i változónál az i aktuális értékével megegyező értékkel adjuk meg. 1-gyel csökkentve.
Az "++" kifejezés az úgynevezett. növekményes üzemeltető. a változó tüskéhez alkalmazva. Ez az utasítás ugyanazt az eredményt adja meg, mint a pin = pin + 1
Az előjel nélküli int adattípus az előjel nélküli egész számok tárolására szolgál. csak nem negatív. Az extra bit miatt, amelyet jelenleg nem használnak a karakter tárolására, legfeljebb 65 535 értéket tudunk tárolni egy ilyen típusú változóban.
Az ezredmásodpercben a mikrovezérlő bekapcsolása vagy újraindítása óta eltelt ezredmásodpercek száma jelenik meg. Itt használjuk a LED-ek közötti váltás időpontját.
A (ms / 120)% 10 kifejezés segítségével meghatározzuk, hogy a 10 LED közül melyik legyen világítani. A parafrázis meghatározásához meg kell határoznunk, melyik 120 ms hosszú szegmens fut, és mi a száma az aktuális tízben. A szegmens szekvenciaszámát hozzáadjuk az aktuálisan beállított port számához.
Az a tény, hogy a LED-et a digitalWrite (pin, LOW) segítségével csak 10 ms-ot követően bekapcsolás után oltjuk ki, nem észlelhető a szem számára, mert nagyon hamar újra kiszámítjuk, hogy mely LED-ek kapcsolódjanak be, és bekapcsolják - csak törölték vagy a következőt.
Kérdések a teszteléshez
Miért ebben a kísérletben a LED skálát csatlakoztatjuk anélkül, hogy tranzisztort használnánk?
Ha a LED-eket csak az 5, 6, 7, 8, 9 portokon vettük fel, akkor mit kell változtatni a programban?
Milyen más utasításokkal lehet végrehajtani az ++ billentyűvel megegyező műveletet?
Mi a különbség az int és az unsigned int között?
Mi tér vissza az millis () függvény?
Hogyan történik ebben a kísérletben azt a portszámot, amelyen a LED be van kapcsolva?
A független döntéshozatali feladatok
Módosítsa a kódot úgy, hogy a LED minden másodpercben váltson.
Ne kapcsolja ki a kikötőket, győződjön meg róla, hogy a fény csak a középső négy fokozatban működik.
Írja át a programot úgy, hogy az int pin = FIRST_LED_PIN + (ms / 120)% 10 helyett a fény mozgatását a for loop
A vezetékek cseréje nélkül változtassa meg a programot úgy, hogy a fény az ellenkező irányban működjön.
Eltérő rendelkezés hiányában a wiki tartalmát a következő licensz alatt adjuk meg: CC Attribution-Noncommercial-Share Alike 3.0 Unported