Monday, September 7, 2015

Membuat Stop Stopwatch Arduino




Stopwatch adalah alat yang digunakan untuk mengukur lamanya waktu yang diperlukan pada suatu kegiatan, misalnya: berapa lama seorang pelari memutari lapangan sepak bola, atau berapa waktu yang dibutuhkan kendaraan mencapai jarak dari titik A ke titik B. Stopwatch dibagi menjadi2 jenis yaitu stopwatch digital dan stopwatch analog.
Stopwatch digital dan analog mempunyai ketelitian yang berbeda-beda,  analog memiliki batas ketelitian mencapai 0,1 detik sedangkan Stopwatch digital memiliki batas ketelitian hingga 0,01.
Gambar Stop watch

Pada tutorial kali ini saya akan menjelaskan step-step membuat stopwatch dengan arduino. Komponen-komponen yang dibutuhkan adalah
1.  1x Arduino Uno
2.  1x LCD Keypad Shield
3.  1x USB A

Gambar Komponen yang dibutuhkan 
Langkah selanjutnya adalah colokkan LCD shield ke board arduino dan masukkan port usb ke komputer, buka arduino dan masukkan source code berikut :
/*
Bahar Setiawan
7 September 2015
*/

// memanggil librari
#include <SPI.h>
#include <LiquidCrystal.h>
// konfigurasi lcd
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
unsigned long start, finished, elapsed;
boolean r = false;
// Variabel untuk jeda waktu bounching
long lastButtonPressTime = 0;
long debounceDelay = 50;

void setup()
{
lcd.begin(16, 2); // inisialisasi lcd (16 kolom, 2 baris)

lcd.setCursor(4, 0); // set the cursor to first character on line 1 - NOT needed (it sets automatically on lcd.begin()
lcd.print("Arduino");
lcd.setCursor(3, 1);
lcd.print("StopWatch");
delay(2000); // menunggu 2 detik
lcd.clear(); // clear lcd display
lcd.setCursor(3,0);
lcd.print("Bahar Setiawan");
lcd.setCursor(1,1);
lcd.print("Arif Hidayat");
delay(2000);
lcd.clear();
lcd.print("Press select for");
lcd.setCursor(2, 1);
lcd.print("Start & Stop");
}

void loop()
{
CheckStartStop();
DisplayResult();
}

void CheckStartStop()
{
int x = analogRead (0);
if (x < 800 && x > 600 )
{
if ((millis() - lastButtonPressTime) > debounceDelay)
{

if (r == false)
{
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Time Past");
start = millis();
}
else if (r == true)
{
lcd.setCursor(2, 0);
lcd.print(" Final Time ");
}
r = !r;
}
lastButtonPressTime = millis();
}
}

void DisplayResult()
{
if (r == true)
{
finished = millis();
float h, m, s, ms;
unsigned long over;


elapsed = finished - start;

h = int(elapsed / 3600000);
over = elapsed % 3600000;
m = int(over / 60000);
over = over % 60000;
s = int(over / 1000);
ms = over % 1000;

lcd.setCursor(0, 1);
lcd.print(h, 0);
lcd.print("h ");
lcd.print(m, 0);
lcd.print("m ");
lcd.print(s, 0);
lcd.print("s ");
if (h < 10)
{
lcd.print(ms, 0);
lcd.print("ms ");
}
}
}

Semoga Bermanfaat....!

Sunday, July 26, 2015

Kontrol Arduino Melalui Unity

Biasanya game engine unity hanya dipakai dalam pembuatan game tanpa banyak yang tau jika software game engine tersebut dapat juga dikoneksikan dengan hardware. Pada tulisan kali ini saya akan menjelaskan cara mengendalikan lampu led melalui unity? Apa itu unity? Unity adalah adalah software game engine atau aplikasi untuk membuat game, baik game 2d maupun 3d. Apa sajakah yang diperlukan dalam pembuatan project kali ini, ya tentu saja software unity dan modul arduino, beberapa led dan komponen pendukung lainya. Pada tutorial kali ini saya menggunakan unity 4.1.5 dan modul arduino uno r3.
Untuk bahasa pemprograman unity yang saya pakai adalah c# boleh juga memakai bahasa lain seperti java dan boo. O iya jangan lupa instal terlebih dahulu api untuk sinkronisasi arduino dengan unity minimal api/net framework versi 2 ke atas. Pada gambar di bawah ini adalah rangkaian arduino dan beberapa led.

Gambar rangkaian arduino dan led

Gambar rangkaian jadi
Setelah modul dan beberapa led selesai di rangkai sekarang waktunya untuk memulai pemprograman unity dan arduino. Anda membutuhkan file RYG.ino pada program arduino dan sebuah kompiler. Cara kerja pada project kali ini adalah led akan berubah setiap detik. Berikut ini script pada program arduino
int gLed = 10; //pin nomor 10 pada modul arduino
int yLed = 11; // Pin 11
int rLed = 12; // Pin 12

void setup() {
pinMode(gLed, OUTPUT); //seting semua pin led sebagai output
pinMode(yLed, OUTPUT);
pinMode(rLed, OUTPUT);

digitalWrite(gLed, LOW);//pesan untuk mematikan semua led
digitalWrite(yLed, LOW);
digitalWrite(rLed, LOW);
}

void loop() {

digitalWrite(gLed, HIGH); //led berwarna hijau menyala
delay(1000); // Waits a second
digitalWrite(gLed, LOW); //led berwarna hijau mati
digitalWrite(yLed, HIGH); // led berwarna kuning menyala
delay(1000); // menunggu jeda beberapa detik
digitalWrite(yLed, LOW); // led warna kuning mati
digitalWrite(rLed, HIGH); //led warna merah menyala
delay(1000);
digitalWrite(rLed, LOW);
}

Jika semua program bekerja dengan baik sekarang beralih ke pemprograman unity. Diakhir tulisan saya akan sertakan file zip. Anda dapat mendownloadnya pada link tersebut. Setelah anda download buka file tersebut pada lembar kerja unity akan tampil 3 kotak warna merah, hijau dan kuning. Ketika anda play project tersebut maka kotak-kotak tersebut akan berotasi.
      File RYGFromUnity.ino berbeda dari file sebelumnya. Pertama yang harus anda catat adalah penggunaan serial.begin(9600). Ini yang akan menjadikan data dapat diterima oleh kedua software tersebut, dan juga dapat dipergunakan untuk debugging,  seperti pada debugging unity akan tetapi lebih cenderung ke beberapa bit.
      Selanjutnya yang tak kalah penting adalah Serial.readBytesUntil(lf, myCol, 1); fungsi tersebut yang menyebabkan arduino dapat membaca beberapa data  yang datang melalui serial sehingga salah satu karater dapat terdeteksi. Sebenarnya kadang-kadang dengan data ini dapat juga dibandingkan. Saya akan lanjutkan tulisannya lain kali

Tuesday, July 14, 2015

Pemprograman LCD 16 X 2 Dengan Modul Arduino



Pada kesempatan kali ini saya akan menjelaskan bagaimana mengontrol lcd 16 x2 dengan menggunakan modul arduino. Tidak seperti dulu untuk mengendalikan lcd harus membuat code-code khusus sesuai dengan lcd tapi sekarang seiring perkembangan zaman code-code tersebut sudah diringkas menjadi sebuah library sehingga programmer sudah tidak direpotkan lagi tinggal memanggil library tersebut dan sedikit konfigurasi pin-pin mana yang akan dihubungkan antara lcd dengan microcontroller sudah dapat menampilkan karakter ke dalam lcd.
Sebelum melakukan programming sebaiknya terlebih dahulu anda rakit komponen-komponen pendukung sehingga nantinya langsung dapat dilihat hasilnya. Berikut ini adalah konfigurasi pin pada lcd dan modul arduino
1.  Pin RS pada LCD dihubungkan ke pin digital nomor 12
2.  Pin enable LCD dihubungkan ke pin digital nomor 11
3.  Pin LCD D4 ke pin digital nomor 5
4.  Pin LCD D5 ke pin digital nomor 4
5.  Pin LCD D6 ke pin digital nomor 3
6.  Pin LCD D7 ke pin digital nomor 2


#include <LiquidCrystal.h>
//inisialisasi library berserta pin yang akan digunakan
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // konfigurasi baris dan kolom lcd
  lcd.begin(16, 2);
  // menampilkan pesan pada lcd
  lcd.print("hello, world!");
}

void loop() {
  // set kurson ke kolom 0 dan pada baris ke 1
  lcd.setCursor(0, 1);
  lcd.print(millis()/1000);
}


Gambar Tampilan LCD Hello World
karakter dapat juga di geser ke dari kiri ke kanan ataupun dari kanan ke kiri, Berikut ini penjelasan fungsi kaki pada lcd 16 x2.
1.  pin RS (register select) berfungsi sebagai kendali/kontrol lcd, dimana memori lcd dapat ditulis sebuah data. Kamu dapat memilih salah satu data register tersebut.
2.  Pin R/W berfungsi untuk akses baca tulis data.
3.  Pin E (Enable), berfungsi sebagai Enable Clock LCD, dengan logika 1 setiap kali pengiriman atau pembacaan data. Jika menggunakan 8 bit (semua pin dipakai/ disambungkan pada mikrokontroler) maka hanya membutuhkan 1 siklus enable, tetapi jika menggunakan 4 bit (hanya DB4-DB7 yang disambungkan) maka membutuhkan 2 suklis enable.
Sekian tutorial kali ini