4th Project : Calculator

Pada proyek 4 ini kami membuat kalkulator sederhana dengan memanfaatkan LCD dan Keypad. Secara konsep, input yang akan digunakan berasal dari keypad. Sedangkan outputnya akan ditampilkan pada LCD. Komponen yang diperlukan dalam proyek ini adalah sebagai berikut.

  1. Arduino
  2. Breadboard
  3. Kabel USB
  4. Kabel Jumper
  5. LCD
  6. Potentiometer
  7. Keypad 4×4

Skema rangkaian yang digunakan adalah sebagai berikut.

Sket

Untuk memudahkan debuging lebih baik merangkai komponen mulai dari LCD untuk memastikan LCD sudah berfungsi dengan baik. Jika muncul karakter aneh di LCD, kemungkinan masih terdapat kesalahan rangkaian. Berikut ini merupakan gambar implementasi rangkaian yang digunakan.

implementasi_2

Dalam proyek ini kode program yang digunakan adalah sebagai berikut. Untuk dapat menggunakan keypad,  download library keypad.h di sini. Selain itu diperlukan pula library lcd yang dapdt diperoleh di sini.

#include <LiquidCrystal.h>//import lcd library
#include <Keypad.h>//import keypad library

LiquidCrystal lcd(5, 4, 3, 2, 1, 0); //lcd pins
const byte ROWS = 4; // four rows
const byte COLS = 4; // four columns

//define the keymap
char keys [ROWS] [COLS] = {
{‘1’, ‘4’, ‘7’, ‘X’},
{‘2’, ‘5’, ‘8’, ‘0’},
{‘3’, ‘6’, ‘9’, ‘=’},
{‘/’, ‘*’, ‘-‘, ‘+’}
};

byte rowPins[ROWS] = {9 ,8 ,7 ,6}; //connect keypad ROW1, ROW2, ROW3, ROW4 to these arduino pins
byte colPins[COLS] = {13, 12, 11, 10}; //connect keypad COL1, COL2, COL3, COL4 to these arduino pins

//create the keypad
Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

//variables declaration
boolean valOnePresent = false;
boolean next = false;
boolean final = false;
String num1, num2;
float ans;
char op;
float no1,no2;

void setup(){
lcd.begin(16,2);
lcd.setCursor(2,0);
lcd.print(“Hello World!”);
delay(2500);
lcd.clear(); //clears the LCD screen and positions the cursor in the upper-left corner.
}

void loop(){
char key = myKeypad.getKey();
if (key != NO_KEY && (key==’1’||key==’2’||key==’3’||key==’4’||key==’5’||key==’6’||key==’7’||key==’8’||key==’9’||key==’0′)){
if (valOnePresent != true){
num1 = num1 + key;
int numLength = num1.length();
lcd.setCursor(15 – numLength, 0); //to adjust one whitespace for operator
lcd.print(num1);
}
else {
num2 = num2 + key;
int numLength = num2.length();
lcd.setCursor(15 – numLength, 1);
lcd.print(num2);
final = true;
}
}
else if (valOnePresent == false && key != NO_KEY && (key == ‘/’ || key == ‘*’ || key == ‘-‘ || key == ‘+’)){
if (valOnePresent == false){
valOnePresent = true;
op = key;
lcd.setCursor(15,0); //operator on right corner
lcd.print(op);
}
}
else if (final == true && key != NO_KEY && key == ‘=’){
no1=num1.toInt();
no2=num2.toInt();
if (op == ‘+’){
ans = no1 + no2;
}
else if (op == ‘-‘){
ans = no1 – no2;
}
else if (op == ‘*’){
ans = no1 * no2;
}
else if (op == ‘/’){
ans = no1/no2;
}
lcd.clear();
lcd.setCursor(15,0);
lcd.autoscroll();
lcd.print(ans);
lcd.noAutoscroll();
}
else if (key != NO_KEY && key == ‘X’){
lcd.clear();
valOnePresent = false;
final = false;
num1 = “”;
num2 = “”;
ans = 0;
op = ‘ ‘;
}

}

Sumber

Perlu diperhatikan bahwa dalam program diatas jenis bilangan yang digunakan yaitu memiliki tipe float. Jika ingin mengganti dengan menbggunakan bilangan integer maka diperlukan penggantian program pada deklarasi variabel ans yang sebelumnya float menjadi integer.

Video di bawah ini memperlihatkan demonstrasi penggunaan kalkulator sederhana dengan operasi matematika sederhana (tambah, kurang, kali, bagi).

Permasalahan yang dihadapi yaitu sebagai berikut.

  • LCD menampilkan karakter aneh. Hal ini disebabkan oleh rangkaian yang masih salah. Solusinya yaitu dengan memperbaiki rangkaian dan melakukan compile dan upload program kembali
  • Ketika mencoba mengubah bilangan menjadi tipe float, tidak ditemukan method .toFloat() pada kelas String.

Proyek ini dibuat oleh :
Arsi Amallah Binhaq (18214013)
Santo Wijaya (18214028)
Dzaky El Fikri (18214038)

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s