0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaProgramiranjeOdtipavanje večih tipk z manjšim številom priključkov mikrokontrolerja

    Odtipavanje večih tipk z manjšim številom priključkov mikrokontrolerja

    Delam na nekem hobby projektu za sina. Nič posebnega: mikrokontroler, tipke, L298 in dva DC motorja. Naredil sem vezje, ATMEGA8, L298, MAX485, pretvornik napajanja iz 24VDC na 5VDC. Za upravljanje sem predvidel tipke in za vsako tipko po en pin mikrokontrolerja. Potem pa sin pride z idejo, da potrebuje 12 tipk. Zlomka! Sedaj to poveš! Tiskano vezje so Kitajci že naredili! Naj grem predelat tiskano vezje?

    Slike ni

    Ča sem se spomnil, da sem nekje davno v Elektorju videl trik, kako z malo pini odtipavati več tipk. Elektorja seveda več nimam, s spomnim se, da sem trik nekako skopiral in spravil. Sedaj je čas, da ga najdem. In našel sem ga.

    Gre za matrično orientirano tipkovnico, a ne tako običajno, ki jo dobite v trgovinah. Shema tipkovnice je kot sledi na sliki 1. Kot vidite je matrika 4 x 4. Tipke so na presečiščih kolon in vrst, razen tam, kjer presečišče pripada diagonali. Matrika 4 x 4 ima 16 presečišč, če odštejemo 4 presečišča diagonale ostane 12 presečišč, kjer so tipke. Kjer presečišče pripada diagonali je namesto tipke dioda obrnjena od vrste k koloni.

    Kako sedaj to odtipavati? Če krmilimo port za kolono 1 na izhod/output in damo gor signal 0V, ta signal preko diode, na presečišču 1-1 ki se odpre gre tudi na celo vrsto 1, ki je sedaj na 0V. Če ostale priključke mikrokontrolerja krmilimo za na vhod/input z pullup uporom in ni nobena tipka pritisnjena, bodo pač ti priključki na visokem nivoju +5V. Če pa je ena od tipk sklenjena, bo nivo 0V prešel iz vrste preko sklenjene tipke na celo kolono in lahko na priključku ugotovimo, katera tipka te vrste je pritisnjena.

    Slike ni

    Postopek je seveda potrebno ponoviti za vse kolone/vrste, razen, če smo že ugotovili, da je ena od tipk že pritisnjena. Zadeva ima seveda tudi slabe strani: Če je pritisnjenih več tipk, zaznamo samo eno od tipk. No in druga slaba stran: pri programiranju se je potrebno malo pomujati. Ker kolikor toliko obvladam le Bascom, bom v tem programerskem jeziku pojasnil primer programiranja.

    Najprej nekaj nujnih definicij:

    ' kolone so privezane na prikljucke recimo
    ' tako:
    Kol1 Alias Pinb.3
    Kol2 Alias Pinb.2
    Kol3 Alias Pinb.5
    Kol4 Alias Pinb.4
    ' vrste se krmilijo preko istih, toda
    '  izhodnih prikljuckov:
    Vrsta1 Alias Portb.3
    Vrsta2 Alias Portb.2
    Vrsta3 Alias Portb.5
    Vrsta4 Alias Portb.4
    Dim Tipka As Byte          'številka pritisnjene
                                        ' tipke

    V Bascom-AVR programsko postavljam izhode na Portx.y, kjer je X oznaka vrat in y oznaka priključka v teh vratih. Kadar pa želimo brati stanje na priključku, ga naslovimo z Pinx.y Da je programiranje lažje, sem definiral odgovarjajoča Alias imena. Tako bom, če želim Vrsto1 dati na 0V napisal…

    Celotni članek SE192_39-42

     

    Avtor: Vilko Sustič

    2011_SE192_39