Tabla de contenido:

Sencillo sensor de color DIY de Magicbit: 5 pasos
Sencillo sensor de color DIY de Magicbit: 5 pasos

Video: Sencillo sensor de color DIY de Magicbit: 5 pasos

Video: Sencillo sensor de color DIY de Magicbit: 5 pasos
Video: POV Clock with Magicbit 2024, Noviembre
Anonim
Image
Image

En este tutorial aprenderemos cómo hacer un sensor de color simple usando Magicbit con Arduino.

Suministros

  • Magicbit
  • Cable USB-A a Micro-USB

Paso 1: historia

configuración de hardware
configuración de hardware

Hola chicos, en ocasiones hay que utilizar sensores de color para algunos fines. Pero puede ser que no sepa cómo funcionan. Entonces, en este tutorial, aprenderá cómo hacer un sensor de color de bricolaje simple usando Magicbit con Arduino. Empecemos.

Paso 2: Teoría y Metodología

En este proyecto, esperamos enseñarle a construir un sensor de color que pueda detectar colores rojo, verde y azul. Este es un ejemplo muy básico. Entonces, ¿cómo hacer esto? Para ello utilizamos el módulo RGB del Magicbit y el LDR incorporado. Primero que nada tienes que aprender algo de teoría. Eso es sobre la cantidad de reflexión de la luz. Ahora te estoy haciendo una pregunta. ¿Qué superficie coloreada refleja más la luz de color rojo? También qué superficies que reflejan principalmente luces verdes y azules. Piense un poco. Pero la respuesta es simple. La superficie de color rojo refleja principalmente la luz de color rojo. Además, las superficies verdes y azules reflejarán luces verdes y azules. Entonces, en este proyecto usamos esa teoría. Para reconocer el color emitimos luces rojas, verdes y azules una a una. Cada vez que medimos la cantidad de reflexión usando el valor LDR. Si algo de luz dará más reflexión que otras dos luces, entonces esa superficie debería ser principalmente una superficie de color reflejada.

Paso 3: configuración del hardware

Esto es muy simple. Conecte su módulo RGB en el puerto superior derecho de Magicbit. Este módulo tiene WS2812B Neopixel LED. Este LED tiene 4 pines. Dos para alimentación y dos para entrada y salida de datos. Debido a que usamos un LED, solo necesitamos pines de alimentación y datos en el pin. Si no tiene ese módulo, puede comprar un módulo Neopixel. Si compró ese tipo de módulo, debe conectar los pines de alimentación y los datos en el pin a Magicbit. Eso es muy facil. Conecte VCC y GND del Magicbit a los pines de alimentación del módulo RGB y el pin D33 al pin de datos.

Paso 4: configuración del software

La mayor parte lo hace la programación. Usamos Arduino IDE para programar nuestro Magicbit. En el código usamos un par de bibliotecas. Son biblioteca Adafruit Neopixel para control Neopixel LED y biblioteca Adafruit OLED para manejar OLED. En la instalación configuramos nuestras entradas y salidas. También configure la pantalla OLED incorporada en Magicbit. En el bucle comprobamos que el pulsador izquierdo está pulsado o no del Magicbit. Si se presiona, la señal de entrada es 0. Porque ya está levantada por la placa. Si presionó, verificamos el color. De lo contrario, la pantalla mostrará la declaración "sin color". Cuando se presiona el botón, se encienden automáticamente las luces roja, verde y azul una por una y se almacena la cantidad de reflexión de los colores en tres variables. A continuación, comparamos esos valores y seleccionamos el color de valor máximo para mostrar como color de salida.

Por lo tanto, conecte el cable micro USB a Magicbit y seleccione el tipo de placa y los puertos com correctamente. Ahora sube el código. Entonces es el momento de probar nuestro sensor. Para probar eso, mantenga el papel o la hoja con superficie roja, verde o azul en el módulo LDR y RGB y presione el botón izquierdo. Luego, la pantalla OLED mostrará cuál es el color de la superficie. Si eso es incorrecto, la razón es que algunos colores tienen una alta intensidad de luz. Como ejemplo, en cada superficie verde, la salida es roja, entonces debe reducir el brillo de la luz roja en cierta cantidad. Porque la luz roja tiene un brillo muy alto en ese caso. Por lo que tiene una alta reflexión. Si no sabe cómo controlar el brillo, consulte el tutorial en el enlace a continuación.

magicbit-arduino.readthedocs.io/en/latest/

En este enlace puede encontrar cómo controlar ese módulo RGB de Magicbit. Y también puede encontrar cómo trabajar con LDR y pulsador usando Magicbit. Lea ese documento y estudie más a fondo cómo mejorar el sensor de color. Porque este es un ejemplo muy básico sobre cómo funcionan los sensores de color. La mayoría de los tipos de sensores de color funcionan de esta manera. Intente mejorar esto eliminando el ruido de la luz ambiental y otros ruidos.

Paso 5: Código de sensor de color Arduino

#incluir

#define LED_PIN 33

#define LED_COUNT 1 Adafruit_NeoPixel LED (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #incluir #incluir #incluir #definir OLED_RESET 4 Pantalla Adafruit_SSD1306 (128, 64); #define LDR 36 #define Button 35 int R_value, G_value, B_value; configuración vacía () {LED.begin (); LED.show (); pinMode (LDR, ENTRADA); pinMode (Botón, ENTRADA); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); retraso (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// si se presiona el botón LED.setPixelColor (0, LED. Color (0, 50, 0)); // en LED de color rojo.show (); retraso (100); R_value = analogRead (LDR); // obtener LED de montaje rojo.setPixelColor (0, LED. Color (150, 0, 0)); // en LED de color verde.show (); retraso (100); G_value = analogRead (LDR); // obtener LED de montaje verde.setPixelColor (0, LED. Color (0, 0, 255)); // en LED de color azul.show (); retraso (100); B_value = analogRead (LDR); // obtener la montura azul si (R_value> G_value && R_value> B_value) {// el rojo es el más reflejado Display ("RED", 3); } else if (G_value> R_value && G_value> B_value) {// el verde es el más reflejado Display ("VERDE", 3); } else if (B_value> R_value && B_value> G_value) {// el azul es más reflejado Display ("BLUE", 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("VERDE ="); Serial.print (G_value); Serial.print ("AZUL ="); Serial.println (B_value); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // apagado RGB LED.show (); Pantalla ("SIN COLOR", 2); }} void Display (String commond, int size) {// mostrar datos display.clearDisplay (); display.setTextSize (tamaño); // Pantalla normal de escala de píxeles 1: 1.setTextColor (WHITE); // Dibujar texto en blanco display.setCursor (0, 20); // Comienza en la esquina superior izquierda display.println (commond); display.display (); }

Recomendado: