1000 TL Üzeri Alışverişlerde Ücretsiz Kargo ve Türkiye'nin Her Yerine 79,90₺

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

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

Merhaba arkadaşlar, bugün arduino ile hesap makinesi yapımı (4x4 membran tuş takımı keypad ve dokunmatik tft 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 lcd dokunmatik 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 9c - 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ı: KeyPad Pin Adı:
D0 1
D1 2
D2 3
D3 4
D4 5
D5 6
D6 7
D7 8
D8 LCD seçme pimini kaydedin (pim 4)
D9 LCD pinini etkinleştir (pin 6)
D10 Veri pimi 4 (pim 11)
D11 Veri pimi 4 (pim 11)
D12 Veri pimi 4 (pim 11)
D13 Veri pimi 4 (pim 11)
+ 5V LCD'nin Vdd pinine bağlı (pin 2)
Zemin LCD'nin Vss, Vee ve RW pinine bağlandı (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 kütüphane'ye buradan ulaşabilirsiniz. GitHub Tuş takımı kütüphanesine gitmek için tıklayın.

İ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 KeyPins 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; // Three 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 onaltılık dosya, 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 karakter Olduğu varsayılan
“A” Ekleme (+)
“B” Çıkarma (-)
“C” Çarpma işlemi (*)
“D” Bölünme (/)
“*” Açık (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 <LiquidCrystal.h> //Header file for LCD from https://www.arduino.cc/en/Reference/LiquidCrystal
#include <Keypad.h> //Header file for Keypad from https://github.com/Chris--A/Keypad

const byte ROWS = 4; // Four rows
const byte COLS = 4; // Three 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.  
[video width="1920" height="1080" mp4="https://static.ticimax.cloud/7051/uploads/2019/05/hayaletveyap-1.mp4" poster="https://static.ticimax.cloud/7051/uploads/2020/03/unnamed.png"][/video]
  Kaynak:  circuitdigest.com/microcontroller-projects/arduino-calculator-using-4x4-keypad
Etiketler: Arduino ile Hesap Makinesi Yapımı (4×4 Membran KeyPad)
Ekim 17, 2021
Listeye dön
cultureSettings.RegionId: 0 cultureSettings.LanguageCode: TR
Çerez Uyarısı

Alışveriş deneyiminizi iyileştirmek için yasal düzenlemelere uygun çerezler (cookies) kullanıyoruz. Detaylı bilgiye Gizlilik ve Çerez Politikası
sayfamızdan erişebilirsiniz.