sfe-trainer-arduino-project-11-papan-skor-lcd-dengan-input-tombol-dan-android

SFE Trainer Arduino Project 11 : Papan Skor LCD Dengan Input Tombol Dan Android

SFE Electronics 0 Comments 16-December-2018 10:49:41

Introduction

Bagi yang sering melihat atau mengikuti kegiataan olah raga, seperti sepak bola, bulutangkis, tenis, dll. Kita pasti mengetehui sistem point yang digunakan. Biasanya nilai/point ditampilkan pada papan nilai/ papan skore berukuran besar. Selain pemain mengetahui nilai, agar para penonton juga mengetahui nilai hasil dari pertandingan. Papan skore biasanya menggunakan papan secara manual, atau juga tedapat yang sudah lebih canggih menggunakan display LED besar.

Pada artikel ini akan saya bahasa pemrograman project papan skor dengan menggunakan modul SFE Trainer Arduino (LCD dan input tombol dan android), Berikut ini adalah contoh hasil dari papan skornya.

Part

beli

SFE Trainer Arduino

SFE Duino

Kabel Jumper Male - Female

Library File

https://github.com/SFEelectronics/Arduino_Library

Download aplikasi Android Score Board

 

Tutorial

Hubungkan masing-masing komponen sesuai dengan rangkaian diatas, dan pastikan sesuai dengan label module. Jangan lupa install terlebih dahulu library file yang dibutuhkan. Link dapat didownload diatas.

#include <LiquidCrystal.h>
#define bCLR 2
#define bRG  5
#define bLF  4
#define buzz 6

#define ON   HIGH
#define OFF  LOW

char BT;
int skrKiri, skrKanan, mnt, dtk;

//  Keadaan awal , sesuaikan dengan kebutuhan anda.
byte waktu = 2;    // 30 Menit
byte babak = 1;     // Babak Pertama
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);

void setup() {
  Serial.begin(38400);
  lcd.begin(16, 2);
  pinMode(bCLR, INPUT_PULLUP);
  pinMode(bRG, INPUT_PULLUP);
  pinMode(bLF, INPUT_PULLUP);
  mnt = waktu;
  dtk = 0;
}
void loop() {
  if (Serial.available() > 0) {
    BT = Serial.read();
  }
  if (digitalRead(bLF) == LOW || BT == 'A') {
    skrKiri++;
  }
  if (digitalRead(bRG) == LOW || BT == 'B') {
    skrKanan++;
  }
  if (digitalRead(bCLR) == LOW || BT == 'X') {
    mnt = waktu; dtk = 0; babak = 1;
    skrKiri = 0; skrKanan = 0;
  }

  lcdDisplay();
  dtk--;

  if (dtk < 0) {
    dtk = 59; mnt--;
  }
  if (mnt == 0 and dtk < 1 and babak == 1) {
    lcd.clear();
    lcdBreak();
    while (1) {
      if (Serial.available() > 0) {
        BT = Serial.read();
      }
      if (digitalRead(bCLR) == LOW or BT == 'X') {
        mnt = waktu;
        dtk = 0;
        babak = 2;
        break;
      }
    }
    lcd.clear();
  }
  if (mnt == 0 and dtk < 1 and babak == 2) {
    lcd.clear();
    finalScore();
    while (1) {
      if (Serial.available() > 0) {
        BT = Serial.read();
      }
      if (digitalRead(bCLR) == LOW or BT == 'X') {
        mnt = waktu;
        dtk = 0;
        babak = 1;
        skrKiri = 0;
        skrKanan = 0;
        break;
      }
    }
    lcd.clear();
  }
  BT = (char)0;
  delay(1000);
}

void lcdDisplay() {
  // Display Score
  lcd.setCursor(0, 0);
  lcd.print("SCORE");
  lcd.setCursor(0, 1);
  lcd.print(duaDigit(skrKiri));
  lcd.setCursor(2, 1);
  lcd.print('-');
  lcd.setCursor(3, 1);
  lcd.print(duaDigit(skrKanan));

  // Display Timer
  lcd.setCursor(6, 0);
  lcd.print("Time ");
  lcd.setCursor(11, 0);
  lcd.print(duaDigit(mnt));
  lcd.setCursor(13, 0);
  lcd.print(':');
  lcd.setCursor(14, 0);
  lcd.print(duaDigit(dtk));

  // Display Babak
  lcd.setCursor(6, 1);
  lcd.print("Round ");
  lcd.setCursor(13, 1);
  lcd.print(duaDigit(babak));
}

void lcdBreak() {
  lcd.setCursor(0, 0);
  lcd.print("  Babak Ke Dua  ");
  lcd.setCursor(0, 1);
  lcd.print("Klik OK  Babak:2");
}

void finalScore() {
  lcd.setCursor(0, 0);
  lcd.print("TEAM 1    TEAM 2");
  lcd.setCursor(7, 1);
  lcd.print("VS");
  lcd.setCursor(2, 1);
  lcd.print(duaDigit(skrKiri));
  lcd.setCursor(12, 1);
  lcd.print(duaDigit(skrKiri));
}

String duaDigit(byte nilai) {
  if (nilai < 10) {
    return "0" + String(nilai);
  }
  else {
    return String(nilai);
  }
}

Dari program diatas cara kerjanya, Display LCD akan menampilkan Nilai skor , timer dan juga babak. Disini terdapat 2 cara mengakses papan skor ini. Pertama dengan mmenggunakan inputan tombol yang terdapat pada module Tombol Kanan dan Kiri digunakan untuk menambah nilai dari skor pertandingan sesuai posisi team. Tombol tengah digunakan untuk mereset skor/ mengembalikan menjadi 0-0. Dan cara kedua dengan menggunakan aplikasi android yang dapat anda download dari link file dokumen diatas. Berikut ini adalah tampilan dari aplikasia androidnya.

SFE Score Board.Apk

Untuk penggunaanya seperti berikut:

1. Install aplikasi pada Smartphone Android anda

2. Buka aplikasi, jika terdapat notifikasi untuk mengaktifkan bluetooth klik yes

notifkasi3. Untuk mengkonekan pada modul bluetooth, klik icon Bluetooth dibagian atas aplikasi, maka akan 
list bluetooth yang sudah terpairing dengan perangkat anda.

BT list

4. Namun jika nama bluetooth modul anda belum terdapat pada perangkat anda, anda harus melakukan pairing terlebih dahulu dengan masuk menu setting bluetooth pada perangkat anda. Setelah proses scaning selesai dan tampil nama bluetooth modul anda, lakukan pairing dan jika diminta untuk memasukan password. Masukan password 1234 untuk standart modul, jika belum perna diganti. untuk mengganti password dan nama modul bluetooth HC-05 anda dapat mebacanya pada artikel AT Command Bluetooth HC-05 .

5. Jika aplikasi sudah terkoneksi, anda sudah dapat mengakses papan skor menggunakan perangkat Android anda.

Nilai timer dapat diatur melaluo program. diprogram atas bernilai int waktu 30 = 30 menit. Selanjutnya setelah waktu babak petama berakhir makan display akan menampilkan waktu istirahat. Untuk memulai babak kedua, klik tombol OK/tengah kemudian timer akan berjalan setelah babak kedua berakhir display akan menampilkan skor akhir. Untuk memulai ulang tekan tombol tengah. Nah sekian dulu tutorial kali ini, jika terdapat pertanyaan tinggalkan pesan pada kotak komentar dibawah. Semoga bermanfaat.