Zwracam się z pytaniem dotyczącym wysterowania klawiatury matrycowej. Tego się nie da czytać!!!!!!!!!! Kod wstaw w odpowiednie znaczniki
Można spróbować wyzerować stan przycisku '#': [syntax=c] if (key == '#') { int __index = keypad.findInList('#'); if (__index != -1) keypad.key[__index].key_update('#', IDLE, false); delay(2000); break; }[/syntax]
Prowadzący może też docenić Twoje eksperymenty, których efektem jest opinia o całkowitej nieprzydatności tego mechanizmu w projekcie. Możliwość podłączenia przerwania masz w zasadzie wszędzie. Sens, przynajmniej w projekcie który przedstawiłeś, niestety nigdzie wg mnie...
To o czym tak dyskutujecie jest zestandaryzowane w tym sensie że kupując lub zamawiając klawiaturę u producenta podajecie mu parametr nKRO gdzie n jest ilością klawiszy naraz wciśniętych bez "ghosting"-u. Czyli klawiatura 4KRO może działać poprawnie do 4 klawiszy 10KRO - 10 klawiszy. Poszukaj w azji firm - wiele robi na zamówienie już od 5-10szt za...
Ja we wszystkich urządzeniach robię klawiaturę bardzo prostą. Matryca bez optoizolacji, rezystory podciągające są wewnętrzne, włączane tylko na czas odczytu, żadnych kondensatorów, diod etc. Cała reszta to program - skanowanie, filtracja drgań styków oraz zakłóceń. Działa to dobrze nawet przy wysokim poziomie zakłóceń. Algorytm działania jest podobny...
Rozumiem, że pin PD7 będzie miał włączony rezystor pull-up, a odczytać chcesz stan dolnego przycisku, czyli litery A, Zastanów się więc w jaki stan powinieneś ustawić pin PC0, by zwarcia nie było, a jednocześnie stan przycisku A moża było odczytać bez użycia rezystorów. Odpowiedzią jest właśnie: ... czytałem o tym, by i tak kolumny zamiast wyłączać...
Rzuciłem okiem w jakiś swój trochę już stary kod na 18F14k22 i widzę że stan czytam np tak: PORTCbits.RC0 Ty używasz LAT*, które służą do zapisu stanu wyjść, tak mam to zrobione. Ponadto, dla wszystkich wejść które mają kanał A/D wyłączam to funkcjonalność tak: ANSELbits.ANS4=0; BTW: ten kod do pobranie pod poniższym linkiem (sterowanie oświetleniem)
Sygnały kolumn powinny być wzięte z przed rezystorów zasilających bazy tranzystorów. Same rezystory też powinny mieć co najmniej 2k2
Jeśli kolega używa do programowania ISP-a albo boot loadera (np. port szeregowy) to śmiało można a nawet trzeba wyłączyć JTAG. Widzę, że jest włączony też SPI i pewnie on jest używany do programowania przy pomocy np. STK200 Pozdrawiam Adam
Oszczędnie to by było jakbyś zrobił na jednym pinie ;) Idea ze strony 9: http://ww1.microchip.com/downloads/en/De...
Obsługa klawki 4x4 void KBD_init(void) { KBD_DIR = 1<<KBD_col1 | 1<<KBD_col2 | 1<<KBD_col3 | 1<<KBD_col4 | ~(1<<KBD_row1 | 1<<KBD_row2 | 1<<KBD_row3 | 1<<KBD_row4); KBD_PORT = 0xFF; }; unsigned char KBD_read(void) { KBD_PORT=0xff; KBD_PORT &= ~(1<<KBD_col1);...
2*10 + 3
A mi się udało znaleźć. I to na stronie producenta bascoma. Wpisałem w google "bascom getkbd" :) https://avrhelp.mcselec.com/index.html?g... [syntax=vbnet]'-------------------------... 'name : getkbd.bas 'copyright : (c) 1995-2005, MCS Electronics 'purpose : demo : GETKBD 'micro : Mega48...
Rozmawiamy o kodzie z tematu, więc dlaczego oftopic. Czy ten kod od michalko12 był uruchamiany na wersji z diodami czy z opornikami? Albert
Mogą to np być filtry drgań zestyków albo jakieś "usprawniacze" albo np podciąganie pinów do VCC (AVR mają wewnętrzne pullup'y). Schemat który pokazałeś to najprostszy schemat klawiatury 4x4.
Miałem kiedyś swego czasu tego typu klawiaturę. Od spodu jest laminat przykręcony dwiema śrubkami. Odkręcasz i masz dostęp do wnętrza.
/* synthesis xc_pulldown = 1 */ NET "SWITCH1" LOC = "P18" | IOSTANDARD = LVCMOS33 | PULLDOWN = yes; Tam jest tylko weak pull-up: http://obrazki.elektroda.pl/5012018900_1...
U mnie diody raz działały raz nie :(. Zrobiłem sobie tak :) Po obsłudze przerwania wystawiam 0 na wiersze i sobie czekam aż przyjdzie kolejne przerwanie :)
Badaj stan bitów w ten sposób: if (PINB & _BV(PINB4))... raczej if (!(PINB & _BV(PINB4))) //czy=0 lub po "ludzku" if(bit_is_clear(PINB,PB4)... Kod który przytoczyłeś realizuje coś takiego: if (4==0)... To dla przykładu z PINB4, raczej nie bedzie działać :-) Ten kod nic nie realizuje - kompilator go ignoruje....
Witam. Tak. Pzdr.
1. Tak jak w helpie 2. No cóż taka konstrukcja. Widocznie ktoś to tak wymyślił, na szczęście da się połączyć w matrycę 3x4 3. Daj, nie oszczędzaj. Pozdrawiam
Generalnie OK. 1. Do pinu CD+ ULN-a dodaj kondensator elektrolityczny, 2. Niewykorzystane tranzystory z ULN, podpiąłbym do gnd po stronie pinów Ix. 3. Podświetlanie podpiąłbym pod pin mikrokontrolera, by móc nim starować - sprawdziłbym najpierw ile prądu pobiera podświetlanie, gdyż: http://mikrokontrolery.blogspot.com/2011...
Tylko ile się zwiększy program po użyciu sprintf. Lepiej użyć itoa.
Procedura getkbd zwraca 0 gdy nie naciśniesz zadnego klawisza (albo jakas inna wartosc). Musisz zrobić tak, aby po naciśnieciu dowolnego klawisza program czekal na wartosc 0 a dopiero pozniej jezeli odbierze jakas wartosc to niech zapisuje to do tablicy. Np: dim x as byte dim i as bit do x=getkbd if x= 0 then i=0 end if if x<>0 and i =0 then tablica=x...
Jednocześnie z biblioteczką, którą zamieściłem wcześniej, stworzyłem kiedyś, biblioteczkę do obsługi klawiatury 4x4 w której wszystkie kolumny i wiersze mogą być podłączone do dowolnych nóżek procesora AVR. Nie musi to być jeden port i nie musi być zachowana żadna kolejność. W załączniku zamieszczam omawiany kod źródłowy. Wystarczy tylko wypełnić makra...
Może zmniejsz prędkość obsługi klawiatury. Zwykle jest to bardzo szybkie a w tym przypadku trzeba zdecydowanie spowolnić.
1. Odpowiedz na pytanie kolegi milika. 2. Pokaz wiecej kodu. 3. Po co sprawdzasz flage Z (nie znam tego jezyka wiec pewnie do konstrukcji for i=1 to 3 )? BF
To nie ma prawa działać. Zacznij od ponownego sprawdzenia połączeń klawiatury i wyrysuj na nowo jej 'sieć'. Wg tego co narysowałeś, to jesteś w stanie badać tylko lewą kolumnę przycisków, reszta i tak jest pozwierana kolumnami. Sprawdź to, a potem przejdziemy do programu.
Po wywołaniu WAIT_KEY kod klawisza masz w akumulatorze i zpisujesz wszystkie "próby" na stosie do czasu aż zakończysz 0x0A. Potem zdejmujesz tylko te dwa ostatnie znaki (0x0A) i ten kod. A wszystkie pozostałe nie są ze stosu zdejmowane. Masz wtedy niezrównoważony stos. Musisz mieć tyle samo rozkazów POP ile PUSH, bo inaczej Ci się stos przepełni dość...
To jak sprawdzasz to sprawdzaj w rejestrze PIND, a nie PORTD, w którym jest to co do niego zapisałeś.
Musisz wyzerować flagę, a czy zrobisz to normalnie czy przy użyciu tej bzdurnej biblioteki to już nie ma znaczenia. 4\/3!!
nie wiem po co ci takie cos.... ja bym zrobil tablice dim tablica(16) as integer tablica(1)=11 'to co ma sie pojawic zamiast 1 tablica(2)=22 tablica(3)=33 B = Getkbd() a wywolywac np.tablica(B) i przypisywac do C. no nie wiem,chyba tak ... pozdrawiam
DS 13.2.4 Reading the Pin Value
Jak dołączyc kondensator -masz pokazane na rysunku poniżej. Jednak jeśli działa dobrze bez kondensatorów to nie ma powodu aby je dawać. Pozdrawiam Yakuza
Po ustawieniu portu w rejestrze PORTx musisz odczekać przynajmniej jeden takt zegara przed sprawdzaniem rejestru PINx. Możesz dodać intrukcję assemblera NOP.
jeśli chcesz odblokowac tamten chip to robisz tak: sprawny chip podłączasz z zewnętrznym kwarcem i 2 kondensatorami do masy. sygnał zegarowy z jego pinu XTAL2 (wyjście sygnału zagarowego) lączysz na XTAL1 (wejście sygnału zegarowego) zablokowanego chipa. oba procki muszą mieć wspólną mase i kabel polączeniowy od kwarcy musi być możliwie krótki. wtedy...
Najprawdopodobniej we fusebitach masz WŁĄCZONY interfejs JTAG (bit JTAGEN), co powoduje, że piny PC5..2 są "zablokowane" Musisz wyłączyć we fusebitach interfejs JTAG, tak będzie najprościej. Możesz też spróbować na samym początku programu: [syntax=basi4gl] MCUCSR=&B10000000 MCUCSR=&B10000000 'koniecznie ta linijka ma być 2 razy - to celowe [/syntax]
Musisz sobie utworzyć coś w rodzaju wskaźnika do tablicy. Może to być np int, który będzie wskazywał na kolejne indeksy w tablicy. Wpisujesz zmienną do tablica[indeks] i zwiększasz indeks.
Jeśli możesz zmienić połączenie klawiatury z uC , to zainteresuj się funkcją Getkbd w Bascomie , bo to najprostsze rozwiązanie dla początkującego , a schemat połączeń jest dostępny w pliku pomocy Bascoma. Piotrek
Klawiature musisz potraktować jak jeden zwykły przycisk. Tyle że zwykły przycisk ma stan wysoki jeśli nienaciśnięty a ten przycisk zwraca 16 jeśli nienaciśnięty. Napisałem na szybko dwa przykłady. Jeden działa bezposrednio na wartosciach a drugi na stringu [syntax=vbnet] Dim Key As Byte Key_val As Byte , Lock As Byte , Licznik As Byte Dim Val_str As...
Może to była klawiatura matrycowa?
To jest klawiatura matrycowa. Obsługuje się ją tak jak wszystkie klawiatury matrycowe. Na wiersze (kolumny) podajesz po kolei napięcie z pinów procesora. Stan sprawdzasz za to na kolumnach (wierszach). Jeśli wykryjesz napięcie na danej kolumnie to wiesz jaki klawisz został wciśnięty bo wiesz na jaki wiersz podałeś napięcie. Trzeba to robić w pętli bez...
Tak, możesz je tam przylutować, tylko pamiętaj, że jest to klawiatura matrycowa.
1. Tak, to klawiatura matrycowa - poszukaj na forum jak się takich obsługuje - zwykle użytkownicy biorą się za klawiaturki 4x4, ale to tylko kwestia większej ilości pinów. 2. Zapewne tak 3. Tak, powinieneś usunąć zwarcia z tych przycisków - bez tego praca z klawiaturą matrycową Ci nie wyjdzie 4. Albo podpinasz omomierz/piszczek do danych 2 styków i...
Sam sobie odpowiedziałeś - nie jest to możliwe. Popularne klawiatury matrycowe nie są przystosowane do wykrywania naciśnięcia kilku przycisków na raz, bo rzadko jest takie wymaganie. Powiedziałbym, że jest to ergonomicznie dosyć karkołomne.
Do sprzedania mam komplet za pomocą którego możesz od razu przystąpić do nauki programowania mikrokontrolerów AVR!! - zestaw znanej i cenionej firmy Kamami ZL10AVR , również tej samej firmy programator ZL2PRG , wyświetlacz LCD 2x16znaków, komplet przewodów do zestawu plus oprogramowanie. Całość jest nowa! http://obrazki.elektroda.pl/5759189100_1...
Przymierzam się do budowy tego joy'a. Wszystkie przyciski są sprawdzane jako klawiatura matrycowa i prawie jestem pewny że nie ma limitu nacisniętych przycisków.
... czy piny analogowe mogą mi zastąpić cyfrowe jeśli chodzi o tę klawiaturę matrycową ;) A czemu nie zrobić klawiatury na ADC?: http://mikrokontrolery.blogspot.com/2011...
Z takim LCD będzie ciężko się "dogadać". Proponuje zakupić zwykły lcd np. 2x16 ze sterownikiem HD44780. Do tego można łatwo dobudować klawiaturę matrycową. Jeżeli nie masz doświadczenia to polecam Bascom.
Jak nie liczyć wychodzi 73 klawisze i 17 przewodów do klawiatury, pozostałe to do LEDów. Gdyby klawiszy było 72 i 17 przewodów to będzie klawiatura matrycowa, a tu jest o jeden klawisz za dużo, możliwe że nieczynny jeszcze jeden klawisz i wtedy wszystko pasuje.
klawiatura matrycowy bascom klawiatura matrycowy atmega8 atmega klawiatura matrycowy
volvo silnika pomiar temperatura termistor bramka linksys pap2t
naprawa udaru makita radio makita
Kolor spalin i problemy z biegami w VW LT 2.5 Wpływ wypiętego przewodu podciśnienia na odpalanie VW LT 2.5