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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.