Arduino ile Hesap Makinesi Yapımı

Roma’da, Yunan’da, Mısır ve Çin’de değişik şekillerde ve değişik boyutlarda matematiksel hesaplamaları kolaylaştırıcı hesap makineleri bulunarak insanlığın hizmetine sunulmuştur. Milattan önce 560 yılında, Pythagoras çarpım tablosunu bularak insanların çok daha kısa sürede çarpma işlemini yapabilmelerini sağlamıştır. O tarihten buyana insanların zihninde özel bir yere sahip olan çarpım tablosu, çok kısa sürede zihinden çarpma işlemini yapamaya olanak tanımıştır. Çarpım tablosu günümüzde halen önemini koruyan ve kullanılan bir tablodur. Orta çağda değişik hesap tabloları kullanılmış ancak hiçbirisi istenilen amaca ulaşmayı sağlayamamıştır.

Napier’in logaritmayı keşfedip, bunu makineleştirmesi bütün matematiksel hesapların makineleştirilmesinin yolunu açmış ve insanlığa büyük bir bilgi kaynağı olmuştur. 1642 yılında Pascal toplama ve çıkarma işlemleri yapılabilecek nitelikte ilk basit hesap makinesini bulunmuştur. 1671 yılında ise Leibniz, arka arkaya toplama ilkesine dayanan ilk çarpma makinesini yapmayı başarmıştır. Bilgisayarların dayandığı ilkeye yer veren daha ileri düzeydeki ilk makine ise; XIX. Yüzyılda İngiliz C. Babbage tarafından geliştirilmiştir. 1940’lardan sonra elektrik ve elektromanyetik tekniğindeki büyük gelişmeler çok kısa sürede, çok hızlı ve yanlışsız işlem yapabilecek ve daha küçük boyutlu elektronik hesap makinelerinin yapılmasına ön ayak olmuştur.

Arduino ile hesap makinesi yapmak için ilk olarak donanım gereklidir. Bu işlemlerde 
1. 4*4 Keypad
2. 16*2 lcd ekran gereklidir.
3. Arduino Mega
4. Jumper  Kablo(dişi-erkek vb.)
Bu  donanımlar haricinde serial ekran ile de hesap makinesi yapılabilir. Bunu  yaptığınızda ise bilgisayara  bağımlı hale gelirsiniz. Bunun için ise  donanımlarınız mevcut olursa daha iyi olur. Keypad uzunluğunuz sayesinde ise  mod alma gibi diğer işlemleride yapa bilirsiniz. İyi kodlamalar...

#include<Wire.h>
#include<Keypad.h>
#include<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);
long sayi1=0,sayi=0;
long sonuc=0;
char customKey;
const byte satir=4;
const byte sutun=4;
char keys[satir][sutun]=
{ {'1','2','3','+'},
  {'4','5','6','-'},
  {'7','8','9','*'},
  {'%','0','=','/'}
  };
byte satirpin[satir]={0,1,2,3};
byte sutunpin[sutun]={4,5,6,7};
Keypad customKeypad=Keypad{makeKeymap(keys),satirpin,sutunpin,satir,sutun};

void setup()
{ 
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  digitalWrite(8,LOW);
  digitalWrite(9,LOW);
  lcd.begin(16,2);
  lcd.setBacklight(HIGH);
  lcd.setCursor(0,0);
  delay(1000);
  lcd.clear();
  }
  void loop()
  {   lcd.setCursor(0,0);
      lcd.print("<<<calculator>>>");
      delay(1000);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Deger giriniz:");
      delay(1000);
      customKey=customKeypad.getKey();
      if( customKey <='9' && customKey>='-9')
      {
        lcd.setCursor(0,1);
          sayi1 = sayi1 * 10 + (customKey - '0');
        lcd.print(sayi1);
        }
     else{
       if(customKey=='+')
         {
            sayi1 = (sonuc != 0 ? sonuc : sayi1);
            lcd.setCursor(0,1);
            lcd.print("+");
            sayi=sayi2();
            sonuc=sayi+sayi2;
            lcd.print(sonuc);
            lcd.setCursor(5,1);
            delay(5000);
            sayi=0;
            sayi1=0;
            lcd.clear();
            
           }
   else  if(customKey=='-')
         {
            sayi1 = (sonuc != 0 ? sonuc : sayi1);
            lcd.setCursor(4,1);
            lcd.print("-");
            sayi=sayi2();
            sonuc=sayi1-sayi;
            lcd.setCursor(5,1);
            lcd.print(sonuc);
            delay(5000);
            sayi=0;
            sayi1=0;
            lcd.clear();
            
           }
       else if(customKey=='*')
         {
            sayi1 = (sonuc != 0 ? sonuc : sayi1);
            lcd.setCursor(8,1);
            lcd.print("*");
            sayi=sayi2();
            sonuc=sayi1*sayi;
            lcd.setCursor(5,1);
            lcd.print(sonuc);
            delay(5000);
            sayi=0;
            sayi1=0;
            lcd.clear();
            
           }
        else   if(customKey=='/')
         {
            sayi1 = (sonuc != 0 ? sonuc : sayi1);
            lcd.setCursor(16,1);
            lcd.print("/");
            sayi=sayi2();
             lcd.setCursor(5,1);
            sonuc=sayi1/sayi;
            lcd.print(sonuc);
            delay(5000);
            sayi=0;
            sayi1=0;
            lcd.clear();
            
           }
           else if(customKey=='%')
            {
            sayi1 = (sonuc != 0 ? sonuc : sayi1);
            lcd.setCursor(16,1);
            lcd.print("%");
            sayi=sayi2();
             lcd.setCursor(5,1);
            sonuc=sayi1%sayi;
            lcd.print(sonuc);
            delay(5000);
            sayi=0;
            sayi1=0;
            lcd.clear();
            
           }
           
           
       }
  }
        
      
 long sayi2()
   {   customKey=customKeypad.getKey();
      if( customKey <='9' && customKey>='-9')
      {
        lcd.setCursor(4,1);
         sayi = sayi * 10 + (customKey - '0');
        lcd.print(sayi);
        }
        return sayi;
     }



Arduino ile Hesap Makinesi Yapımı

Yorum Gönder

0 Yorumlar