A 7 szegmenses kijelző, egy tokba elhelyezett 8 darab LED (a 7 szegmens + a pont). A felépítéséról, és a fejlesztő panelon történő kezelésről ide kattintva részletesebb leírás található. A probléma kezelésének első lépése, a kijelzősor vezérlésének megértése. Ehhez oldjunk meg egy egyszerű feladatot, mely a kijelzőn megjelenít egy végtelen, ciklois szerű ábrázolást. A ciklois balról jobbra haladva, az aktuális helyértéken végig megy a 0-t formázó szegmenseken az óra járásával ellentétes irányban járja be a kijelzőt. A helyiérték végére érve átlép a bal szélső helyiértékre, és ismét bejárja az útját. A foglalkozáson ezt a folyamatot egyszerűen, a LED-k fel/le kapcsolásával valósítottuk meg. Próbáld megismételni a programot! Itt egy másik úton, ciklusutasítás használatával oldjuk meg a feladatot. Ehhez ismerjük meg a ciklusutasítást!
Ciklusutasítás
A ciklusutasításról ide kattintva lehet olvasnai! A "for" utasítás felhasználásával építjük fel az egyszerüsített ciklois programunkat. A példa-programban látható, az eredetinél lényegesen kevesebb utasítással is megoldható a feladat, ha ciklusutasítást használunk. Ilyenkor viszont körültekintőbben kell dolgoznunk, és tagolnunk kell a programot. Az áttekinthetőség érdekében használjunk soremeléseket, de válasszuk el a ciklusutasításokat is különféle mélységű bekezdéssel, így látható, mi és hova tartozik. Sok kellemetlenségtől kímélhetjük meg magunkat egy esetleges programhiba esetén, az átlátható, magyarázattal kiegészített programkép használatával.
A mintapélda
/*A program a korábbi ciklois nevű, LED-enkénti fel/lekapcsolással elkészített
digitalWrite (j, LOW);//"j" számú helyiérték kikapcsol
}//csupán ennyi a loop-ban a ciklois megvalósítása
}
7 szegmenses kijelző helyiérték kezelése
Mint a foglalkozáson is kiderült, de ide kattinva is olvasható a hétszegmenses kijelzés problémája, nevezetesen túl sok vezetéket kellene használni a 7 szegmenses kijelző közvetlen vezérléséhez. 4 helyiérték esetén, helyiértékenként -a közös ponttal és a pont(DP) használatával- 9, ami 4 helyiérték esetén 36 vezetéket, azaz portot jelent. A Mega ugyan rendelkezik ennyi digitális porttal, de már egy UNO-val sem lehetne megoldani a direkt vezérlést. Létezik hardver megoldás a vezetékszám drasztikus csökkentésére, de a fejlesztő panelra nem került fel ilyen, tehát szoftveresen kell a kijelzést kezelni. Ennek módja, időszeletekbe megjeleníteni a számokat vagy karaktereket, minden időszeletben csupán egy karaktert, ami egymás után gyorsanfelvillantva, szemünk tehetetlenségét kihasználva, a 4 karakter együttes látványa jelenik meg. Ide kattintva megtekinthető a vezérlés folyamatábrája!
A mintapélda
/* A decimális számok szegmensmintái byte formátumú tömbbe kerültek.
Helyiértékenként deklarálásra került a bejövő adatok tárolását végző tömb (segma[]..segmd[]
A szegment [] átmeneti kiíró tömbbe kerül a kiirandó adat