Search

Tuesday, October 4, 2016

[MICROCONTROLLER][ARDUINO][TUTORIAL] Ultrasonic Sensor

Jika Anda pecinta mokit/gunpla maupun figure statue yang memiliki LED, mungkin proyek ini cocok bagi Anda yang menghendaki LED menyala secara otomatis jika ada orang yang mendekati mokit/gunpla maupun figure statue Anda, dan secara otomatis pula LED akan mati untuk periode waktu tertentu (dan tentunya LED akan tetap menyala jika orang tersebut tetap terdeteksi berada di sekitar objek tersebut). Nah, jika Anda menghendaki mekanisme deteksi yang akan digunakan adalah jarak orang dengan objek, maka kita dapat menggunakan sensor jarak berbasis ULTRASONIC.

KEBUTUHAN PERANGKAT
  • Arduino (uno)
  • sensor ultrasonic (HC-SR04)
  • kabel jumper (warna-warni)
  • mokit/gunpla/figure statue. Dalam tutorial ini, penulis menggunakan figure statue bust ironman yang memiliki LED di MATA dan ARC REACTOR-nya. Figure statue yang digunakan ini sudah memiliki rangkaian internal yang menggunakan tenaga batere yang secara terus-menerus akan menyala jika sudah di-ON-kan. Tapi kalo hanya seperti itu, kurang menarik kan? Selain itu juga tidak hemat energi.
SIRKUIT
  • TIPS: Untuk menghubungkan titik satu ke titik lainnya yang berjauhan, silakan gunakan kabel jumper dengan warna kesukaanmu. Akan tetapi, sebaiknya gunakan warna tertentu untuk membedakan arus positif dan negatif. 


SKEMATIK


KODE

Setelah membuat rangkaian sirkuitnya:
  • sambungkan Arduino ke komputer
  • jalankan Arduino Software (IDE). Jika belum terinstal, silakan didownload disini.
  • masukkan kode berikut:
// ---------------------------------------------------------------------------
// LED-ON using Sonar
// ---------------------------------------------------------------------------

#include <NewPing.h>

#define LED_PIN 13 // Arduino pin tied to trigger pin on LED.
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
#define REQUIRE_DISTANCE 20 // // cm - maximal required distance to triger LED
#define MAX_INTERVAL_ON 5000 // ms - change this value for LED interval

bool bON = false;
int distance = 0;
unsigned long ulFirstCT = 0;
unsigned long ulCT = 0;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  while (!Serial) delay(1);
  Serial.begin(9600);
  pinMode(LED_PIN, OUTPUT);
  DoLED(LOW);
}

void loop() {
  // sonar
  distance = sonar.ping_cm();
  //Serial.println("d = " + String(distance)); // uncomment for DEBUGGING
  if (distance > 0 && distance <= REQUIRE_DISTANCE) {
    if (!bON) {
      // light-UP
      DoLED(HIGH);
      ulFirstCT = millis();
    }
    bON = true;
  }
  else { // not in range
    bON = false;
  }

  // check ON-timer
  if (!bON) {
    ulCT = millis();
    if (ulCT - ulFirstCT >= MAX_INTERVAL_ON) {
      DoLED(LOW);
      bON = false;
    }
  }

  // breathe
  delay(5);
}

void DoLED(int state) {
  digitalWrite(LED_PIN, state);
}


  • TIPS: untuk NewPing library dapat didownload disini.


VIDEO

Video hasil tutorial ini dapat dilihat YouTube:




Selamat mencoba!

No comments:

Post a Comment