Beweging-geactiveerde RGB LED Kleurwisselaar – Arduino Project
Onderdelen en benodigdheden
| SparkFun APDS-9960 (gebaar-/kleur-/naderingssensor) | × | 1 |
| Arduino UNO | × | 1 |
| RGB LED (Common Cathode, diffuus) | × | 1 |
| Weerstand 4,75 kΩ | × | 1 |
| Draadjes | × | 1 set |
Apps en online diensten
- Arduino IDE
Over dit project
Met dit project stuur je een RGB LED aan met behulp van handgebaren. Je hebt de SparkFun APDS-9960 sensor en een common cathode RGB LED nodig (geen anode!). Gebruik een 5V Arduino-board met 4,7kΩ weerstanden, want de sensor communiceert via I2C.
De standaard besturing is:
- Wijken naar boven – LED aan
- Wijken naar beneden – LED uit
- Wijken naar rechts – Volgende kleur
- Wijken naar links – Vorige kleur
Er zijn 6 vooraf gedefinieerde kleuren in de code, maar je kunt er zelf toevoegen. De code is eenvoudig aanpasbaar voor andere projecten. Experimenteer en veel plezier!

Code
Arduino-code
#include <Wire.h>
#include <SparkFun_APDS9960.h>
// Pinnen
#define APDS9960_INT 2 // Moet een interrupt-pin zijn
// Constanten
int red_pin = A0;
int green_pin = A1;
int blue_pin = A2;
int onOff_flag = 0;
int colorNumber = 0;
// Globale variabelen
SparkFun_APDS9960 apds = SparkFun_APDS9960();
int isr_flag = 0;
void setup() {
pinMode(APDS9960_INT, INPUT);
Serial.begin(9600);
Serial.println(F("--------------------------------"));
Serial.println(F("SparkFun APDS-9960 - GestureTest"));
Serial.println(F("--------------------------------"));
attachInterrupt(0, interruptRoutine, FALLING);
if (apds.init()) {
Serial.println(F("APDS-9960 initialisatie voltooid"));
} else {
Serial.println(F("Fout bij APDS-9960 init!"));
}
if (apds.enableGestureSensor(true)) {
Serial.println(F("Gebaarsensor actief"));
} else {
Serial.println(F("Fout bij gebaarsensor init!"));
}
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
analogWrite(A0, 0);
analogWrite(A1, 0);
analogWrite(A2, 0);
}
void loop() {
if (isr_flag == 1) {
detachInterrupt(0);
handleGesture();
isr_flag = 0;
attachInterrupt(0, interruptRoutine, FALLING);
}
if (onOff_flag == 1) {
switch (colorNumber) {
case 0: // Rood
Serial.println("rood");
analogWrite(red_pin, 255);
analogWrite(green_pin, 0);
analogWrite(blue_pin, 0);
break;
case 1: // Babyblauw
Serial.println("baby blauw");
analogWrite(red_pin, 255);
analogWrite(green_pin, 153);
analogWrite(blue_pin, 204);
break;
case 2: // Donkerblauw
Serial.println("donkerblauw");
analogWrite(red_pin, 100);
analogWrite(green_pin, 0);
analogWrite(blue_pin, 170);
break;
case 3: // Groen
Serial.println("groen");
analogWrite(red_pin, 0);
analogWrite(green_pin, 255);
analogWrite(blue_pin, 0);
break;
case 4: // Blauw
Serial.println("blauw");
analogWrite(red_pin, 0);
analogWrite(green_pin, 0);
analogWrite(blue_pin, 255);
break;
case 5: // Violet
Serial.println("violet");
analogWrite(red_pin, 191);
analogWrite(green_pin, 0);
analogWrite(blue_pin, 255);
break;
}
} else {
analogWrite(red_pin, 0);
analogWrite(green_pin, 0);
analogWrite(blue_pin, 0);
}
delay(1000);
}
void interruptRoutine() {
isr_flag = 1;
}
void handleGesture() {
if (apds.isGestureAvailable()) {
switch (apds.readGesture()) {
case DIR_UP:
Serial.println("OMHOOG");
onOff_flag = 1;
break;
case DIR_DOWN:
Serial.println("OMLAAG");
onOff_flag = 0;
break;
case DIR_LEFT:
Serial.println("LINKS");
if (onOff_flag == 1) {
if (colorNumber > 0) colorNumber--;
else colorNumber = 5;
Serial.println(colorNumber);
}
break;
case DIR_RIGHT:
Serial.println("RECHTS");
if (onOff_flag == 1) {
if (colorNumber < 5) colorNumber++;
else colorNumber = 0;
Serial.println(colorNumber);
}
break;
case DIR_NEAR:
Serial.println("DICHTBIJ");
break;
case DIR_FAR:
Serial.println("VER");
break;
default:
Serial.println("GEEN");
}
}
}
Schema's
Aansluiten zoals aangegeven in het schema.

Productieproces
- Bouw een Beweging-gestuurde AWS IoT-knop met Raspberry Pi, PIR-sensor en MQTT
- Bouw een Bluetooth-gecontroleerde Raspberry Pi Robot met Audio Feedback
- Gebarenbestuurde RGB-tafellamp – Interactief, Handvrij Verlichten
- LED's bedienen met Alexa via Raspberry Pi – Eenvoudige stapsgewijze handleiding
- Een oude RC-auto ombouwen tot joystick-gestuurd voertuig met Arduino
- Arduino-gebaseerde 6-DoF Robotarm Gestoeerd met Wii Nunchuk
- Bouw een Stemgecontroleerde Robot met Arduino Nano
- Slimme beweegactiverde waterpistool gebouwd met Arduino Nano
- PiBot: De Arduino-aangedreven pianorobot voor precisiemuziek
- Arduino RGB LED Kleurmixer – Beginner-vriendelijk DIY-project
- Wi-Servo: Servomotoren Besturen via Wi-Fi met een Webbrowser