Keypad dla Arduino

Ten artykuł przedstawi Ci krok po kroku – Jak podpiąć i obsłużyć Keypad dla Arduino

Na początek zaopatrz się w dowolny Keypad membranowy. W tym przykładzie użyłem standardowego 4×5, zamówionego z AliExpress

A więc na początku musimy ustalić który PIN jest za co odpowiedzialny, do większości Keypadów znajdziemy opis wyprowadzeń bez najmniejszego problemu w Google po wpisaniu np. „keypad 4×5 pinout”. Przykładowy znaleziony pinout:

Przejdźmy teraz do praktycznego przykładu.

1.Podłączamy po kolei piny od lewej strony do pinów: 2,3,4,5,6,7,8,9,10

2.Instalujemy bibliotekę za pomocą „zarządzania bibliotekami” wbudowanego w Arduino IDE

3.Wgrywanym na Arduino kod:

#include <Keypad.h>//dodanie biblioteki
const byte numRows = 5;//zdefiniowanie ilości wierszy
const byte numCols = 4;//zdefiniowanie ilości kolumn

char keymap[numRows][numCols] =//zdefiniowanie mapy przycisków
{
	{ 'A', 'B', '#', '*' },
	{ '1', '2', '3', 'U' },
	{ '4', '5', '6', 'D' },
	{ '7', '8', '9', 'X' },
	{ 'L', '0', 'R', 'E' }
};

byte rowPins[numRows] = { 10, 9, 8, 7, 6 };//piny do których zostały podpięte wiersze
byte colPins[numCols] = { 2, 3, 4, 5 };//piny do których zostały podpięte kolumny

Keypad myKeypad = Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);//inicjalizacja keypada

void setup()
{
	Serial.begin(9600);//uruchomienie komunikacji z PC
}

void loop()
{
	char keypressed = myKeypad.getKey();//zapisanie odczytanego przycisku do zmiennej
	if (keypressed != NO_KEY)//warunek sprawdzający czy został wciśnięty przycisk
	{
		Serial.print("Wcisnieto przycisk: ");//wyświetlenie napisu
		Serial.println(keypressed);//wyświetlenie wciśniętego przycisku
	}
}

W monitorze portu szeregowego po wciśnięciu przycisku powinniśmy zobaczyć:

Jeśli wciskając przycisk dostajesz informację że został wciśnięty inny przycisk niż ten wciśnięty oznacza to że masz błędnie podpięty keypad.

A teraz zaprezentuję Ci drugi praktyczny przykład który pokaże Ci w jaki sposób możesz wykonać coś za pomocą wciśnięcia przycisku.

#include <Keypad.h>
const byte numRows = 5;
const byte numCols = 4;

char keymap[numRows][numCols] =
{
	{ 'A', 'B', '#', '*' },
	{ '1', '2', '3', 'U' },
	{ '4', '5', '6', 'D' },
	{ '7', '8', '9', 'X' },
	{ 'L', '0', 'R', 'E' }
};

byte rowPins[numRows] = { 10, 9, 8, 7, 6 };
byte colPins[numCols] = { 2, 3, 4, 5 };

Keypad myKeypad = Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);

boolean zmienna = false;

void setup()
{
	Serial.begin(9600);
	pinMode(13, OUTPUT);
}

void loop()
{
	char keypressed = myKeypad.getKey();
	if (keypressed != NO_KEY)
	{
		Serial.print("Wcisnieto przycisk: ");
		Serial.println(keypressed);

		if (keypressed == 'A')//zawartość tego ifa wykona się po wciśnięciu przycisku zdefiniowanego jako "A"
		{
			Serial.println("Tutaj mozesz dac dowolny kod ktory sie wykona po wcisnieciu wybranego przycisku :)");
		}

		if (keypressed == 'E')//zawartość tego ifa wykona się po wciśnięciu przycisku zdefiniowanego jako "E"
		{
			if (zmienna == false)//jeśli zmienna jest false to wykona się zawartość ifa
			{
				Serial.println("Uruchomiono");
				digitalWrite(13, HIGH);//zapali diodę wbudowaną na Arduino
				zmienna = true;//zmieni zmienną z false na true
			}
			else//jeśli zmienna nie jest false wykona się zawartość else
			{
				Serial.println("Wylaczono");
				digitalWrite(13, LOW);//zgasi diodę wbudowaną na Arduino
				zmienna = false;//zmieni zmienną z true na false
			}
		}
	}
}

Podczas wciskania odpowiednich przycisków w monitorze portu szeregowego powinniśmy zobaczyć:

Oraz na naszym Arduino powinniśmy zobaczyć efekt gaśnięcia oraz zapalania diody:

  

 

Dawid Przychodni

Create Account



Log In Your Account