logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATmega32, ZL3AVR - Obsługa zintegrowanej klawiatury matrix 4x4

Ormmwar 26 Lut 2015 19:12 2157 10
REKLAMA
  • #1 14480650
    Ormmwar
    Poziom 8  
    Witam!
    Posiadam płytkę ZL3AVR i mam problem z odczytywaniem klawiatury 4x4 matrix. Schemat całej klawiatury
    ATmega32, ZL3AVR - Obsługa zintegrowanej klawiatury matrix 4x4

    Płytka nie posiada rezystorów na żadnej linii, więc chciałbym napisać program, który umożliwiłby mi korzystanie z niej bez nich. Klawiaturę można podłączyć do dowolnego portu.
    Jak by ktoś mógłby mi wytłumaczyć jak i dlaczego to byłbym bardzo wdzięczny, dopiero uczę się programowania więc każda wiedza się przyda :P

    Programowania uczę się w języku C.

    Ps. Zdaję sobie sprawę z poradnika ze stronki winavr.scienceprog.com ale z braku rezystorów obawiam się o procka.
  • REKLAMA
  • #3 14480858
    Ormmwar
    Poziom 8  
    Obawiam się, że jak wcisnę 2 przyciski w momencie "skanowania" linii przez uC połączę przez przypadek +5V z GND, pierwszy pomysł był taki, żeby rządki sprawdzać na stan pinu a na kolumny nadawać po kolei 1 i sprawdzać na którym wejściu pojawiła się 1 i w ten sposób mógłbym określić jaki klawisz został wciśnięty.
  • REKLAMA
  • #4 14481082
    dondu
    Moderator na urlopie...
    Ormmwar napisał:
    Obawiam się, że jak wcisnę 2 przyciski w momencie "skanowania" linii przez uC połączę przez przypadek +5V z GND,

    1. Pokaż na schemacie, w którym miejscu taka sytuacja miałoby nastąpić.

    2. Czy wiesz co to jest rezystor pull-up?
  • REKLAMA
  • #5 14481233
    Ormmwar
    Poziom 8  
    ATmega32, ZL3AVR - Obsługa zintegrowanej klawiatury matrix 4x4
    Więc tak, tutaj skanuję linie K1 do K4 cyklicznie. W pozycji gdy 1 jest na K4 moimi wielkimi i nieostrożnymi paluchami wciskam przyciski S16 i S15. czyli według mojego rozumowania AVR wystawiający 0 zwiera je z masą a 1 zwiera z napięciem zasilania. Czyli wciskając 2 przyciski S16 i S15 zwieram przez przypadek +5V i GND. Chyba, że się mylę, taki sobie ze mnie elektronik, a programista nawet słabszy.

    I tak, wiem co to pull-up, to rezystor podciągający do zasilania.

    EDIT: Znaczy zgaduję, że było to pytanie to mój tok rozumowania nie ma sensu xD
    Dodatkowo zorientowałem się o tym, że gdybym zrobił takie "skanowanie" to trochę słabo było by z jakimikolwiek innymi fragmentami kodu...
  • REKLAMA
  • #6 14481319
    dondu
    Moderator na urlopie...
    Ormmwar napisał:
    czyli według mojego rozumowania AVR wystawiający 0 zwiera je z masą a 1 zwiera z napięciem zasilania.

    Dodatkowe pytanie: Czy wiesz co to jest stan wysokiej impedancji i jak ustawić pin mikrokontrolera w ten stan?
    Po odpowiedzi na to pytanie będziesz już prawie przy końcowych wnioskach :)
  • #7 14481444
    Ormmwar
    Poziom 8  
    Z tego co mi wiadomo to stan wysokiej impedancji to stan, który nie jest ani 0 ani 1 czytaj można podłączyć cokolwiek nie otrzymując w zasadzie niczego, chyba :D
  • #9 14481573
    Ormmwar
    Poziom 8  
    Czyli jedną stronę przycisków ustawiam w stan wysokiej impedancji a na drugiej przez pull-up do Vcc. Tylko czy wtedy będę mógł z pinów zczytywać stany normalnie? I nadal będę musiał robić to skanowanie pinów, jak to pogodzić z programem? :S Kurczę dużo to myślenia nad tym jak podłączyć samą klawiaturę, żeby to działało, nie mówiąc o LCD i ADC na przykład :cry:

    EDIT: A Pana stronę sobie zapiszą w zakładkach, sporo informacji jak widzę, nawet o niej nie wiedziałem :D
  • Pomocny post
    #10 14481656
    dondu
    Moderator na urlopie...
    Niestety klawiatura matrycowa wymaga nieco zachodu z jej obsługą, za to wymaga mniejszej ilości pinów - coś za coś :)

    Nie wiem jakie dodatkowe funkcje będzie miał program, ale z reguły skanowanie klawiatury robi się w oparciu o jakiś timer, bo dodatkowo należy eliminować drgania styków.

    Strona ... korzystaj do woli, a w razie problemów pisz na forum :)

    EDIT:
    Zauważ jeszcze, że ta klawiatura ma 4 diody i wspólny sygnał do przerwania - można w ten sposób wykryć dokładnie moment przyciśnięcia jednego z przycisków będąc np. w uśpieniu.
  • #11 14481683
    Ormmwar
    Poziom 8  
    Super, dzięki za poradę, poleciał plusik, strona również bardzo fajna. Myślę, że problem został rozwiązany :D
REKLAMA