Prog Shield Matrix Tastatur

Fra Holstebro HTX Wiki
Skift til: navigering, søgning
Matrix Tastatur

Som det oprindeligt var tænkt i Programmerings Shield v. 2.0, så virker Matrix-tastaturet IKKE. Der blev forsøgt for meget genbrug af signaler.

Tastaturet kan dog godt sluttes til, hvis man bruger ledninger til det.

Software

Der hentes et bibliotek fra Arduinos side[1]. Biblioteket downloades og installeres som beskrevet under Arduinos biblioteker.

Den beskrevne kode kan hentes i denne ZIP-fil. Denne software fungerer ved at tilslutte keyboardet med ledninger.

Anvendelsen af softwaren

Som alle andre biblioteker skal der sættes de grundlæggende ting op for at kontakte biblioteket og definere et objekt med keyboardet i.

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {A3, A2, 8, 2}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {A4, A5, 12, 13}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

Dette initialiserer også softwaren.

Inde i setup() skal der sættes op til seriel kommunikation som vist her:

void setup() {
  Serial.begin(9600);
  Serial.println("Matrix Keyboard Test");
}

I loop() læses keyboardet, og hvis der er kommet en værdi, så printes den i Serial Monitor.

void loop() {
  char key = keypad.getKey();
  
  if (key){
    Serial.println(key);
  }
}

Yderligere muligheder i softwaren

Der ligger yderligere muligheder i klassen man kan anvende, hvis man ønsker andre måder at anvende keyboardet på:

	char getKey();
	bool getKeys();
	KeyState getState();
	void begin(char *userKeymap);
	bool isPressed(char keyChar);
	void setDebounceTime(uint);
	void setHoldTime(uint);
	void addEventListener(void (*listener)(char));
	int findInList(char keyChar);
	int findInList(int keyCode);
	char waitForKey();
	bool keyStateChanged();
	byte numKeys();

Hardware

Princippet i keyboardet er at der sættes udgange op, der multiplexer enten rækker eller kolonner med signaler, og på rækker eller kolonner aflæses hvilke signaler der kommer - den proces vendes, så alle ben skal have mulighed for at svæve rimeligt frit. Det var det der gik galt med det oprindelige stik.

Tastaturet kan forbindes med ledninger til Arduino benene som følger:

Tastatur ben Arduino ben
1 fra toppen 13
2 12
3 8
4 2
5 A3
6 A2
7 A5
8 A4

Denne opkobling af tastaturet blokerer ret meget, da I2C-bussen er blokeret via A4 og A5.

Referencer

  1. Download-side til Keyboardet fra Arduinos hjemmeside