KKM: MEMBRANSKA TIPKOVNICA 4 X 1

Početnik si s Dasduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala tvrtke soldered na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Dasduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.
UVOD
Imate projekt u kojem trebate unositi određene vrijednosti u vaš program, ali ne znate kako biste to ostvarili, onda nastavite čitati i saznat ćete sve o jednostavnom ulaznom modulu.
Radi se o membranskoj tipkovnici koja se sastoji od 4 tipke i vrlo je jednostavna za korištenje, a u manjim projektima je sasvim dovoljna. Tipkovnica u jednom redu ima 4 tipke i radi na istom principu kao i 4×4 membranska tipkovnica samo je manja i pogodnija za korištenje gdje nam nije potrebno imati 16 tipki.
Karakteristike senzora:
- Veličina gornjeg dijela: 7 x 2cm
- Duljina kabla: 9cm, savitljivi
- Konektor: 5-pinski
KAKO RADI?
Ova tipkovnica koristi 4 tipke kojima je jedan kraj spojen na red, a drugi kraj tipke je spojen na stupac. Kako imamo u svakom stupcu po jednu tipku jednostavno imamo spojenu svaku tipku na jedan izlazni pin. Tipke jednostavno spajaju jedan izvod s drugim, odnosno u našem slučaju spajaju red i stupac u kojem se nalaze što vidimo i na slici.
KAKO POVEZATI?
Tipkovnicu je jednostavno povezati sa Dasduinom jer na tipkovnici imamo ženske headere i na Dasduinu pa možemo koristiti muško-muške kabliće. Tipkovnicu spajamo redom na digitalne pinove Dasduina, a slika iznad nam prikazuje koji je koji pin na tipkovnici kako bi danu shemu spajanja lakše prilagodili svojim projektima.
ARDUINO KOD
Kako bismo tipkovnicu mogli koristiti sa Dasduinom trebamo preuzeti biblioteku Keypad, ako ne znate kako instalirati biblioteku, pročitajte naš tutorijal.
Biblioteka ima primjere za korištenje tipkovnice tako da možemo i njih iskoristiti za upoznavanje s radom tipkovnice i funkcija biblioteke koje nam mogu pomoći.
Za početak ćemo samo ispisivati pritisnutu tipku na Serial monitor.
#include "Keypad.h" //uključivanje biblioteke Keypad
const
byte RED = 1;
//definiramo broj redova
const
byte STUPAC = 4;
//definiramo broj stupaca
//definiramo simbole koje želimo da nam se ispisuju prilikom pritiska na tipku
char
NasiZnakovi[RED][STUPAC] = {
{
'1'
,
'2'
,
'3'
,
'4'
}
};
byte redPin[RED] = {6};
//definiramo na koje pinove Croduina smo spojili redove
byte stupacPin[STUPAC] = {4,5,2,3};
//definiramo na koje pinove Croduina smo spojili stupce(1 > pin4, 2 > pin5, 3 > pin2, 4 > pin3)
//inicijalizacija klase NewKeypad kojoj predajemo NasiZnakovi, pinove na koji su spojeni redovi i stupci i broj redova i stupaca
Keypad Tipkovnica1 = Keypad( makeKeymap(NasiZnakovi), redPin, stupacPin, RED, STUPAC);
void
setup
(){
Serial.begin(9600);
//započinjemo serijsku komunikaciju
}
void
loop
(){
char
pritisnutiZnak = Tipkovnica1.getKey();
//u varijablu pritisnutiZnak spremamo znak koji je pritisnut
// znak koji smo pritisnuli dobivamo pomoću funkcije getKey()
if
(pritisnutiZnak){
Serial.println(pritisnutiZnak);
//provjeravamo dali je pritisnuta tipka te ako je ispisujemo ju na Serial monitor
}
}
#include "Keypad.h" //uključivanje biblioteke Keypad
#define duljina 4 //definiramo duljinu lozinke
int
ledz=12;
// zelena ledica za otključano spojena na pin 12
int
ledc=13;
// crvena ledica za zaključano spojena na pin 13
const
byte RED = 1;
//definiramo broj redova
const
byte STUPAC = 4;
//definiramo broj stupaca
//definiramo simbole koje želimo da nam se ispisuju prilikom pritiska na tipku
char
NasiZnakovi[RED][STUPAC] = {
{
'1'
,
'2'
,
'3'
,
'4'
}
};
int
i=0;
char
lozinka[duljina];
//definiramo string lozinka koji kasnije koristimo za unos lozinke s tipkovnice
char
zadana_lozinka[duljina]=
"4321"
;
//postavljamo lozinku koju želimo koristiti u string zadana_lozinka
char
pritisnuto=0;
//varijabla tipka char u koju ćemo kasnije spremati pritisnutu tipku
byte redPin[RED] = {6};
//definiramo na koje pinove Croduina smo spojili redove
byte stupacPin[STUPAC] = {4,5,2,3};
//definiramo na koje pinove Croduina smo spojili stupce(1 > pin4, 2 > pin5, 3 > pin2, 4 > pin3)
//inicijalizacija klase NewKeypad kojoj predajemo NasiZnakovi, pinove na koji su spojeni redovi i stupci i broj redova i stupaca
Keypad Tipkovnica1 = Keypad( makeKeymap(NasiZnakovi), redPin, stupacPin, RED, STUPAC);
void
setup
(){
Serial.begin(9600);
//započinjemo serijsku komunikaciju
pinMode
(ledc,
OUTPUT
);
//pin ledc (pin 13) postavljamo kao izlaz
pinMode
(ledz,
OUTPUT
);
//pin ledz (pin 12) postavljamo kao izlaz
digitalWrite
(ledc,
HIGH
);
//crvenu ledicu uključujemo jer je zaključano
digitalWrite
(ledz,
LOW
);
// zelenu ledicu isključujemo
}
void
loop
(){
pritisnuto = Tipkovnica1.getKey();
//u varijablu pritisnuto spremamo znak koji je pritisnut
if
(pritisnuto){
//provjeravamo dali je pritisnuta tipka i ako je ispisujemo njen znak na Serial monitor
Serial.println(pritisnuto);
lozinka[i++]=pritisnuto;
//u string lozinka dodajemo znak koji je pritisnut
}
if
(i==duljina){
//provjeravamo dali nam je i jednak varijabli duljina( provjeravamo dali smo unijeli 4 znaka koliko nam je duljina lozinke)
delay
(200);
//pauza 0.2 sekunde
if
(!(
strncmp
(lozinka,zadana_lozinka,duljina))){
// uspoređujemo string lozinka sa stringom zadana lozinka
Serial.println(
"otkljucano tocna lozinka"
);
// ako su stringovi jednaki ispisujemo poruku na Serial monitor da je lozinka točna
digitalWrite
(ledc,
LOW
);
//gasimo crvenu ledicu
digitalWrite
(ledz,
HIGH
);
//palimo zelenu ledicu
delay
(2000);
// pauza 2 sekunde
i=0;
// postavljamo i na 0 kako bi ponovno mogli unositi lozinku, a s time i onemogućujemo da se ponovno provjerava unos od prije, nego zahtijevamo novi unos lozinke
//zaključavanje
digitalWrite
(ledz,
LOW
);
//gasimo zelenu ledicu
digitalWrite
(ledc,
HIGH
);
//palimo crvenu ledicu
Serial.println(
"zakljucano"
);
//ispisujemo poruku zakljucano na Serial monitor
}
else
{
//ovaj dio se izvršava ako unesemo pogrešnu lozinku
digitalWrite
(ledz,
LOW
);
digitalWrite
(ledc,
HIGH
);
Serial.println(
"pogresna lozinka"
);
digitalWrite
(ledc,
LOW
);
//ugasimo crvenu ledicu na pola sekunde i ponovno upalimo ( ledica bljesne) kako bi znali da je lozinka pogrešna
delay
(500);
Serial.println(
"Pokusaj ponovno"
);
digitalWrite
(ledc,
HIGH
);
// paljenje crvene ledice
i=0;
//stavljamo i na nulu kako bi mogli ponovno unijeti lozinku
}
}
}