Skocz do zawartości
jare72

Problem z klawiaturą membranową

Pomocna odpowiedź

Pomijając kwestię ekspandera i innych okołotematów, skoro kod biblioteki działa to znaczy że układ jest działający i póki co nie ma co drążyć innych tematów.

 @jare72 czy to co podesłał @Elvis działa?

Jeżeli dalej będziesz miał problem, możesz przeanalizować kod biblioteki, która działa. Znajdziesz ją w dokumentach w katalog Arduino. 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Projekt jeszcze nie mam złożony, więc dlatego testowałem na zwykłej klawiaturze 4x4. Głównie w poście chodziło mi o zasadę działania klawiatury bez bibloteki keypad, ale dzięki wszystkim, że mogłem się dowiedzieć tylu rzeczy i co mogę jeszcze poprawić, bo dopiero zaczynam programować. W projekcie będzie jeszcze wyświetlacz LCD i moduł Ethernet 🙂

@Gieneq 

Na razie jestem w pracy, ale jak wrócę to przetestuję. Co do biblioteki keypad zaglądałem do środka, ale musiałbym nad tym dłużej posiedzieć, bo jest tam sporo funkcji do rozszyfrowania jak np. debouncing. 😃

Edytowano przez jare72

Udostępnij ten post


Link to post
Share on other sites

No na spokojnie, jak coś chętnie pomożemy. 🙂 Analiza kodu bibliotek może być bardzo przydatna, pomijając rozwiązanie konkretnego problemu, ale zawsze można podpatrzeć sposób w jaki może podejść do niektórych problemów.

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Witam ponownie, mam już program który mi działa poprawnie, ale jak odłączę zasilanie i podłączę jeszcze raz to przestaje działać i pomaga jedynie jeśli wgram jakiś inny program, zresetuje Arduino i dopiero wgram ten program, który będzie znów działał poprawnie. Kod doślę później, bo nie mam teraz dostępu do komputera.

Udostępnij ten post


Link to post
Share on other sites

A coś takiego działo się też gdy używałeś biblioteki, o której wcześniej pisałeś, że działa?

Udostępnij ten post


Link to post
Share on other sites

Nie, biblioteka działa normalnie po odłączeniu programu i podłączeniu ponownie. Jeśli jedna nóżka switcha wejścia pullup jest ustawiona standardowo na wysoki, a druga do wyjścia niskiego i nacisnę przycisk to na wejściu będzie niski stan już do końca działania programu? Czy też muszę ustawiać ponownie jaki był stań przed naciśnięciem przycisku tak jak w przypadku wyjścia?

Udostępnij ten post


Link to post
Share on other sites
17 minut temu, jare72 napisał:

Jeśli jedna nóżka switcha wejścia pullup jest ustawiona standardowo na wysoki, a druga do wyjścia niskiego i nacisnę przycisk to na wejściu będzie niski stan już do końca działania programu?

No nie, nie masz żadnej pamięci w tym układzie, ale chyba wiem co jest problemem. Masz pewnie jakiś return i gdy ustawiasz odczyt:

ekspander.digitalWrite(ROWS[x], LOW);

W programie wszystko jest ok, kolumny ustawiasz na PULLUP (wejście, HIGH), przesłuchujesz wiersze sprawdzając czy jak dasz LOW na wyjściu to czy nie zaciągnie któregoś PULLUPa. Ale w sytuacji gdy tak się stanie to może coś się zawiesić, gdy dasz return. Bo w ten sposób przerywasz przesłuchiwanie i nie ustawiasz pinu z powrotem na HIGH. Dlatego musisz albo dodać zmienną pomocniczą trzymającą wynik działania funkcji, albo przed return ustawić piny z powrotem na HIGH.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...