





KS0267
Nuevo
Módulo sensor APDS-9030 de actividad y proximidad. Marca Keyestudio.
El módulo sensor de actitud Keyestudio APDS-9930 utiliza principalmente el chip APDS-9930, el cual en un solo paquete de 8 pines puede proporcionar funciones de sensor de luz ambiental compatible con la interfaz I2C y un sensor de proximidad LED infrarrojo. El sensor de luz ambiental usa un diodo de luz doble para aproximarse a la respuesta visual de la luz baja humana bajo 0.01 lux de iluminación, y su alta sensibilidad permite que el dispositivo funcione en la parte posterior del vidrio oscuro.
El sensor de proximidad que está completamente ajustado puede detectar objetos de 100 mm y exime los requisitos de calibración de fábrica del equipo terminal así como de los subcomponentes. Desde la luz del sol hasta la habitación oscura, la función de detección de proximidad del sensor de proximidad puede funcionar bien. Este módulo de lente micro óptica añadida puede proporcionar transmisión y recepción de energía de infrarrojos eficientes, lo que puede reducir el consumo total de energía. Además, su máquina de estado interna puede hacer que el dispositivo entre en un modo de baja potencia, lo que genera un consumo de energía promedio muy bajo.
Pines de funcionamiento del Módulo sensor de actividad con APDS-9960
#include <Wire.h> #include <SparkFun_APDS9960.h> // Pins #define APDS9960_INT 2 // Necesita ser un pin de interrupción #define LED_PIN 13 // LED para mostrar la interrupción // Constantes #define LIGHT_INT_HIGH 1000 // Alto nivel de luz para la interrupción #define LIGHT_INT_LOW 10 // Nivel de luz baja para interrupción // Variables globales SparkFun_APDS9960 apds = SparkFun_APDS9960 (); uint16_t ambient_light = 0; uint16_t red_light = 0; uint16_t green_light = 0; uint16_t blue_light = 0; int isr_flag = 0; uint16_t umbral = 0; void setup () { // Establecer el LED como salida pinMode (LED_PIN, SALIDA); pinMode (APDS9960_INT, INPUT); // Inicializar el puerto serie Serial.begin (9600); Serial.println (); Serial.println (F ("-------------------------------------")); Serial.println (F ("SparkFun APDS-9960 - Interrupciones de luz")); Serial.println (F ("-------------------------------------")); // Inicia la rutina del servicio de interrupción attachInterrupt (0, interruptRoutine, FALLING); // Inicializar APDS-9960 (configurar I2C y valores iniciales) if (apds.init ()) { Serial.println (F ("inicialización APDS-9960 completa")); } else { Serial.println (F ("Algo salió mal durante APDS-9960 init!")); } // Establecer umbrales de interrupción altos y bajos if (! apds.setLightIntLowThreshold (LIGHT_INT_LOW)) { Serial.println (F ("Error al escribir bajo umbral")); } if (! apds.setLightIntHighThreshold (LIGHT_INT_HIGH)) { Serial.println (F ("Error al escribir alto umbral")); } // Comience a ejecutar el sensor de luz APDS-9960 (sin interrupciones) if (apds.enableLightSensor (false)) { Serial.println (F ("Sensor de luz se está ejecutando ahora")); } else { Serial.println (F ("¡Algo salió mal durante el inicio del sensor de luz!")); } // Leer umbrales de interrupción altos y bajos if (! apds.getLightIntLowThreshold (threshold)) { Serial.println (F ("Error al leer el umbral bajo")); } else { Serial.print (F ("Low Threshold:")); Serial.println (umbral); } if (! apds.getLightIntHighThreshold (threshold)) { Serial.println (F ("Error al leer el umbral alto")); } else { Serial.print (F ("High Threshold:")); Serial.println (umbral); } // Habilita las interrupciones if (! apds.setAmbientLightIntEnable (1)) { Serial.println (F ("Error al habilitar interrupciones")); } // Espere a que finalice la inicialización y la calibración retraso (500); } void loop () { // Si ocurre una interrupción, imprima los niveles de luz if (isr_flag == 1) { // Leer los niveles de luz (ambiente, rojo, verde, azul) e imprimir if (! apds.readAmbientLight (luz_de_ambiente) || ! apds.readRedLight (red_light) || ! apds.readGreenLight (green_light) || ! apds.readBlueLight (blue_light)) { Serial.println ("Error al leer los valores de luz"); } else { Serial.print ("Interrupt! Ambiente:"); Serial.print (ambient_light); Serial.print ("R:"); Serial.print (red_light); Serial.print ("G:"); Serial.print (green_light); Serial.print ("B:"); Serial.println (blue_light); } // Enciende el LED por medio segundo digitalWrite (LED_PIN, ALTO); retraso (500); digitalWrite (LED_PIN, BAJO); // Restablecer indicador y borrar interrupción APDS-9960 (¡IMPORTANTE!) isr_flag = 0; if (! apds.clearAmbientLightInt ()) { Serial.println ("Error al borrar la interrupción"); } } } void interruptRoutine () { isr_flag = 1; }
Cableado como el diagrama anterior y grabación del código, después de encenderlo, abra el monitor serie, como se muestra en el gráfico a continuación.