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.
- 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.
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