Membuat Kalkulator Arduino dengan LCD 16x2 dan Keypad
Komponen dan Perlengkapan
Arduino UNO
×
1
RGB LCD Shield Kit, 16x2 Character Display
×
1
Jumper wires (generic)
×
1
9V battery (generic)
×
1
Breadboard (generic)
×
1
Tentang Proyek Ini
Pada akhir proyek ini Anda akan tahu cara menggunakan LCD 16x2 dan Keypad dengan Arduino dan juga seberapa mudah memprogramnya menggunakan library yang tersedia. Anda juga akan memahami cara memprogram Arduino untuk menyelesaikan tugas tertentu.
Bahan yang Diperlukan:
Arduino Uno (Versi apa pun akan bekerja)
LCD Display 16×2
Keypad 4×4
Baterai 9V
Breadboard dan kabel penghubung
D0
pin 1 keyboard
D1
pin 2 keyboard
D2
pin 3 keyboard
D3
pin 4 keyboard
D4
pin 5 keyboard
D5
pin 6 keyboard
D6
pin 7 keyboard
D7
pin 8 keyboard
D8
Pin register select LCD (pin 4)
D9
Pin enable LCD (pin 6)
D10
Pin data 4 (pin 11)
D11
Pin data 4 (pin 11)
D12
Pin data 4 (pin 11)
D13
Pin data 4 (pin 11)
+5V
Terhubung ke pin Vdd LCD (pin 2)
Ground
Terhubung ke pin Vss, Vee dan RW LCD (pin 1, 3 dan 5)
Beberapa papan Arduino mungkin menunjukkan kesalahan saat mengunggah program jika ada sesuatu yang terhubung ke pin 0 dan pin 1, jadi jika Anda mengalami sesuatu, cukup lepaskan keypad saat mengunggah program.
Setelah koneksi Anda selesai, hardware Anda akan terlihat seperti di bawah ini
Kode
File tanpa judul
File tanpa judulArduino
* * Program Kalkulator Keypad Arduino */ #include <LiquidCrystal.h> //File header LCD dari https://www.arduino.cc/en/Reference/LiquidCrystal #include <Keypad.h> //File header Keypad dari https://github.com/Chris--A/Keypad const byte ROWS = 4; // Empat baris const byte COLS = 4; // Tiga kolom // Definisikan 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 };// Hubungkan keypad ROW0, ROW1, ROW2 dan ROW3 ke pin Arduino ini. byte colPins[COLS] = { 4, 5, 6, 7 }; // Hubungkan keypad COL0, COL1 dan COL2 ke pin Arduino ini. Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // Buat Keypad const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Pin tempat LCD terhubung LiquidCrystal lcd(rs, en, d4, d5, d6, d7); long Num1,Num2,Number; char key,action; boolean result = false; void setup() { lcd.begin(16, 2); //Kami menggunakan tampilan LCD 16*2 lcd.print("DIY Calculator"); //Tampilkan pesan pengantar lcd.setCursor(0, 1); // set kursor ke kolom 0, baris 1 lcd.print("-CircuitDigest"); //Tampilkan pesan pengantar delay(2000); //Tunggu tampilan untuk menunjukkan info lcd.clear(); //Lalu bersihkan } void loop() { key = kpd.getKey(); //menyimpan nilai tombol yang ditekan di char if (key!=NO_KEY) DetectButtons(); if (result==true) CalculateResult(); DisplayResult(); } void DetectButtons() { lcd.clear(); //Lalu bersihkan if (key=='*') //Jika tombol Batal ditekan {Serial.println ("Button Cancel"); Number=Num1=Num2=0; result=false;} if (key == '1') //Jika tombol 1 ditekan {Serial.println ("Button 1"); if (Number==0) Number=1; else Number = (Number*10) + 1; //Ditekan dua kali } if (key == '4') //Jika tombol 4 ditekan {Serial.println ("Button 4"); if (Number==0) Number=4; else Number = (Number*10) + 4; //Ditekan dua kali } if (key == '7') //Jika tombol 7 ditekan {Serial.println ("Button 7"); if (Number==0) Number=7; else Number = (Number*10) + 7; //Ditekan dua kali } if (key == '0') {Serial.println ("Button 0"); //Tombol 0 Ditekan if (Number==0) Number=0; else Number = (Number*10) + 0; //Ditekan dua kali } if (key == '2') //Tombol 2 Ditekan {Serial.println ("Button 2"); if (Number==0) Number=2; else Number = (Number*10) + 2; //Ditekan dua kali } if (key == '5') {Serial.println ("Button 5"); if (Number==0) Number=5; else Number = (Number*10) + 5; //Ditekan dua kali } if (key == '8') {Serial.println ("Button 8"); if (Number==0) Number=8; else Number = (Number*10) + 8; //Ditekan dua kali } 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; //Ditekan dua kali } if (key == '6') {Serial.println ("Button 6"); if (Number==0) Number=6; else Number = (Number*10) + 6; //Ditekan dua kali } if (key == '9') {Serial.println ("Button 9"); if (Number==0) Number=9; else Number = (Number*10) + 9; //Ditekan dua kali } if (key == 'A' || key == 'B' || key == 'C' || key == 'D') //Mendeteksi Tombol pada Kolom 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 kursor ke kolom 0, baris 1 lcd.print(Num1); lcd.print(action); lcd.print(Num2); if (result==true) {lcd.print(" ="); lcd.print(Number);} //Tampilkan hasil lcd.setCursor(0, 1); // set kursor ke kolom 0, baris 1 lcd.print(Number); //Tampilkan hasil }