Tutorial Arduino : Membuat Kalkulator Keypad 4×4

Indobot Academy

Tahu ga sih fungsi lain dari keypad selain untuk texting?
Jadi, ternyata Keypad dapat digunakan untuk membuat kalkulator loh Fanbot. Keypad yang digabungkan dengan lcd dapat dibuat menjadi kalkulator yang hasil perhitungannya ditampilkan pada layar LCD, sehingga akan lebih mudah untuk mengetahui kalkulator bekerja atau tidak.

[membership level=”0,1,2.4″]

1. Alat / Bahan

Untuk mendapatkan komponen elektronik di atas silahkan temukan di sini.

Baca Juga : Penerapan Langsung Lampu Otomatis saat Ada Manusia dengan Sensor PIR

2. Skema Rangkaian

Gambar Rangkaian Kalkulator Arduino dengan Keypad 4×4

Keterangan:

  • 5V – VCC I2C
  • GND – GND I2C
  • SDA – SDA I2C
  • SCL – SCL I2C
  • D2 – Pin 1 keypad
  • D3 – Pin 2 keypad
  • D4 – Pin 3 keypad
  • D5 – Pin 4 keypad
  • D6 – Pin 5 keypad
  • D7 – Pin 6 keypad
  • D8 – Pin 7 keypad

[/membership]

3. Langkah Kerja

  1. Pertama Siapkan alat dan bahan yang akan digunakan
  2. Kedua Lakukan proses wiring dengan menggunakan Gambar skematik rangkaian diatas
  3. Ketiga Buka software Arduino IDE yang telah terinstal pada laptop/komputer
  4. Kemudian Unduh semua library di atas dan masukkan libray tersebut dengan cara buka Arduino IDE pilih Sketch->Include Library->Add.Zip Library 
  5. Selanjutnya Ketikkan sketch program pada halaman Arduino IDE
  6. Setelah itu Masukan alamat I2C LCD pada sketch program, untuk mengetahui alamat I2C pelajari materi berikut : https://premium.indobot.co.id/mencari-tahu-alamat-i2c-pada-modul-i2c/
  7. Segera Lakukan proses uploading program

4. Sketch Program

Dapatkan segera akses ratusan video tutorial dan pembelajaran dengan registrasi melalui tombol di bawah!

 
/* Program Kalkulator Arduino dengan Keypad 4x4 dibuat oleh Indobot */

#include <Keypad.h> //Library keypad
#include <LiquidCrystal_I2C.h> //Library LCD I2C
LiquidCrystal_I2C lcd(0x27,16,2); //Masukkan type dan alamat I2C

const byte ROWS = 4; //Inisialisasi jumlah baris
const byte COLS = 4; //Inisialisasi jumlah kolom

char Keys[ROWS][COLS] = { //Map tombol keypad
  {'1','2','3','+'},
  {'4','5','6','-'},
  {'7','8','9','*'},
  {'C','0','=','/'}
};

byte rowPins[ROWS] = {2, 3, 4, 5}; //Deklarasi pin baris
byte colPins[COLS] = {6, 7, 8, 9}; //Deklarasi pin kolom

Keypad customKeypad = Keypad( makeKeymap(Keys), rowPins, colPins, ROWS, COLS); //input parameter keypad

char customKey; //Variabel untuk menampung input keypad
long first = 0; //Variabel angka pertama
long second = 0; //Variabel angka kedua
double total = 0; //Variabel total

void setup() {
  lcd.init (); //Mulai LCD
  lcd.setBacklight(HIGH); //Set backlight HIGH
}

void loop() {
  customKey = customKeypad.getKey(); //Baca input keypad

  switch(customKey){ //Jika
    case '0' ... '9': //Nilai 0 - 9, maka
      lcd.setCursor(0,0);
      first = first * 10 + (customKey - '0');
      lcd.print(first); //Tampilkan angka
    break;

    case '+': //Jika input +, maka
      first = (total != 0 ? total : first); //Jalankan prosedur penjumlahan
      lcd.setCursor(3,0);
      lcd.print("+");
      second = SecondNumber();
      total = first + second;
      lcd.setCursor(0,1);
      lcd.print(total);
      first = 0, second = 0;
    break;

    case '-': //Jika input -, maka
      first = (total != 0 ? total : first); //Jalankan prosedur pengurangan
      lcd.setCursor(3,0);
      lcd.print("-");
      second = SecondNumber();
      total = first - second;
      lcd.setCursor(0,1);
      lcd.print(total);
      first = 0, second = 0;
    break;

    case '*': //Jika input *, maka
      first = (total != 0 ? total : first); //Jalankan prosedur perkalian
      lcd.setCursor(3,0);
      lcd.print("*");
      second = SecondNumber();
      total = first * second;
      lcd.setCursor(0,1);
      lcd.print(total);
      first = 0, second = 0;
    break;

    case '/': //Jika input /, maka
      first = (total != 0 ? total : first); //Jalankan prosedur pembagian
      lcd.setCursor(3,0);
      lcd.print("/");
      second = SecondNumber();
      lcd.setCursor(0,1);

      second == 0 ? lcd.print("Invalid") : total = (float)first / (float)second; //Jika nilai angka ke-2 0, maka tampilkan "Invalid"

      second != 0 ? lcd.print(total):

      first = 0, second = 0;
    break;

    case 'C': //Jika input C, maka
      total = 0; //Hapus semua angka dan reset tampilan
      first = 0, second = 0;
      lcd.clear();
    break;
  }
}

long SecondNumber() //Prosedur penampilan angka ke-2
{
  while( 1 )
  {
    customKey = customKeypad.getKey();
    if(customKey &amp;amp;amp;gt;= '0' &amp;amp;amp;amp;&amp;amp;amp;amp; customKey &amp;amp;amp;lt;= '9')
    {
      second = second * 10 + (customKey - '0');
      lcd.setCursor(5,0);
      lcd.print(second);
    }

    if(customKey == '=') break; //return second;
  }
  return second;
}

Baca Juga : Palang Pintu Otomatis Arduino Uno

Kesimpulan:

Program bekerja dengan mendeteksi tombol keypad yang di tekan dan melakukan perhitungan sesuai perintah.

Ingin Tahu Program Kami Lebih Lanjut?

Silahkan isi Formulir Dibawah Ini untuk Diskusi dengan Tim Indobot Academy.

Baca Juga

Bagikan:

Tinggalkan komentar

whatsapp whatsapp