Minggu, April 28, 2013

Pengontrolan Led Dengan Tombol Tekan Menggunakan Arduino

Assalamu ‘alaikum sobat... sehat semua...? Alhamdulillah, tetap jalani hidup dengan penuh semangat.. : ) Jangan buat diri menjadi susah, kan dari Taman Kanak-kanak sudah dijelaskan “Susah itu tak ada gunanya...” hehe... : )

Masih berhubungan dengan Arduino, sekarang kita akan mencoba melakukan pengontrolan objek (dalam hal ini lampu Led) dengan menggunakan sebuah input, pada kesempatan ini yang akan kita gunakan sebagai input adalah push button (kalau diterjemahkan ke dalam bahasa Indonesia artinya tombol tekan ya...?)

Rangkaian dasarnya persis sama dengan pengontrolan Led menggunakan Arduino, hanya saja disini menambahkan sebuah push button, push button dikenal juga dengan sebutan tactile switch, push button yang akan kita gunakan sekarang adalah push button dengan 4 pin, gak tau apakah ada push button dengan 2 pin atau tidak, tapi walaupun 4 pin yang tampak di luar sebenarnya hanyalah 2 pin karena 2 pin saling terhubung. Skema dari push button/tactile switch seperti gambar di bawah ini:

Pin 1 terhubung dengan pin 2, dan pin 3 terhubung dengan pin 4. Ya, jika kita membongkar sebuah push button, seperti itulah kira-kira yang akan kelihatan. Ketika push button ditekan maka pin 1-2 akan terhubung dengan pin 3-4.

Untuk rangkaian push buttonnya, salah satu pin dari push button, misalnya pin 1&2 dihubungkan ke power pin sumber tegangan 5 Volt, kemudian pin 3&4nya dihubungkan dengan rangkaian paralel dari digital pin input dan power pin ground.

Rangkaian pengontrolan Led normal pada Arduino kira-kira seperti berikut:

Gambar 1
Keterangan:
  1. Salah satu pin digital (mulai dari 0 sampai 13, pada contoh ini kita akan gunakan pin digital 13)
  2. Resistor
  3. Led
  4. Pin digital ground (disamping pin digital nomor 13)

Sementara rangkaian push button pada Arduino adalah seperti berikut:

Gambar 2
  1. Pin power 5 Volt
  2. Resistor
  3. Push button
  4. Salah satu pin digital (pada contoh ini kita akan gunakan pin digital 2)
  5. Pin power ground

Pin digital pada gambar 1 dan pin digital pada gambar 2 tidak boleh sama, dengan kata lain rangkaian Led dan rangkaian push button menggunakan pin digital yang berbeda (pin digital kan banyak tu, ada 14...)

Kita akan gunakan saja Red Led diffused 5 mm, maka resistor yang akan kita gunakan adalah 150 Ω. Lihat pembahasannya pada artikel berikut!

Untuk push button, menurut Tactile Switch datasheet, besar tahanannya adalah 100 mΩ, sementara tegangan keluar dari Arduino adalah 5 Volt, maka besar arus yang mengalir pada tactile switch (push button) dan arduino adalah:

Menurut Tactile Switch datasheet, tahanan kontaknya aman dialiri arus 100 mA, berarti arus 50 A tidak aman untuk Tactile Switch. Sementara untuk Arduino arus maksimal yang diizinkan adalah hanya 40 mA, berarti arus 50 A tidak aman untuk Arduino. Untuk itu dibutuhkan suatu tahanan/resistor agar arus yang mengalir di Tactile Switch dan Arduino sesuai dengan besarnya arus yang diizinkan.

Kita misalkan saja arus yang akan mengalir adalah 20 mA untuk Tactile Switch dan Arduino agar aman untuk keduanya, maka nilai resistor yang akan dibutuhkan adalah:

Jadi didapat nilai resistor sekitar 250 Ω aman jika kita digunakan dalam rangkaian tactile switch.

Rangkaiannya dan hasilnya dapat teman2 lihat pada video di bagian akhir nanti. Sahabat yakin, teman2 semua dapat merangkainya dengan mudah... : )

Sketchnya adalah sebagai berikut:

int ledPin = 13;
int inPin = 2;
int val = 0;

void setup {
  pinMode(ledPin, OUTPUT);
  pinMode(inPin, INPUT);
}

void loop() {
  val = digitalRead(inPin);
  if (val == HIGH) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}


digitalRead() adalah kode untuk membaca nilai dari suatu pin digital tertentu, yang akan bernilai HIGH atau LOW, sintaksnya adalah:
digitalRead(pin);

Pada contoh ini, kode digitalRead() adalah membaca sebuah objek/benda yang terhubung pada pin digital nomor 2, jika objek tersebut dalam posisi terhubung maka digitalRead(inPin) akan bernilai HIGH dan jika objek tersebut dalam posisi tidak terhubung maka digitalRead(inPin) akan bernilai LOW.

Pada saat push button ditekan maka objek akan tersambung dari sumber tegangan 5 Volt terus menuju ke digital pin nomor 2 dan terus menuju ke pin power ground maka digitalRead(inPin) akan bernilai HIGH. Pada sketch jika val bernilai HIGH maka Led akan hidup.

Dan pada saat push button tidak ditekan maka objek tidak akan tersambung, arus sudah terputus di antara kedua kaki push button maka digitalRead(inPin) akan bernilai LOW. Pada sketch jika val tidak bernilai HIGH maka Led akan mati.

Awalnya val didefinisikan bernilai 0, kenapa didefinisikan bernilai 0? wah gak tau juga nih teman, kalau lihat sumbernya, katanya sih untuk menaruh nilai yang dibaca dari digitalRead(), untuk sementara kita terima aja dulu seperti ini syaratnya.

Untuk kode if... then... else..., sepertinya mudah dipahami, karena sama dengan pemahaman rumus if... then... else... pada microsoft office excel dan di bahasa pemrograman lainnya...

Cara merakit rangkaiannya dan hasilnya dapat dilihat pada video berikut:



Yang diatas atas sketch pengontrolan Led yang mana Led akan hidup jika push button ditekan dan akan mati jika push button dilepas, bagaimana kalau kita ingin membuat menjadi sebaliknya? Yaitu Led akan hidup jika push button dilepas dan akan mati jika push button ditekan? Jawabannya cukup mudah yaitu tinggal mengubah sedikit kode sketch sehingga menjadi seperti berikut:

int ledPin = 13;
int inPin = 2;
int val = 0;

void setup {
  pinMode(ledPin, OUTPUT);
  pinMode(inPin, INPUT);
}

void loop() {
  val = digitalRead(inPin);
  if (val == LOW) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}


Mohon koreksi ya kalau ada salah, dan jangan sungkan bertanya kalau ada yang dirasa kurang mengerti...

Moga-moga aja bermanfaat...

Assalamu ‘alaikum : )

0 komentar: