Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Bewegungsgesteuerter RGB-LED-Farbwechsler – Arduino-Projekt

Komponenten und Zubehör

SparkFun APDS-9960 (Gesten-, Näherungs-, Farb- und Lichtsensor) × 1
Arduino UNO × 1
RGB-LED (Common Cathode, diffuses Gehäuse) × 1
Widerstand 4,75 kΩ × 1
Jumper-Kabel × 1 Set

Apps und Online-Dienste

Über dieses Projekt

Dieses Projekt ermöglicht es Ihnen, die Kraft Ihrer Bewegungen zu nutzen, um eine RGB-LED zu steuern. Sie benötigen den SparkFun APDS-9960 und eine Common-Cathode-RGB-LED (nicht Common Anode!). Verwenden Sie ein 5-V-Arduino-Board mit 4,7-kΩ-Widerständen, da der Sensor das I2C-Protokoll nutzt. Schließen Sie alles gemäß dem Schaltplan an.

Im Code sind bereits 6 Farben vordefiniert. Die Standardsteuerung lautet:

Der Code lässt sich leicht für viele andere Projekte anpassen. Experimentieren Sie frei und erstellen Sie weitere tolle Projekte!

Bewegungsgesteuerter RGB-LED-Farbwechsler – Arduino-Projekt

Code

Arduino-Code (C/C++)

#include 
#include 

// Pins
#define APDS9960_INT 2  // Muss ein Interrupt-Pin sein

// LED-Pins (PWM-fähig)
int red_pin = A0;
int green_pin = A1;
int blue_pin = A2;

int onOff_flag = 0;
int colorNumber = 0;

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 Initialisierung abgeschlossen"));
  } else {
    Serial.println(F("Fehler bei APDS-9960 Initialisierung!"));
  }

  if (apds.enableGestureSensor(true)) {
    Serial.println(F("Gestensensor läuft nun"));
  } else {
    Serial.println(F("Fehler bei Gestensensor-Initialisierung!"));
  }

  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:  // Rot
        Serial.println("rot");
        analogWrite(red_pin, 255);
        analogWrite(green_pin, 0);
        analogWrite(blue_pin, 0);
        break;
      case 1:  // Babyblau
        Serial.println("baby blue");
        analogWrite(red_pin, 255);
        analogWrite(green_pin, 153);
        analogWrite(blue_pin, 204);
        break;
      case 2:  // Dunkelblau
        Serial.println("dark blue");
        analogWrite(red_pin, 100);
        analogWrite(green_pin, 0);
        analogWrite(blue_pin, 170);
        break;
      case 3:  // Grün
        Serial.println("grün");
        analogWrite(red_pin, 0);
        analogWrite(green_pin, 255);
        analogWrite(blue_pin, 0);
        break;
      case 4:  // Blau
        Serial.println("blau");
        analogWrite(red_pin, 0);
        analogWrite(green_pin, 0);
        analogWrite(blue_pin, 255);
        break;
      case 5:  // Violett
        Serial.println("violett");
        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("UP");
        onOff_flag = 1;
        break;
      case DIR_DOWN:
        Serial.println("DOWN");
        onOff_flag = 0;
        break;
      case DIR_LEFT:
        Serial.println("LEFT");
        if (onOff_flag == 1) {
          if (colorNumber > 0) colorNumber--;
          else colorNumber = 5;
          Serial.println(colorNumber);
        }
        break;
      case DIR_RIGHT:
        Serial.println("RIGHT");
        if (onOff_flag == 1) {
          if (colorNumber < 5) colorNumber++;
          else colorNumber = 0;
          Serial.println(colorNumber);
        }
        break;
      case DIR_NEAR:
        Serial.println("NEAR");
        break;
      case DIR_FAR:
        Serial.println("FAR");
        break;
      default:
        Serial.println("NONE");
    }
  }
}

Schaltplan

Genau wie abgebildet verbinden.

Bewegungsgesteuerter RGB-LED-Farbwechsler – Arduino-Projekt

Herstellungsprozess

  1. Bewegungsgesteuerter AWS IoT Button mit Raspberry Pi, PIR-Sensor und MQTT
  2. Bluetooth-gesteuerter Raspberry Pi Roboter mit Audio-Feedback bauen
  3. Gesteuerter RGB-Tischlampe – Interaktive, berührungslose Beleuchtung
  4. LEDs mit Alexa über Raspberry Pi steuern – Einfache Schritt-für-Schritt-Anleitung
  5. Altes RC-Auto per Xbox-Controller & Arduino zum Joystick-Fahrzeug umbauen
  6. Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung
  7. Sprachgesteuerter Roboter mit Arduino Nano bauen
  8. Intelligente, bewegungsaktivierte Wasserpistole mit Arduino Nano
  9. PiBot: Arduino-gesteuerter Klavierroboter für präzise Musikwiedergabe
  10. Arduino RGB-LED-Farbmischer – Einsteigerfreundliches DIY-Projekt