Jumat, 10 Maret 2017

Project Belajar Arduino Part 3 : Membuat Countdown Timer Dengan LCD dan Keypad

Langkah 1: Perangkat yang Dibutuhkan


Untuk membuat project ini, kita memerlukan beberapa perangkat diantaranya:
1. Sebuah PC yang terinstall Arduino IDE
2. Arduino atau Arduino kompatibel, paling disukai Arduino Pro Mini.
3. Sebuah LCD dengan atau tanpa backlight.
4. Trimport 50K Ohm
5. Beberapa kabel jumper.
6. USB FTDI/ USB TTL PL2303HX
7. Keypad 3x4 - 1 buah

Langkah 2: Merangkai Hardware Countdown

1. Pasangkan semua komponen seperti pada gambar berikut




Nah, jadi secara umum kita memasangkan LCD (sepaket sama Trimport) ke Arduino, lalu memasangkan keypad ke Arduino, lalu menghubungkan keduanya melalui program sehingga kita bisa memasukkan input dari keypad dan melihat output di LCD. Pastikan pin yang terhubung sudah benar dan kabel-kabel terhubung dengan baik. Kesalahan yang umum terjadi adalah salah penempatan kabel atau ada kabel yang terlalu dekat dan bersinggungan.

2. Jalankan Arduino IDE, masukkan source code di bawah

3. Pastikan pin yang terdefinisi di program sama dengan pin pada rangkaian. Jika sudah, lakukan verify dan upload.

4. Sekarang Anda punya timer. Start the countdown!

Tambahan: Sebenarnya lebih keren lagi jika saat timer menunjukkan angka nol, akan muncul bunyi alarm.

Langkah 3: Cara Kerja

Timer bisa disetting waktunya dengan keypad. Angka-angka di keypad untuk memasukkan angka masukan, tanda '#' untuk menjalankan timer, dan tanda '*' untuk membatalkan.
  

Source Code


// import dari library. Pastikan sudah ada keduanya.
#include <LiquidCrystal.h>
#include <Keypad.h>

//Pendefinisian konstanta untuk keypad
const int NRow = 2; //Jumlah baris LCD
const int NCol = 16; //Jumlah kolom LCD
const byte ROWS = 4; //empat baris keypad
const byte COLS = 3; //tiga kolom keypad
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'+','0','='}
};

// inisialisasi pin
LiquidCrystal lcd(0, 1, 5, 4, 3, 2); //pin untuk LCD
byte rowPins[ROWS] = {12, 11, 10, 9}; //pin untuk row keypad
byte colPins[COLS] = {8, 7, 6}; //pin untuk column keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

//deklarasi variabel
boolean valOnePresent = false;
boolean next = false;
boolean final = false;
String num1, num2;
int timer;
char op;


void setup() {
  // setup untuk awalan tampilan di LCD
  lcd.begin(NCol, NRow);
  lcd.setCursor(1,0);
  lcd.print("Timer CountDown");
  delay(2000);
  lcd.clear();
  lcd.setCursor(1,0);
  lcd.print("Imam Sholahudin");
  lcd.setCursor(1,1);
  lcd.print("Mahmudi");
  delay(3000);
  lcd.clear();
}

void loop(){
  char key = keypad.getKey();
  //set durasi
  lcd.setCursor(1,0);
  lcd.print("Set Durasi: ");
  lcd.setCursor(1,1);
  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){
      lcd.setCursor(1,1);
      num1 = num1 + key;
      int numLength = num1.length();
      lcd.setCursor(1, 1);
      lcd.print(num1);
    }
    else {
      num2 = num2 + key;
      int numLength = num2.length();
      lcd.setCursor(15 - numLength, 1);
      lcd.print(num2);
      final = true;
    }
  }
  //set!
  if (key == '='){
    timer = num1.toInt();
    for(int i=0;i=timer;i++){  
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Sisa waktu: ");
      lcd.setCursor(0,1);
      lcd.print(timer--);
      delay(1000);
    }
    lcd.clear();
    lcd.setCursor(1,0);
    lcd.print("Waktu habis!");
    timer=0;
    num1="0";
    delay(3000);
  }
  //batal
  else if (key == '+'){
    lcd.clear();
    valOnePresent = false;
    final = false;
    num1 = "";
    num2 = "";
    timer = 0;
    op = ' ';
  }
}

Sumber:

http://saputro-yogi.blogspot.co.id/2014/03/tutorial-arduino-membuat-countdown.html

Tidak ada komentar:

Posting Komentar