Módulo de detección óptica de proximidad por LED infrarrojo
KS0269
Nuevo
Módulo de detección óptica de proximidad por led infrarrojo ALS. Marca Keyestudio.
- Escribe tu opinión
DESCRIPCIÓN
EL KS0269 un sensor triple integrado que incluye luz ambiental, sensor de proximidad y LED infrarrojo, que tiene dos funciones, por un lado, se utiliza para detectar el brillo ambiental actual (ALS); De acuerdo con el brillo ambiental actual, ajusta automáticamente el brillo de la luz de fondo para adaptarse a la luz ambiental mediante el ajuste del software, lo que puede suavizar el brillo de la luz de fondo para proteger su visión y lograr el efecto de ahorro de energía.
Respecto a la otra función, es un sensor de proximidad (PROX). El sensor ha sido integrado transmisor / receptor y minimizado el diseño, además, el diseño y la instalación no tienen más restricciones de espacio, y para parte de una estructura es relativamente simple.
CARACTERÍSTICAS
- Voltaje de trabajo: DC 3.3V
- Distancia de detección: 100 mm
- Modo de comunicación: comunicación IIC
- Rango de temperatura: -30 ℃ a + 85 ℃
DIAGRAMA DE CONEXIÓN
CÓDIGO DE PRUEBA
#define DUMP_REGS
#include <Wire.h> #include <APDS9930.h> // Pins #define APDS9930_INT 2 // Necesita ser un pin de interrupción #define LED_PIN 13 // LED para mostrar la interrupción // Constantes #define PROX_INT_HIGH 600 // Nivel de proximidad para la interrupción #define PROX_INT_LOW 0 // Sin interrupción // Variables globales APDS9930 apds = APDS9930 (); flotante luz_de_ambiente = 0; // también puede ser un largo sin signo uint16_t ch0 = 0; uint16_t ch1 = 1; uint16_t proximity_data = 0; volatile bool isr_flag = false; void setup () { // Establecer el LED como salida pinMode (LED_PIN, SALIDA); pinMode (APDS9930_INT, INPUT); // Inicializar el puerto serie Serial.begin (9600); Serial.println (); Serial.println (F ("------------------------------")); Serial.println (F ("APDS-9930 - ProximityInterrupt")); Serial.println (F ("------------------------------")); // Inicia la rutina del servicio de interrupción attachInterrupt (digitalPinToInterrupt (APDS9930_INT), interruptRoutine, FALLING); // Inicializar APDS-9930 (configurar I2C y valores iniciales) if (apds.init ()) { Serial.println (F ("inicialización APDS-9930 completa")); } else { Serial.println (F ("Algo salió mal durante APDS-9930 init!")); } // Ajuste la ganancia del sensor de proximidad if (! apds.setProximityGain (PGAIN_2X)) { Serial.println (F ("Algo salió mal al intentar establecer PGAIN")); } // Establecer umbrales de interrupción de proximidad if (! apds.setProximityIntLowThreshold (PROX_INT_LOW)) { Serial.println (F ("Error al escribir bajo umbral")); } if (! apds.setProximityIntHighThreshold (PROX_INT_HIGH)) { Serial.println (F ("Error al escribir alto umbral")); } // Comience a ejecutar el sensor de proximidad APDS-9930 (interrupciones) if (apds.enableProximitySensor (true)) { Serial.println (F ("El sensor de proximidad se está ejecutando ahora")); } else { Serial.println (F ("Algo salió mal durante el sensor init!")); } // Comience a ejecutar el sensor de luz APDS-9930 (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!")); } #ifdef DUMP_REGS / * Register dump * / uint8_t reg; uint8_t val; para (reg = 0x00; reg <= 0x19; reg ++) { if ((reg! = 0x10) && \ (reg! = 0x11)) { apds.wireReadDataByte (reg, val); Serial.print (reg, HEX); Serial.print (": 0x"); Serial.println (val, HEX); } } apds.wireReadDataByte (0x1E, val); Serial.print (0x1E, HEX); Serial.print (": 0x"); Serial.println (val, HEX); #terminara si } void loop () { // Si ocurre una interrupción, imprima el nivel de proximidad if (isr_flag) { // Leer el nivel de proximidad e imprimirlo if (! apds.readProximity (proximity_data)) { Serial.println ("Error al leer el valor de proximidad"); } else { Serial.print ("Proximity detected! Level:"); Serial.print (proximity_data); Serial.print (""); } apds.readAmbientLightLux (ambient_light); // Leer los niveles de luz (ambiente, rojo, verde, azul) if (! apds.readAmbientLightLux (ambient_light) || ! apds.readCh0Light (ch0) || ! apds.readCh1Light (ch1)) { Serial.println (F ("Error al leer los valores de luz")); } else { Serial.print (F ("Ambiente:")); Serial.print (ambient_light); Serial.print (F ("Ch0:")); Serial.print (ch0); Serial.print (F ("Ch1:")); Serial.println (ch1); } // Enciende el LED por medio segundo digitalWrite (LED_PIN, ALTO); retraso (300); digitalWrite (LED_PIN, BAJO); // Restablecer el indicador y borrar la interrupción APDS-9930 (¡IMPORTANTE!) isr_flag = false; if (! apds.clearProximityInt ()) { Serial.println ("Error al borrar la interrupción"); } } } void interruptRoutine () { isr_flag = verdadero; }
RESULTADO DE LA PRUEBA
Probado por el software de la versión Arduino-1.8.2, luego abra el monitor serie, puede ver los datos como la figura que se muestra a continuación.
productos relacionados
16 otros productos en la misma categoría:
Marcas