Merhaba arkadaşlar, bu yazımızda 4×4 Keypad (Membran tuş takımı) kullanımını öğrenip hesap makinesi uygulaması gerçekleştireceğiz.

4×4 Keypad ( Membran Tuş Takımı )

Membran keypad tuş takımları  arduino projelerinde, hesap makinelerinde, kapı kilitleme, kasa şifresi, robot kontrolü gibi projelerde gördüğünüz tuş takımlarıdır. Bununla birlikte, arduino projelerinde, menülerde gezinmek, şifre girmek ve robotları kontrol etmek için kullanılabilir. Projeleriniz için bilgi giriş donanımı olarak kullanılır. Herhangi bir mikrokontrolör ile kolayca kontrol edilmektedir.

Membran tuş takımları ince, esnek bir plastik malzemeden yapılmıştır ve arkasında bulunan yapışkan sayesinde projelerinizde kolaylık sağlamaktadır. 4×3, 4×4, 4×1 gibi modelleri de mevcuttur. Biz bugün projemizde 4 x 4 ‘lük bir tuş takımı tercih edeceğiz.

Özellikler

  • Boyut: 68.9 x 76 x 0.8mm
  • Kablo Boyu: 85mm (konnektör dahil)
  • Konnektör: dupont 8 pin, 0.1 inch (2.54mm)
  • Ağırlık: 7g

4×4 Keypad Kullanımı 

Bu projemizde tuş takımında bastığımız tuşların seri port ekranında görünmesini sağlayacağız.

Devre Şeması

Kodlar

Lcd ekran ve keypad kütüphanelerini buradan indirebilirsiniz. ( kütüphane )

#include <Keypad.h>
const byte ROWS = 4; //satır
const byte COLS = 4; //sutun
char buton;
char keys [ROWS] [COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
Serial.begin(9600); //Keypadimizden Gelen Buton Değerlerini Okumak İçin Seri Ekranı Başlatıyoruz
}
void loop()
{
buton = myKeypad.getKey(); //Klavye Adını Verdiğimiz Keypadimizden Gelen Buton Değerlerini Arduinoya Okutuyoruz
if (buton)
{
Serial.println(buton); //Seri Ekranımıza Basılan Buton Değerini Yazdırıyoruz
}
}

4×4 Keypad ile Hesap Makinesi Uygulaması

I2C LCD ekran ile beraber bir hesap makinesi yapacağız. ( I2C Lcd ekran kullanımı için yazımızı okuyabilirsiniz.)

Devre Şeması

Kodlar

#include <LiquidCrystal_I2C.h> //LCD ekran kütüphanesi
LiquidCrystal_I2C lcd(0x27, 16, 2); // Bu kodu kullanırken ekranda yazı çıkmaz ise 0x27 yerine 0x3f yazınız
#include <Keypad.h> //keypad kütüphanesi
const byte ROWS = 4; //satır
const byte COLS = 4; //sutun
char keys [ROWS] [COLS] = {
{'1', '2', '3', '+'},
{'4', '5', '6', ''},
{'7', '8', '9', '*'},
{'C', '0', '=', '/'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // satır pinleri
byte colPins[COLS] = {5, 4, 3, 2}; // sutun pinleri
Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
boolean presentValue = false;leblebi
boolean next = false;
boolean final = false;
String num1, num2;
float answer = 0;
char op;
void setup()
{
lcd.init();
lcd.backlight(); // arka plan ısıgı
lcd.setCursor(0,0); // cursor baslangıc
lcd.print("Robolink");
lcd.setCursor(0,1); // cursor baslangıc
lcd.print("Teknoloji");
delay(2000);
lcd.clear();
}
void loop()
{
char key = myKeypad.getKey();
if (key != NO_KEY && (key == '1' || key == '2' || key == '3' || key == '4' || key == '5' || key == '6' || key == '7' || key == '8' || key == '9' || key == '0'))
{
if (presentValue != true)
{
num1 = num1 + key;
int numLength = num1.length();
lcd.setCursor(0, 0);
lcd.print(num1);
}
else
{
num2 = num2 + key;
int numLength = num2.length();
int numLength1 = num1.length();
lcd.setCursor(1 + numLength1, 0);
lcd.print(num2);
final = true;
}
}
else if (presentValue == false && key != NO_KEY && (key == '/' || key == '*' || key == '' || key == '+'))
{
if (presentValue == false)
{
int numLength = num1.length();
presentValue = true;
op = key;
lcd.setCursor(0 + numLength, 0);
lcd.print(op);
}
}
else if (final == true && key != NO_KEY && key == '=')
{
if (op == '+')
{
answer = num1.toInt() + num2.toInt();
}
else if (op == '')
{
answer = num1.toInt() – num2.toInt();
}
else if (op == '*')
{
answer = num1.toInt() * num2.toInt();
}
else if (op == '/')
{
answer = num1.toFloat() / num2.toFloat();
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("=");
lcd.print(answer);
lcd.noAutoscroll();
}
else if (key != NO_KEY && key == 'C')
{
lcd.clear();
presentValue = false;
final = false;
num1 = "";
num2 = "";
answer = 0;
op = ' ';
}
}

7 YORUMLAR

  1. Merhaba. Arduino kullanmada yeniyim. Bu yüzden kütüphaneyi kurarken bir zorlukla karşılaştım. Yüklemeye çalıştığım zaman “.Belirtilen dizin/zip dosyası geçerli bir kütüphane içermiyor.” yazısıyla karşılaşıyorum. Bu ödevi acil olarak yetiştirmem lazım. Hatanın kaynağı nedir acaba?

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz