Ha kevés a „lábad”…
Ha alaposan áttanulmányozzuk a micro:bit „lábkiosztását” kiderül, hogy a szabadon programozható kimenetek száma viszonylag kevés. Sok alkalmazásban előfordulhat, hogy további vezérlő-lábakra lenne szükségünk, ilyenkor lehet hasznos az alábbi megoldás!
A bővítésre a 74HC595 típusú un. shift register IC-t fogjuk használni. Az áramkör tulajdonképpen a bemenetre érkező soros adatokat konvertálja át nyolc, párhuzamos kimenetre, és ehhez mindössze három vezérlő bemenetre van szüksége, azaz a micro:bit 0, 1, 2-es lábait használva nyolc kimenetet nyerünk.
Mielőtt a konkrét kapcsolásra, illetve a működtetéséhez szükséges programra rátérnénk, vizsgáljuk meg, hogy hogyan működik az említett shift regiszter! A feladatunk legyen az, hogy az IC kimeneteire kapcsolt LED-ek közül be kell kapcsolnunk az első, a harmadik és a nyolcadik világító diódát!
A Qa….Qh jelölések az IC nyolc kimenetét jelentik. A három felhasznált vezérlő bemenet az SRCLK (serialclock), a SER (serialinput) illetve az RCLK ( registerclock).
A működés könnyebb megértése érdekében használjuk az alábbi ábrát:
Az első lépés a regiszterek (Qa…..QH) törlése. Ezt követően a bemenetre érkező első adat beíródik az első, egy bit tárolására alkalmas regiszterbe, majd a következő adat érkezésekor egyel jobbra „lép” (shift-tel). Amikor mind a nyolc „tárolót”feltöltöttük adatokkal (nullák és egyesek) az RCLK bemenet magas szintre állításával „aktiválhatjuk” a kimenetet, azaz mindaddig, amíg ez a láb logikai alacsony szinten van, a kimeneten nem látunk semmi változást. A bemenet magas szintre állításával egyszerre küldhetjük ki az adatokat a nyolc kimenetre.
A helyes működéshez az IC-t az alábbi táblázat szerint kell bekötnünk:
A fizikai megvalósításhoz szükséges bekötési vázlat:
A megvalósított kapcsolás:
Végül jöjjön a kapcsolásunk programozása, elsőnek egy egyszerű „bit-minta” küldő program, aminek segítségével egyesével tudjuk ki illetve bekapcsolni a LED-eket!
from microbit import * pin0.write_digital(0) pin1.write_digital(0) pin2.write_digital(0) bits = [1,1,1,1,1,1,1,1] for i in range(7,-1,-1): print(bits[i]) pin0.write_digital(bits[i]) pin1.write_digital(1) pin1.write_digital(0) pin2.write_digital(1) pin2.write_digital(0)
A kimeten a ’bits’ listában megadott értékeknek megfelelően világítanak a diódák, ahol 1 van a listában, ott be, ahol 0, ott ki lesz kapcsolva a LED. a Fenti példa az összes ledet bekapcsolja, míg például a
bits = [1,0,1,0,1,0,1,0]
lista csak minden második LED-et kapcsolja be.
Második példánk egy kis „futófény” kapcsolás, a program egyesével bekapcsolja a LED-eket, majd mikor az egész sor világít újra indítja a ciklust:
from microbit import * pin0.write_digital(0) pin1.write_digital(0) pin2.write_digital(0) while True: for value in [1,3,7,15,31,63,127,255]: bits = [value >> i & 1 for i in range(7,-1,-1)] for i in range(7,-1,-1): print(bits[i]) pin0.write_digital(bits[i]) pin1.write_digital(1) pin1.write_digital(0) pin2.write_digital(1) pin2.write_digital(0) sleep(200)
A forráskódok az alábbi hivatkozásokról tölthetőek le:
A BBC micro:bit termékek megvásárolhatók a MálnaPC Webshopjában!