Trocador de cor controlado por movimento!
Componentes e suprimentos
| | × | 1 | |
| Fios de jumpers (genérico) | | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
Aplicativos e serviços online
Sobre este projeto
Este projeto permitirá que você aproveite o poder de seus movimentos para controlar um LED RGB. Você precisará do Sparkfun APDS-9960 e um CATHODE comum, não um ânodo, LED RGB. Certifique-se de usar uma placa Arduino 5v com resistores de 4,7 k Ohm, pois esse sensor usa o protocolo I2C. Em seguida, conecte-se no esquema. A partir daí, você pode adicionar cores personalizadas ao código. Eu coloquei 6 já. Os controles padrão são:deslize para cima para ligá-lo, deslize para baixo para desligá-lo, deslize para a direita para avançar para a próxima cor e para a esquerda para inverter. Este código pode ser adaptado para caber em muitos outros tipos de projetos também! Sinta-se à vontade para experimentar e criar projetos mais incríveis. Feliz fabricação!
Uma imagem do produto em uma placa de ensaio:
Código
Código Arduino C / C ++
Copiar e colar #include #include // Pinos # define APDS9960_INT 2 // Precisa ser um pino de interrupção // Constantsint red_pin =A0; int green_pin =A1; int blue_pin =A2; int onOff_flag =0; // Faça a matriz para loop throughint colorNumber =0; // Global VariablesSparkFun_APDS9960 apds =SparkFun_APDS9960 (); int isr_flag =0; void setup () {// Defina o pino de interrupção como entrada pinMode (APDS9960_INT, ENTRADA); // Inicializa a porta serial Serial.begin (9600); Serial.println (); Serial.println (F ("--------------------------------")); Serial.println (F ("SparkFun APDS-9960 - GestureTest")); Serial.println (F ("--------------------------------")); // Inicializa a rotina de serviço de interrupção attachInterrupt (0, interruptRoutine, FALLING); // Inicializar o APDS-9960 (configurar I2C e os valores iniciais) if (apds.init ()) {Serial.println (F ("inicialização do APDS-9960 concluída")); } else {Serial.println (F ("Algo deu errado durante a inicialização do APDS-9960!")); } // Comece a executar o mecanismo de sensor de gestos APDS-9960 if (apds.enableGestureSensor (true)) {Serial.println (F ("Sensor de gestos em execução")); } else {Serial.println (F ("Algo deu errado durante a inicialização do sensor de gesto!")); } pinMode (A0, OUTPUT); pinMode (A1, OUTPUT); pinMode (A2, SAÍDA); 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:Serial.println ("red"); analogWrite (red_pin, 255); analogWrite (green_pin, 0); analogWrite (blue_pin, 0); pausa; caso 1:Serial.println ("azul bebê"); analogWrite (red_pin, 255); analogWrite (green_pin, 153); analogWrite (blue_pin, 204); pausa; caso 2:Serial.println ("azul escuro"); analogWrite (red_pin, 100); analogWrite (green_pin, 0); analogWrite (blue_pin, 170); pausa; caso 3:Serial.println ("verde"); analogWrite (red_pin, 0); analogWrite (green_pin, 255); analogWrite (blue_pin, 0); pausa; caso 4:Serial.println ("azul"); analogWrite (red_pin, 0); analogWrite (green_pin, 0); analogWrite (blue_pin, 255); pausa; caso 5:Serial.println ("violeta"); analogWrite (red_pin, 191); analogWrite (green_pin, 0); analogWrite (blue_pin, 255); pausa; }} 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; pausa; case DIR_DOWN:Serial.println ("DOWN"); onOff_flag =0; pausa; 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); } } pausa; 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); } } pausa; case DIR_NEAR:Serial.println ("NEAR"); pausa; case DIR_FAR:Serial.println ("FAR"); pausa; padrão:Serial.println ("NONE"); }}}
Esquemas
Conecte como está.