Merhaba, bugün sizlerle Arduino ile Hesap Makinesi projesi yapacağız. Devrede kullanacağımız tuş takımı (4×4 Membran KeyPad) üzerinden girdiğimiz değerlerle yapmak istediğimiz işlemi ve sonucu LCD ekran üzerinden görmüş olacağız. Bu hesap makinesi toplama, çıkarma, çarpma ve bölme işlemlerini kolaylıkla gerçekleştirebilir. Arduino ile hesap makinesi projemizin sonunda LCD Ekran ve Tuş Takımının nasıl kullanılıp çalıştığını anlamış olacağız. Şimdi arduino ile hesap makinesi yapımına geçebiliriz.
Arduino Hesap Makinesi Yapımı
LCD’yi arudino ile 4-bit mod ile çalıştıracağımız için sadece LCD’nin son 4 Data Bit’i Arduino’ya bağlanacak. Arduino’ya USB port, 12V’luk DC adaptör veya 9V’luk batarya üzerinden güç verebilirsiniz.
Bazı Arduino kartları TX (D0) ve RX (D1) pinlerine herhangi bir şey bağlı olduğunda kodu yükleyince hata verebilir bu yüzden böyle bir durumla karşılaşmamak için bu Serial pinleri yerine Arduino üzerindeki Analog A0 ve A1 pinleri kullanacağız. Fakat öncelikle bu pinleri Dijital pinlere çevirmemiz gerekiyor. Bu pinlerin Dijital pin olarak kullanılması içinse ‘void setup() altına aşağıdaki kodları eklememiz gerekmektedir:
void setup() {
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);
pinMode(A1, OUTPUT);
digitalWrite(A1, OUTPUT);
Tuş Takımı (Keypad) 8 output pine sahiptir ve bu pinler aşağıda vermiş olduğumuz devre şemasına uygun olacak şekilde A0-A1 ve D2-D7 pinlerine sırayla bağlayacağız. Kurulum şemasında gösterilen TX ve RX bağlantıları yerine A0 ve A1 pinlerini bağladığınıza emin olunuz aksi takdirde kodunuz çalışmayabilir. Arduino Hesap Makinesi projemizin devre diyagramını ve kodlarını aşağıda görebilirsin.
Arduino ile Hesap Makinesi için Gerekli Malzemeler
- 1 Adet 4×4 Tuş Takımı
- 1 Adet LCD Ekran
- 1 Adet Breadboard
- Jumper Kablo
Arduino ile Hesap Makinesi Devre Şeması
Arduino Pin | Keypad Pin | Arduino Pin | LCD Pin |
A0 | 1 | D8 | RS |
A1 | 2 | D9 | E |
D2 | 3 | D10 | D4 |
D3 | 4 | D11 | D5 |
D4 | 5 | D12 | D6 |
D5 | 6 | D13 | D7 |
D6 | 7 | +5V | Vdd, A, Pot + |
D7 | 8 | Ground | RW, Vss, K, Pot –V0 = Pot orta bacak |
Arduino ile Hesap Makinesi Kütüphane kurulumu
Kodları karta yüklemeden önce Arduino IDE’ye tuş takımı kütüphanesini eklememiz gerekiyor. LCD kütüphanesi Arduino içerisinde halihazırda bulunduğu için sadece tuş takımı kütüphanesini eklememiz yeterli olacaktır. Talimatları aynı şekilde uyguladığınıza emin olunuz yoksa kodunuzu Arduino’ya yüklerken hata ile karşılaşabilirsiniz.
1.Arduino IDE’yi açın ve üst menüden Sketch’e basın.
2.Include Library üzerinden Manage Libraries seçeneğine tıklayın.
3.Arama kutucuğuna Keypad yazın ve aşağıdaki resimdeki gözüken kütüphaneyi en son sürümü seçerek indirdikten sonra Arduino IDE’yi kapatıp tekrardan açın. Artık kodumuz Arduino üzerinde çalıştırılmak için hazır, şimdi aşağıdaki Arduino kodunu açmış olduğumuz Sketch’e yapıştırıp Arduino’ya Upload yapabiliriz.
Arduino Hesap Makinesi Kodları
#include <LiquidCrystal.h>
#include <Keypad.h>
const byte ROWS = 4; // 4 satır
const byte COLS = 4; // 4 Sütun
// Keymap’I tanımla
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { A0, A1, 2, 3 };// Arduino pinlerini ROW0, ROW1, ROW2 ve ROW3 Tuş Takımına (Keypad) tanınmla
byte colPins[COLS] = { 4, 5, 6, 7 }; // Arduino pinlerini COL0, COL1 ve COL2 Tuş takımına tanımla
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // Keypad oluştur
const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //LCD ekrana bağlanan pinleri tanımla
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
long Num1,Num2,Number;
char key,action;
boolean result = false;
void setup() {
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);
pinMode(A1, OUTPUT);
digitalWrite(A1, OUTPUT);
lcd.begin(16, 2); //16*2 LCD Ekran kullanıyoruz
lcd.setCursor(3, 0);
lcd.print("Robotistan"); //İntro mesajı görüntüle
lcd.setCursor(1, 1); // Göstergeyi sütun 0, satır 1’e ayarla
lcd.print("Hesap Makinesi"); //İntro mesajı görüntüle
delay(2000); //Ekranın bilgiyi göstermesi için bekle
lcd.clear(); //Temizle
}
void loop() {
key = kpd.getKey(); // Basılan tuşun değerini char olarak depolama
if (key!=NO_KEY)
DetectButtons();
if (result==true)
CalculateResult();
DisplayResult();
}
void DetectButtons()
{
lcd.clear(); //Temizle
if (key=='*') //Eğer iptal düğmesi basıldığında
{Serial.println ("Button Cancel"); Number=Num1=Num2=0; result=false;}
if (key == '1') //Eğer 1 düğmesi basıldığında
{Serial.println ("Button 1");
if (Number==0)
Number=1;
else
Number = (Number*10) + 1; //iki kez basıldı
}
if (key == '4') //Eğer 4 düğmesi basıldığında
{Serial.println ("Button 4");
if (Number==0)
Number=4;
else
Number = (Number*10) + 4; //iki kez basıldı
}
if (key == '7') //Eğer 7 düğmesi basıldığında
{Serial.println ("Button 7");
if (Number==0)
Number=7;
else
Number = (Number*10) + 7; //iki kez basıldı
}
if (key == '0') //Eğer 0 düğmesi basıldığında
{Serial.println ("Button 0");
if (Number==0)
Number=0;
else
Number = (Number*10) + 0; //iki kez basıldı
}
if (key == '2') //Eğer 2 düğmesi basıldığında
{Serial.println ("Button 2");
if (Number==0)
Number=2;
else
Number = (Number*10) + 2; //Pressed twice
}
if (key == '5') //Eğer 5 düğmesi basıldığında
{Serial.println ("Button 5");
if (Number==0)
Number=5;
else
Number = (Number*10) + 5; //Pressed twice
}
if (key == '8') //Eğer 8 düğmesi basıldığında
{Serial.println ("Button 8");
if (Number==0)
Number=8;
else
Number = (Number*10) + 8; //Pressed twice
}
if (key == '#') //Eğer # düğmesi basıldığında
{Serial.println ("Button Equal");
Num2=Number;
result = true;
}
if (key == '3') //Eğer 3 düğmesi basıldığında
{Serial.println ("Button 3");
if (Number==0)
Number=3;
else
Number = (Number*10) + 3; //Pressed twice
}
if (key == '6') //Eğer 6 düğmesi basıldığında
{Serial.println ("Button 6");
if (Number==0)
Number=6;
else
Number = (Number*10) + 6; //Pressed twice
}
if (key == '9') //Eğer 9 düğmesi basıldığında
{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') //Sütun 4’teki düğmeleri tespit etme
{
Num1 = Number;
Number =0;
if (key == 'A')
{Serial.println ("Addition"); action = '+';} //Toplama
if (key == 'B')
{Serial.println ("Subtraction"); action = '-'; } //Çıkarma
if (key == 'C')
{Serial.println ("Multiplication"); action = '*';} //Çarpma
if (key == 'D')
{Serial.println ("Devesion"); action = '/';} // //Bölme
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); //Göstergeyi sütun 0, satır 1’e ayarla
lcd.print(Num1); lcd.print(action); lcd.print(Num2);
if (result==true)
{lcd.print(" = "); lcd.print(Number);} //Sonucu göster
lcd.setCursor(0, 1); // Göstergeyi sütun 0, satır 1’e ayarla
lcd.print(Number); //Sonucu göster
}
Arduino ile Hesap Makinesi Yapımı Proje Videosu
Arduino ile hesap makinesi yapımı için tüm aşamaları görmüş ve projemizi tamamlamış olduk. En iyi hesap makinesi uygulaması için 4×4 Tuş Takımı, LCD Ekran, Breadboard gibi gerekli malzemelere web sitemizden ulaşabileceğinizi unutmayın. Siz de hemen projeyi yapmaya başlayabilir ve kendi hesap makinenizi yapabilirsiniz.