Arduino kezdőknek 12 - 8-bites demultiplexeres LED-sor, nyomógombokkal
Szilágyi Sándor Zoltán Villamosmérnök, mérnök-informatikus
A cikket megírtam: 2023. 05. 10
A Rádiótechnikában megjelent: 2023. június
Ez a blog oldal tehát az eredeti, saját tulajdonomban levő dokumentum, és nem a nyomtatásban megjelent másolata. A cikket én írtam, én küldtem be, és csak azután jelent meg nyomtatott formában is. A nyomtatásban megjelent cikkeimre szerződést nem kötöttek velem, és anyagi juttatást se kaptam soha érte. Ezt a cikket már nagyobb kihagyás után írtam meg, mert csalódtam a lapban, ugyanis 11 db cikket küldtem be, de nem kaptam semmit a korábbi főszerkesztő által ígért 2500-7500 Ft/oldal-ból. További csalódásom volt a papír és a nyomtatás minősége, illetve az egyre több nyomdahiba: a képleteknél se az alsó- se a felsőindex nem jelent meg nyomtatásban. Mivel a magazin már nem kapható, ezért a megjelent 13 cikkemet itt folytatnám, mivel Magyarországon jelenleg nincs hobbielektronikával foglalkozó magazin.
12.1 Az előző szám nyomdaiháinak javítása
Ezt a kb fél oldalas fejezetet csak a Rádiótechnikában tettem közzé a bevezetőben említettek miatt. Mivel itt erre már nincs szükség ezért kihagyom, az 53. ábrával együtt, melyen képként küldtem be a nyontatásban meg nem jelentethető alsó- és felső indexű képletetek.
12.2 8-bites demultiplexeres LED-sor, nyomógombokkal
A multivibrátorokról már a korábbi cikkeimben írtam. Ezek tehát, olyan pozitívan visszacsatolt alapvető digitális áramkörök, melyek a kimenetükön négyszögjelet állítanak elő. Három fő típusuk van, mégpedig az astabil-, a bistabil-, és a monostabil multivibrátor. Egyes szakirodalmak ide szokták sorolni még a Schmitt-triggert is, amely olyan bistabil billenőkör, aminek a két állapotú kimeneti jele a bemenetére kapcsolt analóg jel értékeitől függ.
- Astabil multivibrátor: nincs stabil állapota, a végtelenségig billen ide-oda, egyik állapotból a másikba, majd fordítva...
- Monostabil multivibrátor: egy stabil állapota van, melyből egy külső vezérlőjel segítségével egy másik, ideiglenes állapotba kerül, majd (vagy azonnal, vagy egy adott idő után) visszabillen az eredeti stabil állapotába.
- Bistabil multivibrátor, két stabil állapota van, melyet egy, vagy több bemeneti jel is kiválthat. Mindaddig megtartja az aktuális stabil állapotát, ameddig ezt egy adott jellel meg nem változtatjuk, de ekkor egy másik, szintén stabil állapotba kerül. Megszakítás kezeléssel programozhatjuk.
Ezeket a korábbi cikkeimben bemutattam, így ennek a folytatása következik.
Az áramkör az 54. ábrán látható. Az előző cikk 50-edik ábrájától annyiban különbözik, hogy bemeneti perifériát is kapott. Így elvesztette az astabil működési jellegét, és egyfajta monostabil jelleget kapott. A nyomógombok bekötése megegyezik a 3-adik cikkemben közölt 8-adik programban leírtakkal. Kapnak egy-egy külső védőellenállást is. A gombokat nem kötjük +5V-ra, hanem a programban egy belső programozható felhúzó ellenállás segítségével inputként definiáljuk, majd magas értéket adunk rá.
Több évtizedes elektronikai múltamban sehol se találkoztam még 2-nél több bites multivibrátorokkal, bármilyen szakirodalom került a kezembe (magazin, könyv, középiskolai/főiskolai/egyetemi tankönyv), kivétel nélkül mindegyikben csak a 2-bites alap multivibrátor kapcsolásokat ismertették, majd ugrottak a következő témakörre. Ezért is nehéz meghatározni a jelenlegi cikkben levő áramkört. Ha mégis megpróbálnánk, akkor a 8-bites monostabil multivibrátor lenne a legmegfelelőbb elnevezés, mivel valóban van 1 db stabil állapota, és az 8-adik led, mely az IC 7-es lábára van kötve egy ellenálláson keresztül; illetve 7 db olyan állapota, amelyek astabil állapotúak, azaz csak addig kapnak logikai magas szintet, ameddig a hozzájuk tartozó nyomógomb lenyomva marad.
Ebben a kapcsolásban egy demultiplexert használunk, így kötelező mindig egy adott kimenetének aktív állapotban lennie. Ha a nyolc kimenetét 8 db nyomógombbal vezérelnénk, az egy hibaállapotot eredményezne, mivel ha egyik kapcsoló se lenne megnyomva, akkor elvileg egyik kimenete se lenne aktív – és ez egy nem megvalósítható állapot. Így a 8 db kimenethez 7 db bemenet kell, hogy tartozzon. Az IC egy előre kiválasztott kimenete adja az egyetlen stabil állapotot, azaz ha egyik nyomógombot se nyomjuk meg, akkor ez a kimenet lesz aktív egészen addig, amíg egy bemenő jellel azt meg nem változtatjuk.
54. ábra
A program az 55. ábrán látható. A demultiplexer címkiválasztó és engedélyező/tiltó bemenetei mellett a nyomógombokat, illetve az azok állapotát figyelő változókat is deklarálni és definiálni kell. Minden változó byte típusú. A setup részben a gombokat inputként, míg a DMX bemeneti jeleit outputként adjuk meg, illetve itt kapcsoljuk be a belső programozható felhúzó ellenállásokat, ahogy azt az „Arduino kezdőknek 3.” cikkemben részletesen leírtam.
55. ábra
A ciklus az állapotfigyelők bekapcsolásával kezdődik. Mivel 7 db nyomógomb van, így 7 db állapotfigyelő változó lesz, melyeket érdemes a saját gombjának a nevével elnevezni. A demultiplexer engedélyező/tiltó bemeneteinek az értékadása megegyezik a 31-edik programéval. Mivel a DMX egy kimenetének mindig aktívnak kell lennie, így kiválasztottam az IC Y7-es lábát (LED8). Ez tehát addig aktív, amíg egy nyomógomb sincs benyomva. Ha ezt elhagyjuk, illetve ha ide is nyomógombot teszünk, hibás lesz az áramkör működése. Mind a nyolc ledet három címkiválasztó bemenet segítségével programozzuk. Míg az alapállapotot jelző 8-adik ledet egyszerűen kell beírni a programba, addig az Y0-Y6-ra kötött 7 db ledet független feltételek vizsgálatával. Ha valamelyik nyomógombot megnyomjuk, akkor a hozzá tartozó állapotfigyelő változó értéke LOW lesz, és lefut a kapcsos zárójelbe írt rész, azaz a DMX címkiválasztó bemeneteinek egy adott jelkombinációja, illetve az Y7 helyett az adott nyomógombhoz tartozó kimenet lesz aktív addig, amíg a gombot nyomva tartjuk. A gomb elengedése után ismét az Y7 lesz az aktív.
Az áramkör egy lehetséges próbapaneli megoldása az 56. ábrán látható.
56. ábra
Felhasznált irodalom:
Kovács Csongor: Digitális elektronika (ismeretlen évjárat)
A cikket megírtam: 2023. 05. 10
A Rádiótechnikában megjelent: 2023. június