Tabla de contenido:

Medidas de luz y color con el Pimoroni Enviro: bit para el Micro: bit: 5 pasos
Medidas de luz y color con el Pimoroni Enviro: bit para el Micro: bit: 5 pasos

Video: Medidas de luz y color con el Pimoroni Enviro: bit para el Micro: bit: 5 pasos

Video: Medidas de luz y color con el Pimoroni Enviro: bit para el Micro: bit: 5 pasos
Video: Set Up a 7 Colour E-Ink Display For Raspberry Pi | Inky Impression 5.7" HAT 2024, Noviembre
Anonim
Mediciones de luz y color con Pimoroni Enviro: bit para Micro: bit
Mediciones de luz y color con Pimoroni Enviro: bit para Micro: bit
Mediciones de luz y color con Pimoroni Enviro: bit para Micro: bit
Mediciones de luz y color con Pimoroni Enviro: bit para Micro: bit
Mediciones de luz y color con Pimoroni Enviro: bit para Micro: bit
Mediciones de luz y color con Pimoroni Enviro: bit para Micro: bit

Anteriormente había estado trabajando en algunos dispositivos que permiten mediciones de luz y color y es posible que encuentre mucho sobre la teoría detrás de tales mediciones en los instructables aquí y aquí.

Pimoroni ha lanzado recientemente enviro: bit, un complemento para micro: bit, que viene con un micrófono MEMS para mediciones de nivel de sonido, un sensor de temperatura / humedad / presión de aire BME280 y un sensor de luz y color TCS3475 (RGBC). Además, hay dos LED colocados a los lados del sensor de color, lo que permite medir el color de los objetos mediante la luz reflejada. Construir una herramienta usted mismo para realizar estas mediciones nunca ha sido tan fácil.

Aquí me gustaría describir cómo se puede usar enviro: bit para mediciones de color y luz y el script MakeCode que permite realizarlas. La combinación de micro: bit y enviro: bit es un dispositivo agradable y económico para demostrar los principios de las mediciones científicas de forma práctica y jugar con ellos.

Este instructivo es parte del concurso "Rainbow". Si te gusta, dale tu voto. GraciasH

Paso 1: Materiales utilizados

Micro: bit, 13 GBP en Pimoroni.

Pimoroni Enviro: bit, 20 GBP en Pimoroni.

Pimoroni Power: bit, 6 GBP en Piomoroni. También puede usar paquetes de baterías o un LiPo para el micro: bit

Bloque de muestra de filtro de color Rosco Cinegel. Conseguí el mío de Modulor, Berlín.

Vasos de plástico de colores IKEA. IKEA, Berlín.

Flores silvestres. Un prado en Potsdam-Golm.

Paso 2: el script MakeCode / JavaScript

Pimoroni ha desarrollado una biblioteca para Enviro: bit, tanto para el entorno de codificación MakeCode / JavaScript como para MicroPython. Aquí he usado MakeCode, ya que los scripts se pueden cargar directamente en micro: bit y permiten la codificación de bloques.

El script lee los valores de los canales rojo, verde y azul (RGB) y claro (C). Los primeros se dan en valores de 0 a 255, los segundos en todo el rango de 0 a aproximadamente 61000.

El rango del canal claro es muy amplio y permite mediciones desde luz diurna brillante hasta una habitación oscura.

Por ahora no entiendo todos los detalles de la función de medición de color, pero supongo que tienen implementados algunos mecanismos de corrección y normalización.

Al principio, se toman los valores de los cuatro canales. Para poder mostrar los resultados en la matriz de LED de 5x5, los valores medidos se utilizan para colocar los resultados en 5 (RGB) o 10 (C) contenedores, que están representados por un LED en uno (R, G, B) o dos (C) filas.

En el caso de RGB, la escala es lineal y el tamaño del intervalo de cada contenedor es de 51 unidades de ancho. En el caso de C, la escala es logarítmica en 10 pasos (log3, por lo que cada paso es el triple del anterior). Esto permite mostrar tanto condiciones muy tenues como muy brillantes.

Al presionar el botón A se muestran los valores R, G y B en números, al presionar B el valor C. A + B activa los LED y B los apagará.

sea bR = 0 // bins

deje bG = 0 deje bB = 0 deje bS = 0 deje bC = 0 deje bCx = 0 deje S = 0 // valores medidos deje C = 0 deje B = 0 deje G = 0 deje R = 0 básico. para siempre (() => {if (input.buttonIsPressed (Button. AB)) {envirobit.setLEDs (envirobit. OnOff. On)} else if (input.buttonIsPressed (Button. A)) {basic.showString ("R:" + R + "G:" + G + "B:" + B)} else if (input.buttonIsPressed (Button. B)) {basic.showString ("C:" + C) envirobit.setLEDs (envirobit. OnOff. Off)} else {basic.pause (100) R = envirobit.getRed () G = envirobit.getGreen () B = envirobit.getBlue () C = envirobit.getLight () bC = 5 bCx = 5 if (R> = 204) { // agrupamiento, máximo 255 bR = 4} else if (R> = 153) {bR = 3} else if (R> = 102) {bR = 2} else if (R> = 51) {bR = 1} else {bR = 0} if (G> = 204) {bG = 4} else if (G> = 153) {bG = 3} else if (G> = 102) {bG = 2} else if (G> = 51) {bG = 1} si no {bG = 0} si (B> = 204) {bB = 4} si no (B> = 153) {bB = 3} si no (B> = 102) {bB = 2} si no (B> = 51) {bB = 1} si no {bB = 0} si (C> = 60000) {// Saturación bCx = 4} else if (C> = 20000) {bCx = 3} else if (C> = 6600) {bCx = 2} else if (C> = 2200) {bCx = 1} else if (C> = 729) {bCx = 0} si no (C> = 243) {bC = 4} si no (C> = 81) {bC = 3} si no (C> = 27) {bC = 2} else if (C> = 9) {bC = 1} else {bC = 0} // escribir en led basic.clearScreen () if (bCx <5) {led.plot (1, bCx)} else {led.plot (0, bC)} led.plot (2, bR) led.plot (3, bG) led.plot (4, bB)}})

Paso 3: Toma de medidas RGB: modo de luz transmitida

Toma de medidas RGB: modo de luz transmitida
Toma de medidas RGB: modo de luz transmitida
Toma de medidas RGB: modo de luz transmitida
Toma de medidas RGB: modo de luz transmitida
Toma de medidas RGB: modo de luz transmitida
Toma de medidas RGB: modo de luz transmitida
Toma de medidas RGB: modo de luz transmitida
Toma de medidas RGB: modo de luz transmitida

Como se indicó anteriormente, hay dos modos de medición de color: espectroscopía de luz transmitida y reflejada. En el modo de luz transmitida, la luz pasa a través de un filtro de color o una solución al sensor. En las mediciones de luz reflejada, la luz emitida, p. Ej. de los LED es reflejada por un objeto y es detectada por el sensor.

Los valores RGB se muestran en las filas 3 a 5 de la matriz de LED micro: bit 5x5, con los LED superiores representando bajo, los LED inferiores los valores altos.

Para los experimentos que se muestran aquí sobre las mediciones de luz transmitida, utilicé la luz del día y coloqué filtros de colores de un paquete de muestra de Rosco frente al sensor. Puede ver los efectos en la pantalla, especialmente en el canal rojo. Eche un vistazo a las imágenes y compare los patrones.

Para leer los valores reales, simplemente presione el botón A.

Paso 4: RGB de luz reflejada y mediciones de brillo

Luz reflejada RGB y medidas de brillo
Luz reflejada RGB y medidas de brillo
Luz reflejada RGB y medidas de brillo
Luz reflejada RGB y medidas de brillo
Luz reflejada RGB y medidas de brillo
Luz reflejada RGB y medidas de brillo

Para las mediciones de luz reflejada, encendí los LED (botón [A + B]) y coloqué algunas piezas de vasos infantiles IKEA de colores brillantes frente al sensor. Como se puede ver en las imágenes, los valores RGB están cambiando como se esperaba.

Para las mediciones de brillo, los valores bajos se muestran en la primera fila y los valores altos en la segunda fila. Valores bajos en la parte superior, valores más altos por los LED inferiores. Para leer el valor exacto, presione el botón B.

Paso 5: Medidas de luz reflejada: flores

Medidas de luz reflejada: Flores
Medidas de luz reflejada: Flores
Medidas de luz reflejada: Flores
Medidas de luz reflejada: Flores
Medidas de luz reflejada: Flores
Medidas de luz reflejada: Flores
Medidas de luz reflejada: Flores
Medidas de luz reflejada: Flores

Cogí algunas flores silvestres de un prado y traté de realizar algunas mediciones de color en ellas: amapola, aciano, mala hierba marrón, harkweed de pared y una hoja de dilandelon. Los valores RGB fueron [R, G, B]:

  • ninguno [92, 100, 105]
  • amapola (roja) [208, 98, 99]
  • aciano (azul) [93, 96, 138]
  • mala hierba marrón (lila) [122, 97, 133]
  • harkweed de pared (amarillo) [144, 109, 63]
  • hoja de diente de león (verde) [164, 144, 124]

Lo cual se ajusta a las expectativas, al menos para las tres primeras plantas. Para mostrar los colores de los valores, puede usar una calculadora de colores, como la que se muestra aquí.

Recomendado: