KKM: Membranska tipkovnica 4 x 1

Početnik si s Croduinom. 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 e-radionice 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 Croduinom 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 4x4 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 Croduinom jer na tipkovnici imamo ženske headere i na Croduinu pa možemo koristiti muško-muške kabliće. Tipkovnicu spajamo redom na digitalne pinove Croduina, 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 Croduinom 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
  }
}

 
Drugi primjer nam pokazuje kako tipkovnicu možemo iskoristiti za otključavanje vrata. Na pin 12 spojimo zelenu LED diodu, a na pin 13 spojimo Crvenu LED diodu, obje preko otpornika odgovarajuće vrijednosti. Spojimo tipkovnicu kao u prošlom primjeru, u programu zadamo željenu lozinku i duljinu lozinke te možemo koristiti program.Kada unesemo pogrešnu lozinku crvena dioda bljesne, a kada je lozinka točna upali se zelena dioda na dvije sekunde. U dio koda gdje se pali zelena dioda možemo dodati da nam se pali i relej ili tranzistor koji je spojen na vrata i koji ih može otključavati. Ako je potrebno možemo i povećati vrijeme koliko dugo su vrata otključana ako promijenimo vrijednost u delay funkciji koja je sada postavljena na 2 sekunde.
 

#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
      }
}
}
Leave a Reply