Gunakan sensor APDS9960 untuk mendeteksi gesture tangan seperti up, down, left, dan right menggunakan Arduino Uno. Lengkap dengan wiring dan programnya.
Sensor APDS9960 merupakan salah satu sensor pintar yang mampu mendeteksi gerakan tangan (gesture), warna, jarak (proximity), dan intensitas cahaya sekitar. Pada tutorial kali ini, kita akan memfokuskan pada fitur gesture recognition, yaitu mendeteksi gerakan tangan ke arah atas, bawah, kiri, kanan, dekat, dan jauh.
Sensor ini sangat cocok digunakan dalam proyek tanpa sentuhan (touchless) seperti kontrol menu, smart home, atau perangkat wearable berbasis Arduino Uno.
Alat dan Bahan
Komponen | Jumlah | Keterangan |
---|---|---|
Arduino Uno | 1 | Mikrokontroler utama |
Sensor APDS9960 | 1 | Sensor gesture + proximity + light |
Kabel Jumper | 5 | Untuk koneksi ke pin I2C dan INT |
Wiring Diagram APDS9960

- VCC (Merah) → 3.3V Arduino
- GND (Hitam) → GND Arduino
- SDA → A4 Arduino
- SCL → A5 Arduino
- INT → Pin 2
Pastikan sensor menghadap ke atas atau ke arah tangan kamu akan digerakkan.
Kode Program Gesture APDS9960
#include <Arduino.h>
#include <Wire.h>
#include <SparkFun_APDS9960.h>
#define APDS9960_INT 2
SparkFun_APDS9960 apds = SparkFun_APDS9960();
volatile int isr_flag = 0;
void interruptRoutine() {
isr_flag = 1;
}
void handleGesture() {
if (apds.isGestureAvailable()) {
switch (apds.readGesture()) {
case DIR_UP: Serial.println("UP"); break;
case DIR_DOWN: Serial.println("DOWN"); break;
case DIR_LEFT: Serial.println("LEFT"); break;
case DIR_RIGHT: Serial.println("RIGHT"); break;
case DIR_NEAR: Serial.println("NEAR"); break;
case DIR_FAR: Serial.println("FAR"); break;
default: Serial.println("NONE");
}
}
}
void setup() {
Serial.begin(9600);
pinMode(APDS9960_INT, INPUT);
Serial.println(F("--------------------------------"));
Serial.println(F("SparkFun APDS-9960 - GestureTest"));
Serial.println(F("--------------------------------"));
attachInterrupt(digitalPinToInterrupt(APDS9960_INT), interruptRoutine, FALLING);
if (apds.init()) {
Serial.println(F("APDS-9960 initialization complete"));
} else {
Serial.println(F("Something went wrong during APDS-9960 init!"));
}
if (apds.enableGestureSensor(true)) {
Serial.println(F("Gesture sensor is now running"));
} else {
Serial.println(F("Something went wrong during gesture sensor init!"));
}
}
void loop() {
if (isr_flag == 1) {
detachInterrupt(APDS9960_INT);
handleGesture();
isr_flag = 0;
attachInterrupt(digitalPinToInterrupt(APDS9960_INT), interruptRoutine, FALLING);
}
}
Penjelasan Kode
- SparkFun_APDS9960 Library digunakan untuk memudahkan komunikasi dengan sensor.
- Pin INT (Interrupt) akan LOW saat gesture terdeteksi, dan memicu
interruptRoutine()
. - Fungsi
handleGesture()
digunakan untuk membaca arah gesture. - Output gerakan akan muncul di Serial Monitor, misalnya:
UP
,DOWN
,LEFT
,RIGHT
,NEAR
,FAR
.
Untuk menggunakan library ini, install melalui Library Manager Arduino IDE → cari
SparkFun APDS9960
.
Referensi cepat:
Langkah Pengujian
- Sambungkan sensor seperti pada wiring diagram.
- Upload kode ke board Arduino Uno.
- Buka Serial Monitor dengan baudrate 9600.
- Lakukan gerakan tangan ke atas, bawah, kiri, kanan, atau dekat/jauh dari sensor.
- Amati hasil gesture di Serial Monitor.
Kesimpulan
Sensor APDS9960 menawarkan solusi praktis untuk proyek tanpa sentuhan. Dengan kemampuannya membaca gesture, kita dapat membuat kontrol gerakan seperti navigasi menu, saklar otomatis, atau interaksi cerdas pada perangkat elektronik. Penggunaan dengan Arduino Uno juga sangat sederhana dan terbuka untuk dikembangkan lebih lanjut.
Cobalah kombinasikan sensor ini dengan LED, buzzer, atau bahkan layar OLED untuk hasil lebih interaktif!
Diskusi lebih lanjut kontak di bawah :

Media sosial lainnya :
Baca juga :