Witam
Jest to mój pierwszy projekt który tu prezentuje wiec proszę o wyrozumiałość.
Kiedyś brakowało mi przycisków do sterowania atmegą więc akurat Pan mirek zrobił bibliotekę pod pilot RC5 było to strzał w 10, gdyż pilot posiada sporo przycisków. Jednak ja chciałem zrobić taki edytor na karcie teleVGA i chciałem tam wprowadzać tekst. Przeszukując internet natrafiłem na kilka bibliotek do obsługi klawiatury jednak w komentarzach pisało ze żadna nie działa a jeśli działa to kilka przycisków itp. Postanowiłem taką samemu zrobić. Korzystałem z internetu oraz z książki Pana mirka. Efektem mojej pracy jest w pełni działająca klawiatura która obsługuje klawiatury wraz z dodatkowymi przyciskami
Biblioteka obsługuje wszystkie przyciski na klawiaturze, robiłem ją kiedyś więc nie ma w niej jeszcze callbacków.
Do programu dostajemy 2 zmienne oraz 2 funkcje ponieważ litery są zapisywane do jednej zmiennej a pozostałe przyciski do innej to ułatwia prace z programami. Dodatkowo jest to zmienna nieblokująca programu i szybka a jeśli ktoś by chciał zablokować program do czasu naciśnięcia przycisku to jest i taka funkcja. W pliku nagłówkowym .h mamy też możliwość ustalenia czy te zmienne maja się zerować czy nie. Polega to na tym że gdy wciskamy przycisk i ustawimy na zerowanie zmiennych to ta zmienna będzie miała wartość kodu ANSCi lub innych klawiszy funkcyjnych od momentu wciśnięcia klawisza aż do momentu zwolnienia klawisza. Jeśli ustawimy żeby zmienne się nie zerowały to wtedy w programie musimy ją zerować. Wygląda to na mętlik niepotrzebny ale mi to się przydaje. Nazwy klawiszy funkcyjnych są zdefiniowane nazwy w pliku .h
Biblioteka posiada oczywiście przyjazny wybór portu jednak !uwaga! program działa na INTx więc bibliotekę przystosowałem automatycznie do zmiany tego inta w pliku .h Gdy naciśniemy shift i jakąś literę to ta litera będzie duża a bez shifta mała, to samo dotyczy znaków <,>,:,", i pozostałe. Jest to automatycznie ustawiane oraz nie posiada polskich znaków. Od lini DATA jak i CLK należy dać rezystor do +5V ok 4,7kom
Jeśli coś by nie chciało chodzić to pisać chętnie odpowiem i pomogę.
Jeszcze takie 2 małe uwagi czasami klawiatura przestaje działać żaden przycisk nie chodzi, tego niestety nie wiem jak naprawić ale dzieję się to rzadko i w określonych sytuacjach np. gdy zmieniamy wartość zmiennej to może się zaciąć. Mi tylko wtedy się zacina. Kolejna uwaga to przed inicjalizacją biblioteki należy dać opóźnienie ok 2s może mniej. gdyż klawiatura nie zdąży się zainicjować.
A teraz biblioteka. Przykładowego programu nie podaję ale jeśli ktoś by miał kłopot to wtedy ewentualnie napiszę. biblioteka napisana na atmega32 i wewnętrzny oscylator 8Mhz. To chyba nie ma znaczenia bo timerów nie ma więc powinna chodzić przy wyższej częstotliwości
Powiem tyle że w warunku if sprawdzamy czy ta zmienna przyjmuje np. literę lub liczbę dla klawiszy funkcyjnych. A w main musimy tylko ja zainicjować i biblioteka jest gotowa do pracy
Jak widać nie jestem dobry w opisywaniu więc może ciężko to zrozumieć.
keyboard.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
keyboard.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.