Changeur de couleur contrôlé par le mouvement !
Composants et fournitures
| | × | 1 | |
 | Câbles de raccordement (générique) | | × | 1 | |
 | | × | 1 | |
 | | × | 1 | |
 | Cathode commune diffuse RVB | | × | 1 | |
Applications et services en ligne
À propos de ce projet
Ce projet vous permettra d'exploiter la puissance de vos mouvements pour contrôler une LED RVB. Vous aurez besoin du Sparkfun APDS-9960 et d'une LED RVB CATHODE commune, pas d'anode. Assurez-vous d'utiliser une carte Arduino 5v avec les résistances 4,7k Ohm, car ce capteur utilise le protocole I2C. Ensuite, connectez-vous comme dans le schéma. De là, vous pouvez ajouter des couleurs personnalisées dans le code. J'en ai déjà mis 6. Les commandes par défaut sont :balayez vers le haut pour l'activer, balayez vers le bas pour l'éteindre, balayez vers la droite pour passer à la couleur suivante et vers la gauche pour revenir en arrière. Ce code peut également être adapté pour s'adapter à de nombreux autres types de projets ! N'hésitez pas à expérimenter et à créer des projets plus impressionnants. Bonne fabrication !
Une photo du produit sur une maquette :
Code
Code ArduinoC/C++
Copier et coller#include #include // Pins#define APDS9960_INT 2 // Doit être une broche d'interruption// Constantsint red_pin =A0;int green_pin =A1;int blue_pin =A2;int onOff_flag =0;//Faire boucler le tableau int colorNumber =0;// Variables globalesSparkFun_APDS9960 apds =SparkFun_APDS9960();int isr_flag =0;void setup() { // Définir la broche d'interruption comme pinMode d'entrée (APDS9960_INT, SAISIR); // Initialiser le port série Serial.begin(9600); Serial.println(); Serial.println(F("--------------------------------")); Serial.println(F("SparkFun APDS-9960 - GestureTest")); Serial.println(F("--------------------------------")); // Initialiser la routine de service d'interruption attachInterrupt(0, interruptRoutine, FALLING); // Initialiser APDS-9960 (configurer I2C et les valeurs initiales) if ( apds.init() ) { Serial.println(F("APDS-9960 initialisation terminée")); } else { Serial.println(F("Une erreur s'est produite lors de l'initialisation APDS-9960 !")); } // Lancer l'exécution du moteur de capteur de mouvements APDS-9960 if ( apds.enableGestureSensor(true) ) { Serial.println(F("Le capteur de mouvements est en cours d'exécution")); } else { Serial.println(F("Une erreur s'est produite lors de l'initialisation du capteur de mouvements !")); } pinMode(A0, SORTIE); pinMode (A1, SORTIE); pinMode (A2, SORTIE); analogWrite(A0, 0); analogWrite(A1, 0); analogWrite(A2, 0);}void loop() { if( isr_flag ==1 ) { detachInterrupt(0); handleGesture(); isr_flag =0; attachInterrupt(0, interruptionRoutine, FALLING); } if (onOff_flag ==1){ switch (colorNumber){ case 0:Serial.println("red"); analogWrite(red_pin, 255); analogWrite(green_pin, 0); analogWrite(blue_pin, 0); Pause; cas 1 :Serial.println("baby blue"); analogWrite(red_pin, 255); analogWrite(green_pin, 153); analogWrite(blue_pin, 204); Pause; cas 2 :Serial.println("bleu foncé"); analogWrite(red_pin, 100); analogWrite(green_pin, 0); analogWrite(blue_pin, 170); Pause; cas 3 :Serial.println("vert"); analogWrite(red_pin, 0); analogWrite(green_pin, 255); analogWrite(blue_pin, 0); Pause; cas 4:Serial.println("bleu"); analogWrite(red_pin, 0); analogWrite(green_pin, 0); analogWrite(blue_pin, 255); Pause; case 5:Serial.println("violet"); analogWrite(red_pin, 191) ; analogWrite(green_pin, 0); analogWrite(blue_pin, 255); Pause; }} else if(onOff_flag ==0){ 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 ; Pause; case DIR_DOWN :Serial.println("DOWN"); onOff_flag =0 ; Pause; case DIR_LEFT :Serial.println("LEFT"); if(onOff_flag ==1){ if(colorNumber>0){ colorNumber -=1; Serial.println(colorNumber); } else if(colorNumber <1){ colorNumber =5; Serial.println(colorNumber); } } Pause; case DIR_RIGHT :Serial.println("RIGHT"); if(onOff_flag ==1){ if(colorNumber <5){ colorNumber +=1; Serial.println(colorNumber); } else if(colorNumber> 4){ colorNumber =0; Serial.println(colorNumber); } } Pause; case DIR_NEAR :Serial.println("NEAR"); Pause; case DIR_FAR :Serial.println("FAR"); Pause; par défaut :Serial.println("AUCUN"); } }}
Schémas
Connectez-vous tel quel.