Skocz do zawartości

Problem z klawiaturą matrycową - biblioteką TV OUT


dolby

Pomocna odpowiedź

Witam!

Otóż posiadam problem z moją klawiaturą matrycową, podłączoną do arduino leonardo. Klawiatura bez biblioteki TV OUT działa prawidłowo, problem pojawia się wtedy gdy chcę ją wykorzystać z tą że biblioteką. Chcę tylko wspomnieć że wyświetlanie obrazu na telewizorze odbywa się prawidłowo, jedynie z klawiaturą jest problem. Przypuszczam że wypadało by zamieścić kod więc tak też uczynie:

#include <Wire.h>
#include <TVout.h>
#include <fontALL.h>
#include "pitches.h"  //add note library
#include <Keypad.h> //biblioteka od klawiatury
#include "DHT.h"
#define DHT11_PIN 2
DHT dht;
byte k=0;
byte x=0;
byte v=0;
const byte ROWS1 = 4; // ile wierszy
const byte COLS1 = 4; //ile kolumn

byte rowPins1[ROWS1] = {5, 4, 3, 2}; //piny wierszy
byte colPins1[COLS1] = {6, 7, 8, 9}; //piny kolum

char keys1[ROWS1][COLS1] = { //mapowanie klawiatury
  {'r','.','{',','},
  {'c','f','i','l'},
  {'b','e','h','k'},
  {'a','d','g','j'},
};

TVout TV;

Keypad klawiatura1 = Keypad( makeKeymap(keys1), rowPins1, colPins1, ROWS1, COLS1 ); //inicjalizacja klawiatury

void setup(){
}


void loop(){
     TV.begin(_NTSC,1920,1080);
     TV.select_font(font6x8);   
     char klawisz1 = klawiatura1.getKey();
     if(klawisz1){
      TV.println(klawisz1);                  
}
  }

 

Edytowano przez dolby
Link do komentarza
Share on other sites

Witam!

Używałem biblioteki Keypad i ona działa na przerwaniach - nie wiem jak biblioteka TVout, ale skoro razem się "gryzą" to czeka Cię przerobienie programu tak, aby obsługiwać klawiaturę w inny sposób, np. przy użyciu wejścia analogowego i drabinki rezystorów.

Pytanie podstawowe to do czego urządzenie ma służyć, ile klawiszy potrzebujesz obsługiwać i jak szybko? Keypad jest dobrą biblioteką i obsługuje dużo funkcji (wciśnięcie, przytrzymanie i to do 10 klawiszy naraz!) no ale niestety potrzebuje pinów 2 i 3 na których Arduino obsługuje przerwania zewnętrzne.

Spróbuj dokładnie przejrzeć dokumentację czy da się to ominąć - z tego co pamiętam jak podałem inne piny niż 2 i 3 to nie chciało działać, ale może w najnowszej wersji zostało to już rozwiązane?

---Aktualizacja---

Sprawdź czy zadziała zmieniając piny:

byte rowPins[ROWS] = {5, 4, 10, 9}; //connect to the row pinouts of the kpd

No i masz podwójnie zadeklarowany pin 2 w tym kodzie - zdecyduj się co go ma używać, DHT czy klawiatura 😉

Edytowano przez mwwojcik
przetestowałem
Link do komentarza
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!

Anonim
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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.