Membuat Timer Permainan Catur Arduino Uno

Indobot Academy

Permainan catur seringkali menjadi perlombaan, dalam perlombaan tersebut pemain memiliki timer untuk berpikir dalam memilih pion yang akan berjalan. Kali ini kita akan mencoba membuat timer yang akan berguna dalam permainan catur.

1. Alat / Bahan
  • Arduino IDE                                     Download
  • Library: LiquidCrystal_I2C             Download
  • Arduino Uno                                    1 Buah
  • LCD                                                   1 Buah
  • I2C                                                    1 Buah
  • Button                                               3 Buah
  • Project Board                                  1 Buah
  • Kabel Jumper                                  Secukupnya

Segera dapatkan komponen elektronik silahkan temukan disini.

2. Skema Rangkaian

Gambar Rangkaian Membuat Timer Permainan Catur Arduino Uno

Keterangan:

  • 5V – VCC I2C
  • GND – GND I2C, GND Button1, GND Button2, GND Button3
  • SDA – SDA I2C
  • SCL – SCL I2C
  • D2 – Button1
  • D3 – Button2
  • D4 – Button3
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:
    Mencari Tahu Alamat I2C Pada Modul I2C
  7. Segera Lakukan proses uploading program
4. Sketch Program

Segera Dapatkan puluhan ebook gratis dengan registrasi melalui tombol di bawah!

 
/* Program Membuat Timer Permainan Catur Arduino Uno dibuat oleh Indobot */

#include <LiquidCrystal_I2C.h>  //Library LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); //Alamat I2C

#define p1 2      //Button player 1 pada pin D2
#define p2 3
#define ulang 4   //Button reset pada pin D4

long lastButton = 0; 
long delayAntiBouncing = 50;
unsigned long TSekarang;
unsigned long TAkhir;

int setmenit1 = 1;    //Set waktu main player 1
int setmenit2 = 1;
int detik1 = 0;
int detik2 = 0;

bool giliran1 = true;
bool done = true;

void setup(){
  pinMode(p1,INPUT_PULLUP);           //Setting I/O
  pinMode(p2,INPUT_PULLUP);
  pinMode(ulang,INPUT_PULLUP);
  lcd.init();                         //Mulai LCD
  lcd.backlight();                    //Nyalakan backlight
  lcd.setCursor(0,0);                 //Tampilan Awal
  lcd.print("  P1        P2  ");
}

void loop(){
  if (digitalRead(p1)==0 || digitalRead(p2)==0){        //Baca tombol
    if ((millis() - lastButton) > delayAntiBouncing){
      if(giliran1 && digitalRead(p1)==0){               //Jika player 1 menekan tombol, maka
        lcd.setCursor(0,0);
        lcd.print("  P1       >P2< ");
        done = false;
        giliran1 = false;                               //Jalankan waktu player 2
      }
      else if(!giliran1 && digitalRead(p2)==0){
        lcd.setCursor(0,0);
        lcd.print(" >P1<       P2  ");
        done = false;
        giliran1 = true;
      }
    }
    lastButton = millis();
  }
  else if (digitalRead(ulang)==0){                      //Ulang waktu jika reset ditekan
    setmenit1 = 1;
    setmenit2 = 1;
    detik1 = 0;
    detik2 = 0;
    done = true;
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("  P1        P2  ");
  }

  TSekarang = millis();
  if(TSekarang - TAkhir > 1000){    //Kurangi waktu 1 detik pada
    if(giliran1 && !done){          //player 1 jika giliran 1
      detik1--;
    }
    else if(!giliran1 && !done){    //player 2 jika giliran 2
      detik2--;
    }
    TAkhir = TSekarang;
  }

  if(detik1 < 0){
    detik1 = 59;
    setmenit1--;      //Kurangi menit setiap 60 detik
  }
  if(detik2 < 0){
    detik2 = 59;
    setmenit2--;
  }

  if(setmenit1 == 0 && detik1 == 0){        //Jika player 1 kehabisan waktu
    lcd.setCursor(0,0);
    lcd.print("  Waktu Habis   ");
    lcd.setCursor(0,1);
    lcd.print("--Player 2 Win--");
    done = true;
  }
  else if(setmenit2 == 0 && detik2 == 0){   //Jika player 2 kehabisan waktu
    lcd.setCursor(0,0);
    lcd.print("  Waktu Habis   ");
    lcd.setCursor(0,1);
    lcd.print("--Player 1 Win--");
    done = true;
  }
  else{                                     //Tampilkan waktu
    lcd.setCursor(1,1);
    lcd.print(setmenit1);
    lcd.print(":");
    lcd.print(detik1);
    lcd.print("  ");
    lcd.setCursor(11,1);
    lcd.print(setmenit2);
    lcd.print(":");
    lcd.print(detik2);
    lcd.print("  ");
  }
}

Kesimpulan:

Sistem timer permainan catur ini memiliki 3 tombol berupa tombol player 1, player 2 dan tombol reset. Ketika tombol player 1 ditekan timer player 2 akan mulai berjalan mundur, sebaliknya jika tombol player 2 ditekan timer untuk player 1 akan mulai berjalan. Jika waktu player 2 berjalan hingga habis batas waktu, player 1 akan menang, hal itu terjadi pula pada player 1

Ingin mengadakan pelatihan Arduino / IoT (Internet of Things) bersama Indobot?

Ingin Tahu Program Kami Lebih Lanjut?

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

Baca Juga

Bagikan:

Tags

Tinggalkan komentar

whatsapp whatsapp