2000₺ ÜZERİ ÜCRETSİZ KARGO! TÜRKİYE'NİN HER YERİNE HEPSİJET VE ARAS KARGO İLE YALNIZCA 150₺
2000₺ ÜZERİ ÜCRETSİZ KARGO! TÜRKİYE'NİN HER YERİNE HEPSİJET VE ARAS KARGO İLE YALNIZCA 150₺
2000₺ ÜZERİ ÜCRETSİZ KARGO! TÜRKİYE'NİN HER YERİNE HEPSİJET VE ARAS KARGO İLE YALNIZCA 150₺
Arduino ile Hesap Makinesi Yapımı (4x4 Membran KeyPad)

Arduino ile Hesap Makinesi Yapımı (4x4 Membran KeyPad)

Kısaca: Arduino ile hesap makinesi, 4x4 membran tuş takımından girilen sayılarla toplama, çıkarma, çarpma ve bölme işlemlerini tam sayılarla yapıp sonucu 16x2 LCD ekranda gösteren bir projedir. Bu yazıda malzemeleri, devre şemasını ve pin tablosunu, Keypad ve LiquidCrystal kütüphanelerinin kullanımını, Proteus simülasyonunu ve tam Arduino kodunu bulabilirsiniz.

Merhaba arkadaşlar, bugün arduino ile hesap makinesi yapımı (4x4 membran tuş takımı keypad ve 16x2 LCD ekran kullanarak) konusunu arduino çalıştırma kodları ve hesap makinesi kodu ile birlikte öğrenelim.

Programlamaya yeni başlıyorsanız Arduino bu iş için harika bir platformdur. Bu makalemizde Arduino ile keypad ve 16x2 LCD ekran kullanarak kendi hesap makinemizi oluşturacağız . Bu hesap makinesi Toplama, Çıkarma, Çarpma ve Bölme gibi basit işlemleri tam sayılarla gerçekleştirebilir. Hesap makinesi mantığını kavradıktan sonra bilimsel hesap makinesi bile yapabilirsiniz. Bu projenin sonunda, Arduino ile 16x2 LCD ve Membran Tuş Takımının nasıl kullanılacağını ve hazır kütüphaneleri kullanarak bunları programlamanın ne kadar kolay olduğunu öğrenmiş olacaksınız. Ayrıca, bu makale ile Arduino'nuzu belirli bir görevi yerine getirmek için nasıl programlayacağınızı da öğrenmiş olacaksınız.

Hesap Makinesi Yapımında Kullanılan Malzemeler:

  1. Arduino Uno R3
  2. 16×2 LCD Ekran
  3. 4×4 Membran Tuş Takımı
  4. 9V Pil
  5. Tekli Breadboard
  6. Jumper Kablo

Hesap Makinesi Arduino Devre Şeması:

Arduino Hesap Makinesi Yapımı Projesinin breadboard ile kablolama ve devre şeması yukarıda verilmiştir. Devre şemasında gösterilen + 5V ve toprak bağlantısı Arduino'nun 5V ve toprak pinine bağlanmalıdır. Arduino usb den veya 9 - 12V adaptör/pil kullanılarak beslenebilir. LCD'yi Arduino ile 4 bit modunda çalıştırıyoruz, böylece LCD'nin sadece son dört veri biti Arduino'ya bağlı olacaktır. Tuş takımı, yukarıda gösterildiği gibi 0 pininden 7 pinine kadar bağlanması gereken 8 çıkış pinine sahiptir. Arduino ile bağlantınızı doğrulamak için aşağıdaki bağlantı tablosunu kullanabilirsiniz. …

Arduino Pin Adı:Bağlandığı Pin (Keypad / LCD):
D01
D12
D23
D34
D45
D56
D67
D78
D8LCD RS (register select) pini (pin 4)
D9LCD EN (enable) pini (pin 6)
D10 → LCD D4 (pin 11)LCD veri pini
D11 → LCD D5 (pin 12)LCD veri pini
D12 → LCD D6 (pin 13)LCD veri pini
D13 → LCD D7 (pin 14)LCD veri pini
+ 5VLCD'nin Vdd pinine bağlı (pin 2)
GNDLCD'nin Vss, Vee ve RW pinlerine bağlı (pin 1, 3 ve 5)

Pin 0 ve pin1'e bağlı bir şey varsa, bazı Arduino panoları program yüklenirken bir hata gösterebilir, bu nedenle herhangi bir sorunla karşılaşırsanız programı yüklerken tuş takımını çıkarın. Bağlantılarınız tamamlandıktan sonra donanımınız aşağıdaki gibi görünecektir.

Arduino Hesap Makinesi Kodları

Tam Arduino Kodu bu yazının sonunda verilmiştir. Daha önce de belirtildiği gibi Arduino ile bir LCD ve tuş takımını kütüphaneler kullanarak arayüzleyeceğiz . Önce Arduino IDE'mize ekleyelim. LCD için kullanılan LiquidCrystal kütüphanesi Arduino IDE ile birlikte yüklü gelir. Tuş takımı için Keypad kütüphanesini GitHub'dan ya da Kütüphane Yöneticisi'nden kurabilirsiniz. İndirdiğiniz ZIP dosyasını Taslak -> library ekle -> .ZIP Kitaplığı Ekle... ile arduino'ya ekleyin. Tuş takımını kullanmak için hazır bir kitaplık kullanmış olsak da, Arduino tuş takımı hakkında birkaç ayrıntıdan (aşağıda gösterilmiştir) bahsetmek zorundayız. ROWS ve COLS değişkeni, tuş takımımızın kaç satır ve sütuna sahip olduğunu söyleyecektir ve tuş haritası, tuşların klavyede bulunma sırasını gösterir. Bu projede kullandığımız tuş takımı haritası aşağıda gösterilmiştir. Ayrıca aşağıda , rowPins ve colPins değişken dizisi kullanılarak Tuş Takımı'nın hangi pinlere bağlandığını da görebilirsiniz.

const byte ROWS = 4; // Four rows
const byte COLS = 4; // Four columns

// Define the Keymap
char keys[ROWS][COLS] = {
 {'1','2','3','A'},
 {'4','5','6','B'},
 {'7','8','9','C'},
 {'*','0','#','D'}
};
byte rowPins[ROWS] = { 0, 1, 2, 3 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 4, 5, 6, 7 }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins.

Ne tür bir tuş takımı kullandığımızı ve nasıl bağlandığını belirttikten sonra, aşağıdaki satırı kullanarak tuş takımı ayrıntılarını oluşturabiliriz.

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // Create the Keypad

Benzer şekilde LCD'nin hangi Arduino pinlerine bağlanacağını da eklemeliyiz. Devre şemamıza göre tanımlar aşağıdaki gibi olacaktır.

const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Pins to which LCD is connected
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //create the LCD

Temel olarak, tuş takımında herhangi bir şey yazılıp yazılmadığını kontrol etmeliyiz, yazıldıysa ne yazıldığını tanımalı ve sonra “=” tuşuna basıldığında bir değişkene dönüştürmeliyiz, sonucu hesaplamalı ve son olarak lcd ekranda göstermeliyiz. Bu, aşağıda gösterildiği gibi döngü işlevi içinde yapılan şeydir.

key = kpd.getKey(); //storing pressed key value in a char

if (key!=NO_KEY)
DetectButtons();

if (result==true)
CalculateResult();

DisplayResult(); 

Arduino Hesap Makinesi Simülasyonu

Proteus yazılımını kullanarak projeyi simüle etmeyi de deneyebiliriz. Proteus'un kendi başına bir Arduino bileşeni yoktur, ancak kolayca indirilebilir ve kütüphanesine eklenebilir. Proteus'ta Arduino bileşenine sahip olduğunuzda, bağlantıyı devre şemasında gösterildiği gibi yapmak için Alfanümerik LCD ve Tuş Takımı ekleyin. Daha sonra hex dosyasını Proteus'taki karta çift tıklayarak Arduino'ya ekleyin ve “program file” 'ı indirilen bu hex dosyasına yönlendirin. Simülasyonun anlık görüntüsü aşağıda gösterilmiştir, tüm çalışma aşağıdaki videoda gösterilmiştir. Hex dosyası nasıl alınır?

Not: Verilen hex dosyası, aşağıda verilen programın orijinaliyle aynı değildir. Simülasyon tuş takımının ve gerçek donanım tuş takımının tuş haritası farklı olduğu için değiştirildi.

Arduino Hesap Makinesi'nin Çalışması

Bağlantıları devre şemasına göre yapın ve aşağıdaki kodu yükleyin. Hata gösteriyorsa, kitaplığı yukarıda verilen talimatlara göre eklediğinizden emin olun. Ayrıca sorunun donanımınızla ilgili olup olmadığını kontrol etmek için simülasyonu deneyebilirsiniz. Her şey olması gerektiği gibi yapılırsa, aşağıdaki gibi çalıştığını görmelisiniz.

Burada kullanılan tuş takımının üzerinde uygun işaretler bulunmadığından, 4 işlem (toplama, çıkarma, çarpma, bölme) aşağıda liste şeklinde karşılaştırılmıştır. …

Tuş takımındaki karakterOlduğu varsayılan
“A”Toplama (+)
“B”Çıkarma (-)
“C”Çarpma (*)
“D”Bölme (/)
“*”Temizle (C)
“#”Eşittir (=)

Her düğmenin gerçekte neyi temsil ettiğini yazmak için bir işaretleyici kullanabilirsiniz. Bunu yaptıktan sonra, hesap makinesini doğrudan kullanmaya başlayabilirsiniz. Numarayı yazın ve ikinci satırda görünecek olan işleme basın ve ikinci numaranızı yazın ve sonunda sonucunuzu almak için “#” tuşuna basın. Bu kadar kolay.

Hesap Makinesi Kodları - Arduino Kodu

/*
 * Arduino Keypad calculator Program
 */
#include <Keypad.h>
#include <LiquidCrystal.h>

const byte ROWS = 4; // Four rows
const byte COLS = 4; // Four columns

// Define the Keymap
char keys[ROWS][COLS] = {

 {'7','8','9','D'},

 {'4','5','6','C'},

 {'1','2','3','B'},

 {'*','0','#','A'}

};

byte rowPins[ROWS] = { 0, 1, 2, 3 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 4, 5, 6, 7 }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins.

Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // Create the Keypad

const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Pins to which LCD is connected
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

 long Num1,Num2,Number;
 char key,action;
 boolean result = false;
 
void setup() {
 lcd.begin(16, 2); //We are using a 16*2 LCD display
 lcd.print("DIY Calculator"); //Display a intro message
 lcd.setCursor(0, 1); // set the cursor to column 0, line 1
 lcd.print("-CircuitDigest"); //Display a intro message 

 delay(2000); //Wait for display to show info
 lcd.clear(); //Then clean it
}

void loop() {
 
key = kpd.getKey(); //storing pressed key value in a char

if (key!=NO_KEY)
DetectButtons();

if (result==true)
CalculateResult();

DisplayResult(); 
}

void DetectButtons()
{ 
 lcd.clear(); //Then clean it
 if (key=='*') //If cancel Button is pressed
 {Serial.println ("Button Cancel"); Number=Num1=Num2=0; result=false;}
 
 if (key == '1') //If Button 1 is pressed
 {Serial.println ("Button 1"); 
 if (Number==0)
 Number=1;
 else
 Number = (Number*10) + 1; //Pressed twice
 }
 
 if (key == '4') //If Button 4 is pressed
 {Serial.println ("Button 4"); 
 if (Number==0)
 Number=4;
 else
 Number = (Number*10) + 4; //Pressed twice
 }
 
 if (key == '7') //If Button 7 is pressed
 {Serial.println ("Button 7");
 if (Number==0)
 Number=7;
 else
 Number = (Number*10) + 7; //Pressed twice
 } 
 

 if (key == '0')
 {Serial.println ("Button 0"); //Button 0 is Pressed
 if (Number==0)
 Number=0;
 else
 Number = (Number*10) + 0; //Pressed twice
 }
 
 if (key == '2') //Button 2 is Pressed
 {Serial.println ("Button 2"); 
 if (Number==0)
 Number=2;
 else
 Number = (Number*10) + 2; //Pressed twice
 }
 
 if (key == '5')
 {Serial.println ("Button 5"); 
 if (Number==0)
 Number=5;
 else
 Number = (Number*10) + 5; //Pressed twice
 }
 
 if (key == '8')
 {Serial.println ("Button 8"); 
 if (Number==0)
 Number=8;
 else
 Number = (Number*10) + 8; //Pressed twice
 } 
 

 if (key == '#')
 {Serial.println ("Button Equal"); 
 Num2=Number;
 result = true;
 }
 
 if (key == '3')
 {Serial.println ("Button 3"); 
 if (Number==0)
 Number=3;
 else
 Number = (Number*10) + 3; //Pressed twice
 }
 
 if (key == '6')
 {Serial.println ("Button 6"); 
 if (Number==0)
 Number=6;
 else
 Number = (Number*10) + 6; //Pressed twice
 }
 
 if (key == '9')
 {Serial.println ("Button 9");
 if (Number==0)
 Number=9;
 else
 Number = (Number*10) + 9; //Pressed twice
 } 

 if (key == 'A' || key == 'B' || key == 'C' || key == 'D') //Detecting Buttons on Column 4
 {
 Num1 = Number; 
 Number =0;
 if (key == 'A')
 {Serial.println ("Addition"); action = '+';}
 if (key == 'B')
 {Serial.println ("Subtraction"); action = '-'; }
 if (key == 'C')
 {Serial.println ("Multiplication"); action = '*';}
 if (key == 'D')
 {Serial.println ("Devesion"); action = '/';} 

 delay(100);
 }
 
}

void CalculateResult()
{
 if (action=='+')
 Number = Num1+Num2;

 if (action=='-')
 Number = Num1-Num2;

 if (action=='*')
 Number = Num1*Num2;

 if (action=='/')
 Number = Num1/Num2; 
}

void DisplayResult()
{
 lcd.setCursor(0, 0); // set the cursor to column 0, line 1
 lcd.print(Num1); lcd.print(action); lcd.print(Num2); 
 
 if (result==true)
 {lcd.print(" ="); lcd.print(Number);} //Display the result
 
 lcd.setCursor(0, 1); // set the cursor to column 0, line 1
 lcd.print(Number); //Display the result
}

Arduino Hesap Makinesi Yapımı - Video

Hepsi bu kadar. Umarım Arduino 4x4 Keypad ile Hesap Makinesi Yapımı makalemizi beğenmiş ve yeni bir şeyler öğrenmişsinizdir. Memnun kaldıysanız aşağıda bulunan " yukarı ok "a tıklayarak +1 puan verebilirsiniz. Diğer Güncel Arduino Projeleri için BURAYA TIKLAYABİLİRSİNİZ. Sizde Robotlara ve Maker'lığa Meraklıysanız Robotik Marketimiz ROBOCOMBO 'yu Ziyaret Edebilirsiniz. Okuduğunuz İçin Teşekkürler.

İlgili Ürünler

Sıkça Sorulan Sorular

4x4 membran tuş takımı Arduino'ya nasıl bağlanır?

Tuş takımının 4 satır ve 4 sütun olmak üzere 8 pini vardır. Bu projede pinler Arduino'nun D0–D7 dijital pinlerine bağlanır ve Keypad kütüphanesinde rowPins ile colPins dizileriyle tanımlanır.

Arduino hesap makinesinde dört işlem hangi tuşlarla yapılır?

Tuş takımında işlem işaretleri bulunmadığı için A toplama, B çıkarma, C çarpma, D bölme tuşu olarak kullanılır. * tuşu ekranı temizler, # tuşu ise eşittir görevi görerek sonucu ekranda gösterir.

Kod yüklenirken neden hata alınıyor?

D0 ve D1 pinleri USB üzerinden seri haberleşme için de kullanıldığından, bu pinlere bağlı tuş takımı kod yüklemeyi engelleyebilir. Bu durumda yükleme sırasında tuş takımı çıkarılmalı; kütüphane hatalarında ise Keypad ve LiquidCrystal kütüphanelerinin kurulu olduğu kontrol edilmelidir.

16x2 LCD neden 4 bit modunda bağlanır?

4 bit modunda LCD'nin yalnızca D4–D7 veri pinleri kullanılır; böylece Arduino'da daha az pin harcanır ve tuş takımına yeterli pin kalır. Bu projede RS pini D8'e, EN pini D9'a, D4–D7 pinleri de D10–D13'e bağlanır.

Arduino hesap makinesi projesi simüle edilebilir mi?

Evet. Proteus'a Arduino bileşeni eklendikten sonra alfanümerik LCD ve tuş takımıyla devre kurulabilir; derlenmiş hex dosyası karta tanıtılarak proje donanım olmadan test edilebilir.