Me 18211042

ng-ARDUINO yang asik di kuliah IMKA


ritual setelah praktikum - foto selfie bareng kelompok lain

Praktikum kali ini lebih menarik dari praktikum sebelumnya. Jika pada praktikum sebelumnya sudah memakai display, sekarang dilanjutkan dengan penggunaan kontrol. Device yang digunakan untuk kontrol adalah matrix keypad 3x4. Jadi untuk praktikum kali ini kami diminta untuk implementasi ke ARDUINO menggunakan device kontrol tersebut, terserah bentuknya mau gimana.

Ide awal kelompok kami adalah membuat permainan, semacam Flappy Bird. Ternyata eh ternyata bakalan susah dan kompleks untuk nge-random rintangannya. Walhasil kami nggak jadi membuat permainan. Akhirnya kami memutuskan untuk membuat kalkulator. Banyak sebenarnya kode di internet untuk membuat kalkulator, tapi nggak menantang bro. Kami memutuskan untuk membuat sendiri kodenya. Yeah.

Rangkaian


Pertama kali, kami khawatir bakalan cukup atau tidak pin untuk input/output. Setelah dihitung-hitung ternyata cukup. Karena rangkaiannya bakal rumit kalau digambarkan, kami tidak sertakan gambarnya. Tapi pemasangannya sederhana banget. Lihat gambar di bawah ini untuk melihat keterangan bagian-bagian LCD dan Matrix keypad. Lalu lihat keterangan di bawahnya untuk lokasi pin-nya.


penamaan pin terurut dari atas (*) sampai bawah (#)



nama pin di sebelah kiri kabel
Berikut adalah daftar pasangan pin LCD dan Matrix keypad di atas dengan pin di ARDUINO :
  • row 0 = 0
  • row 1 = 13
  • row 2 = 12
  • row 3 = 11
  • col 0 = 10
  • col 1 = 9
  • col 2 = 8
  • Gnd dan R/W = ground
  • Vcc = 5V
  • V0 = pin tengah potentiometer
  • Rs = 7
  • E = 6
  • D4 = 5
  • D5 = 4
  • D6 = 3
  • D7 = 2
                 

hasil rangkaian

Kode program


// include library LCD dan Keypad
#include <keypad.h>
#include <liquidcrystal.h>

// Mendefinisikan LCD
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const int inPin = 0;

// Mendefinisikan Keypad
const byte ROWS = 4; // 4 baris
const byte COLS = 3; // 3 kolom

// Definisi posisi kunci, sesuaikan dengan gambar
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};

// Hubungkan dengan pin di ARDUINO
byte rowPins[ROWS] = { 0, 13, 12, 11 };
byte colPins[COLS] = { 10, 9, 8 };

// Membuat objek Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

// Definisi variabel-variabel
int var1 = 0;
int var2 = 0;

int no_operan = 0; // nomor operator
char operan=' '; // operator
char operans[4] = {'+', '-', '/', 'x'}; // isi operator

boolean is_var1 = true; // untuk menentukan apakah sedang dalam var1?

String var1_str; // penampung var1
String var2_str; // penampung var2

// inisiasi
void setup()
{
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
}

// loop utama
void loop()
{
  char key = kpd.getKey(); // mendapatkan posisi key yang ditekan
  if(key)  // cek validasi
  {

    // jika pager maka hapus semuanya
    if(key == '#'){
      lcd.clear();
      var1_str="";
      var2_str="";
      operan=' ';
      var1=0;
      var2=0;
    }

    // jika angka yang ditekan
    if((key != '*')&&(key != '#')){
      if((is_var1)&&(operan == ' ')){ // variabel 1
        var1_str += key;
        lcd.print(key);
      }else{ // variabel 2
        is_var1=false;
        var2_str += key;
        lcd.print(key);
      }
    }

    // jika yang ditekan bintang, untuk menentukan operator
    if(is_var1){
      if((key == '*')&&(var1_str != "")){ // tekan pertama kali untuk ganti oprator
        lcd.setCursor(0, 1);
        operan=operans[no_operan];
        lcd.print(operans[no_operan]);
        no_operan++;
        if(no_operan>3){
          no_operan=0;
        }
      }
    }else{ // tekan kedua kali untuk hasil operasi
      if((key == '*')&&(var2_str != "")){
        var1 = var1_str.toInt();
        var2 = var2_str.toInt();
        if(operan == '+'){
          var1 = var1+var2;
        }else if(operan == '-'){
          var1 = var1-var2;
        }else if(operan == '/'){
          var1 = var1/var2;
        }else if(operan == 'x'){
          var1 = var1*var2;
        }
        lcd.clear();
        var2_str="";
        operan=' ';
        lcd.setCursor(0,0);
        lcd.print(var1);
        is_var1=true;
      }
    }
    Serial.println(key);
  }


Hasil praktikum



pertama kali coba keypad dan ditampilkan ke LCD



kalkulator pertama kali, hitungan kedua ngaco


kalkulator kedua, sukses. walaupun cuma bisa sekali hitung

Terima kasih
Muhammad Fatoni / STI / 18211042

0 comments :

Post a Comment