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 micro:bit lábkiosztása

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 74HC595 lábkiosztása

A működés könnyebb megértése érdekében használjuk az alábbi ábrát:

a léptetőregiszter működése

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 micro:bit és a léptetőregiszter összekötése

A fizikai megvalósításhoz szükséges bekötési vázlat:

elrendezési vázlat breadboardon…

A megvalósított kapcsolás:

…és a valóságban is megépítve

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.

lista, működés közben

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 cikkben használt micro:bit megvásárolható a MálnaPC Webshopjában!