Selasa, 06 Januari 2015

Arduino dan saklar

link menuju latihan sesi 2
link menuju latihan saklar yang lain
link khusus latihan khusus
Sekarang Marilah kita berlatih Mikrokontroller Arduino dengan menggunakan saklar sebagai inputnya untuk menghidupkan led.
Alat yang di perlukan  :

- Arduino Uno
- Saklar digital 1 buah ( Tactile_switches )
- Led
- Resistor 1 kilo ohm  1 buah
- BreadBoard
- Kabel Jumper

Tactile_switches             Led                     Bredboard

Saklar digital dan resistor 1 Kilo Ohm kita rangkai menjadi rangkaian saklar.


Rangkaian Saklar Cara kerjanya adalah  :
*  Waktu belum di tekan Pin Digital Arduino akan menerima Logika low atau tegangan 0 Volt
*  Waktu Saklar di tekan Pin Digital Arduino akan menerima Logika high atau tegangan 5 Volt

Rangkai komponen elektronik di breadboard yang kemudian hubungkan dengan Arduino. Rangkaiannya seperti dibawah ini..

Rangkaian elektroniknya adalah seperti dibawah ini.



contoh dasar latihannya tersedia dalam ide nya coba saja
-----------------------------------------------------------------------------

/*
  Button

 Turns on and off a light emitting diode(LED) connected to digital
 pin 13, when pressing a pushbutton attached to pin 2.
 The circuit:
 * LED attached from pin 13 to ground
 * pushbutton attached to pin 2 from +5V
 * 10K resistor attached to pin 2 from ground

 * Note: on most Arduinos there is already an LED on the board
 attached to pin 13.
 created 2005
 by DojoDave <http://www.0j0.org>
 modified 30 Aug 2011
 by Tom Igoe
 This example code is in the public domain.
 http://www.arduino.cc/en/Tutorial/Button
 */

// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  }
  else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

----------------------------------------------------------------------------------
 jika program ini dicoba dimasukan ke dalam mikrokontroller maka lampu led dapat dinyalakan oleh saklar dengan cara menekan tombol saklarnya, jika tombol dilepas maka lampunya juga akan mati..

wah repot yaaaa. jadi supaya led menyala terus maka kita harus terus menekan saklarnya.. hehehehe

latihan di atas cukup bagus untuk sebuah percobaan awal. ada sebuah pertanyaan ringan yaitu jika ingin lampu tetap menyala maka harus bagaimana...?.. jawabannya adalah :
1. Ditekan terus saklarnya
2. Programnya di modifikasi

Nah sekarang bagaimanakah caranya agar kita dapat merancang agar hasilnya saklar akan menyalakan led sekali tekan dan akan tetap hidup bila saklar kita lepas. dan jika kita tekan saklar sekali lagi



Nah coba lakukan percobaan berikutnya di bawah ini. rangkaian elektronikanya sama, hanya saja listing programnya berbeda.
listing programnya adalah seperti dibawah ini yaaaaa....
------------------------------------------------------------------------------------

 int d1,d2,d3;
void setup (){
  pinMode(2,INPUT); 
  pinMode(13,OUTPUT); 
}
void loop()  {
  d2=digitalRead(2);
  if (d2 != d1)  {
    if (d2==1)  {
      if (d3==1) d3 =0;
      else d3 = 1; }
     d1=d2; }
   digitalWrite(13,d3);
delay(99);
}

--------------------------------------------------------------------------------
Setetlah rekan rekan coba, maka akan mendapati hasil yang berbeda pada alat. led akan tetap hidup walaupun saklar tekan sudah tidak di tekan.



bila rekan rekan yang baru mempelajari mikrokontroller tentu akan bingung dengan listing program di atas. Jika rekan rekan ingin lebih faham maka baiklah akan kang mas coba menjelaskan listing program nya. untuk lebih memudahkan maka kang mas rubah dulu pemrogramannya agar lebih mudah di mengerti. nah sekarang coba perhatikan listing program di bawah ini. Program ini sama seperti program di atas. hasilnya juga sama

--------------------------------------------------------------------------------

int Kondisi1=0;
 int Kondisi2 =0;
 int KondisiLampu = 0;
 int Saklar=10;
 int Led=13;
void setup (){
  pinMode(Saklar,INPUT);
  pinMode(Led,OUTPUT);
}
void loop()  {
  Kondisi1=digitalRead(Saklar);
  if (Kondisi1 != Kondisi2)  {
    if (Kondisi1 == 1)  {
      if (KondisiLampu == 0) KondisiLampu = 1;
      else KondisiLampu = 0 ; }
     Kondisi2 = Kondisi1 ; }
   digitalWrite(Led,KondisiLampu);
delay(99);
}

--------------------------------------------------------------------------------
Program inti yang berjalan ada bagian loop
  Kondisi1=digitalRead(Saklar);  Pertama tama Program akan membaca kondisi saklar apakah ditekan ataukah tidak. nilai hasil pembacaan ini disimpan dalam variabel kondisi1
if (Kondisi1 != Kondisi2)  { Kedua nilai kondisi 1 dibandingkan dengan nilai kondisi2 bila nilainya sama maka tidak masuk ke baris program berikutnya sampai tanda }  (akhir dari  if (Kondisi1 != Kondisi2)  { yaitu  Kondisi2 = Kondisi1 ; } ) tetapi jika nilainya tidak sama maka program akan mengecek nilai dari kondisi satu.
if (Kondisi1 == 1)  {
      if (KondisiLampu == 0) KondisiLampu = 1;
      else KondisiLampu = 0 ; }
Jika kondisi satu berlogika 1 (saklar di tekan) maka program akan mengecek variabel Kondisilampu apakah bernilai satu atau bernilai 0, jika bernilai 0 maka akan di rubah menjadi bernilai 1 dan  jika bernilai 1 maka akan di rubah menjadi bernilai 0 ( jika lampunya hidup maka akan di matikan dan sebaliknya jika lampunya mati maka akan dihidupkan.
     Kondisi2 = Kondisi1 ; }
di sini nilai kondisi 2 akan di isi dengan nilai kondisi 1 jadi nilainya akan sama. hal ini untuk menghindari kacaunya program saat loop kembali ke atas. jika baris program ini tidak ada maka kerja alat akan kacau (led akan hidup mati dan hidup mati saat saklar di tekan) coba saja rekan rekan hilangkan dulu baris program ini dan amati bagaimana reaksinya. 
   digitalWrite(Led,KondisiLampu);
nah baris inilah yang akan menghidupkan atau mematikan led sesuai dengan nilai kondisi lampu pada baris program sebelumnya.


Kembali Ke halaman Awal
Bersambung ke sesi 2

13 komentar:

  1. kalo pengen button terus ditekan led nyala beberapa detik kemudian mati bagai mana ??

    BalasHapus
  2. Pungsi r1k nya untuk apa maas?

    BalasHapus
  3. Dan kalo tanpa r1k apa resiko nya... trims

    BalasHapus
    Balasan
    1. tidak berbahaya jika tidak ada resistor.

      Hapus
    2. tetapi jika tidak ada resistor maka mikrokontroller akan mendapat kondisi jika saklar di tekan maka akan mendapat tegangan 5volt. jika tidak di tekan tidak mendapat tegangan , atau istilahnya mengambang, coba saja tanpa resistor, apakah akan mempengaruhi cara kerja alatnya atau tidak, dengan mencoba maka akan lebih tahu. guru paling berharga adalah pengalaman . coba saja ... ga bahaya ko

      Hapus
  4. Kalau pengen kita saat tekan dan lepas dengan cepat tetap berfungsi seperti push button, dan untuk menghidupkan secara terus menerus tombol push buttonnya harus ditekan selama 3 detik gimana?

    BalasHapus
  5. mas kalo kita pengen, button ditekan pertama menyala, terus ditekan kedua kali redup, dan yang ketiga kali baru mati gimana yaa??

    BalasHapus
  6. Gimana caranya kalo saklar di tekan 1x nyala 1 detik, tapi kalo di tekan 2x nyala 2 detik dan sterusnya?

    BalasHapus
  7. Gimana caranya saklar di tekan 1x nyala 1 detik, di tekan 2x nyala 2 detik, dan seterusnya?

    BalasHapus