Selasa, 04 November 2014

Arduino Membuat Pencacah

Aplikasi pencacah (counter) biasa digunakan untuk mencacah suatu entitas yang ingin diketahui jumlahnya dalam suatu sistem. Untuk dapat mencacah jumlah entitas, maka diperlukan suatu sensor yang dapat mendeteksi keberadaan dari entitas tersebut. Salah satu project sederhana Arduino untuk aplikasi pencacah ialah dengan menggunakan limit switch, push button.

<img src="arduino_switch_button.png" alt="arduino_switch_button">


Penggunaan push button sebagai sebuah sensor, Arduino akan menerima data berapa kali push button tersebut ditekan. Berdasarkan gambar wiring diagram yang ada, pada saat push button tidak ditekan maka tidak ada arus (input signal) yang mengalir sebagai input ke pin Arduino. Sedangkan bila ditekan maka akan ada arus (input signal) yang mengalir ke Arduino. Untuk menghindari kondisi float (suatu kondisi antara high dan low), maka push button dihubungkan dengan resistor pull down, terhubung dengan ground. Dengan demikian bila rangkaian diubah, arus terputus, limit switch akan berada dalam kondisi low.
Berikut ini adalah source code (sketch) aplikasi pencacah sederhana dengan Arduino.

/*
Program pencacah sederhana
dengan push button

Loki Lang
*/

int buttonPin = 2;
int ledPin = 13;
int buttonPushCounter = 0;
int buttonState = 0;
int lastButtonState = 0;

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

void loop()
{
  buttonState = digitalRead(buttonPin);
  if(buttonState != lastButtonState)
  {
    if(buttonState == HIGH)
    {
      buttonPushCounter++;
    }
  }
  lastButtonState = buttonState;
  if(buttonPushCounter % 7 ==0)
  {
    digitalWrite(ledPin, HIGH);
  }
  else
  {
    digitalWrite(ledPin, LOW);
  }
}

Penjelasan program sebagai berikut.
  • Digunakan variable global buttonPin, ledPin, buttonPushCounter, buttonState, dan lastButtonState
  • Variable buttonPin, untuk pin Arduino (pin 2) yang terhubung dengan input push button
  • Variable ledPin, untuk pin Arduino (pin 13) dimana terdapat LED indikator sebagai output
  • Variable buttonPushCounter, untuk mencacah berapa kali push button ditekan
  • Variable buttonState, untuk menampung kondisi push button tidak ditekan bernilai low, sedangkan bila ditekan bernilai high
  • Variable lastButtonState, untuk melihat kondisi push button sebelumnya
  • Pada setup(), dilakukan inisialisasi input dan output yang digunakan
  • Variable buttonPin, untuk pin Arduino yang terhubung dengan push button
  • Setiap kali push button ditekan (high), nilainya akan dibaca oleh Arduino, dan meningkatkan nilai variable buttonPushCounter
  • Bila saat menekan push button kemudian ditahan, nilainya hanya akan dibaca sekali oleh Arduino, karena kondisi buttonState dan lastButtonState harus berbeda untuk dapat mulai mencacah
  • Setelah push button dilepas, nilai buttonState kembali low demikian dengan lastButtonState
  • Proses pencacahan dimulai, nilai buttonPushCounter akan dibagi dengan 7 (bisa disesuaikan kebutuhan), bila hasil pembagiannya tanpa sisa (sisa 0), maka ledPin akan bernilai high
  • Pada saat ledPin bernilai high, maka LED indikator di Arduino akan menyala
  • Bila jumlah pencacahan buttonPushCounter bukan kelipatan 7 (sisa pembagiannya dengan 7 tidak sama dengan 0), maka ledPin akan tetap bernilai low
Dalam project sederhana aplikasi pencacah dengan Arduino ini, selama jumlah pencacahan input belum mencapai set point (kelipatan 7), indikator output tetap bernilai low. Dengan membandingkan kondisi buttonState dengan lastButtonState, dapat mengantisipasi bila push button tersebut ditekan dan kemudian ditahan, akan tetap dianggap sekali penekanan saja.
Penggunaan push button sebagai limit switch sensor dapat digantikan dengan sensor optocoupler untuk aplikasi yang sesuai.

Tidak ada komentar:

Posting Komentar