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

Oldaleszközök

Kapcsolódó cikkek