Kamis, 03 Maret 2016

Percobaan Arduino UNO 3 - Kalkulator

Pada postingan kali ini, saya akan menjelaskan tentang percobaan ketiga kelompok saya menggunakan Arduino seri UNO, yaitu membuat kalkulator sederhada.

Alat-alat yang dibutuhkan meliputi:
  • Arduino UNO (1 set)
  • BreadBoard (1 buah)
  • Keypad 4x4 (1 buah)
  • LCD (1 buah)
  • Resistor 220 ohm (1 buah)
  • Potensiometer 10 kilo ohm
  • Kabel jumper secukupnya
  • Laptop
 Berikut adalah langkah-langkah pengerjaannya:

1. Susun rangkaian berikut kabel jumpernya seperti gambar di bawah ini:


 Gambar 1: Ilustrasi dari Implementasi Rangkaian

2. Sambungkan Arduino pada PC.

3. Masukkan source code berikut ini:
 ---
#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] = {
  {'7', '4', '1', 'X'},
  {'8', '5', '2', '0'},
  {'9', '6', '3', '='},
  {'/', '*', '-', '+'}
};
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;
int ans;
char op;

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 == '='){
    if (op == '+'){
      ans = num1.toInt() + num2.toInt();
    }
    else if (op == '-'){
      ans = num1.toInt() - num2.toInt();
    }
    else if (op == '*'){
      ans = num1.toInt() * num2.toInt();
    }
    else if (op == '/'){
      ans = num1.toInt() / num2.toInt();
    }  
      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 = ' ';
  }
}

---

4. Compile dan run code. Maka seharusnya kalkulator dapat berjalan dengan baik.

Seharusnya...

Ya, kami gagal mengerjakannya.

Untuk lebih jelasnya, berikut adalah video hasil pengerjaan kami:
---

---
Untuk kendala yang kami alami, ada banyak. Sebelumnya mohon maaf pada percobaan yang satu ini saya tidak dapat terlibat langsung dalam pengerjaannya sehingga saya hanya akan me-list semua temuan yang teman saya temukan.

Kendala yang ditemukan(oleh teman saya Ifan):

1. Kabel jumper yang kurang bagus sehingga dalam transmisi data kurang baik
2. Gigi pin arduino yang tidak menggigit sehingga kabel jumper mudah terlepas
3. LCD yang tidak disolder sehingga nyala mati ketika dijalankan karena mudah terlepas dari kabel jumper
4. IDE Arduino yang error tidak bisa upload source code ke dalam arduino
5. Kesalahan pemasangan pin sehingga output LCD dan keypad tidak sesuai dengan yang seharusnya
6. Potensiometer yang tidak berjalan dengan baik sehingga tulisan LCD tidak tampak

Referensi percobaan ini:

Well, saya rasa cukup untuk postingan kali ini.

Fikriansyah Adzaka
18213001

Tidak ada komentar:

Posting Komentar