Taula de continguts:

Sensor de color DIY senzill de Magicbit: 5 passos
Sensor de color DIY senzill de Magicbit: 5 passos

Vídeo: Sensor de color DIY senzill de Magicbit: 5 passos

Vídeo: Sensor de color DIY senzill de Magicbit: 5 passos
Vídeo: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Desembre
Anonim
Image
Image

En aquest tutorial aprendrem sobre com fer un senzill sensor de color mitjançant Magicbit amb Arduino.

Subministraments

  • Magicbit
  • Cable USB-A a Micro-USB

Pas 1: història

Configuració del maquinari
Configuració del maquinari

Hola nois, en alguns moments heu d’utilitzar sensors de color per a alguns propòsits. Però pot ser que no sàpigues com funcionen. Així, en aquest tutorial aprendreu sobre com fer un senzill sensor de color de bricolatge mitjançant Magicbit amb Arduino. Comencem.

Pas 2: teoria i metodologia

En aquest projecte esperem ensenyar-vos a construir un sensor de color que pugui detectar els colors vermell, verd i blau. Aquest és un exemple molt bàsic. Llavors, com fer-ho. Amb aquest propòsit utilitzem el mòdul RGB de Magicbit i el LDR incorporat. Primer de tot, heu d’aprendre alguna teoria. Es tracta de la quantitat de reflexió de la llum. Ara us pregunto. Quina superfície de color que reflecteix més la llum de color vermell? També quines superfícies que reflecteixen la majoria de llums verds i blaus. Penseu poc. Però la resposta és senzilla. La superfície de color vermell reflecteix sobretot la llum de color vermell. També les superfícies verdes i blaves reflectiran les llums verdes i blaves. Per tant, en aquest projecte fem servir aquesta teoria. Per reconèixer el color, emetem llums vermells, verds i blaus un a un. Cada vegada que mesurem la quantitat de reflexió mitjançant el valor LDR. Si una mica de llum donarà la major reflexió que altres dues llums, llavors aquesta superfície hauria de reflectir-se sobretot en la superfície de color.

Pas 3: Configuració del maquinari

Això és molt senzill. Connecteu el mòdul RGB al port superior dret de Magicbit. Aquest mòdul té LED WS2812B Neopixel. Aquest LED té 4 pins. Dos per a la potència i dos per a l'entrada i sortida de dades. Com que fem servir un led, només necessitem pins i dades d'alimentació. Si no teniu aquest mòdul, podeu comprar el mòdul Neopixel. Si heu comprat aquest tipus de mòdul, heu de connectar pins i dades d'alimentació a Magicbit. Això és molt fàcil. Connecteu VCC i GND del Magicbit als pins d'alimentació del mòdul RGB i el pin D33 al pin de dades.

Pas 4: Configuració del programari

La major part de la programació. Utilitzem Arduino IDE per programar el nostre Magicbit. Al codi fem servir un parell de biblioteques. Són la biblioteca Adafruit Neopixel per al control de Neopixel LED i la biblioteca Adafruit OLED per al controlador OLED. A la configuració configurem les nostres entrades i sortides. També configureu la pantalla OLED integrada a Magicbit. Al bucle comprovem que el polsador de la mà esquerra està premut o no del Magicbit. Si es prem, el senyal d'entrada és 0. Com que la placa ja la tira cap amunt. Si es prem, fem la comprovació del color. Si no, la pantalla mostrarà la declaració "sense color". Quan es prem el botó, s'encenen automàticament els llums vermells, verds i blaus un per un i emmagatzemen la quantitat de reflexió dels colors en tres variables. A continuació, vam comparar aquests valors i vam seleccionar el color de valor màxim per mostrar com a color de sortida.

Connecteu el cable micro USB a Magicbit i seleccioneu el tipus de placa i els ports com correctament. Ara pengeu el codi. Llavors és el moment de provar el nostre sensor. Per provar-ho, mantingueu paper o full de superfície vermell, verd o blau al mòdul LDR i RGB i premeu el botó esquerre. A continuació, la pantalla OLED mostrarà quin és el color de la superfície. Si no està bé, la raó és que el color té una intensitat de llum elevada. Com a exemple en totes les superfícies verdes, la sortida és vermella, llavors heu de reduir la brillantor de la llum vermella d'alguna quantitat. Com que la llum vermella té una brillantor molt elevada en aquest cas. Per tant, han tingut una gran reflexió. Si no sabeu com controlar la brillantor, consulteu el tutorial a l'enllaç següent.

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

En aquest enllaç podeu trobar com controlar aquest mòdul RGB des de Magicbit. I també podeu trobar com treballar amb LDR i el botó polsador mitjançant Magicbit. Llegiu aquest document i estudieu més a fons com millorar el sensor de color. Perquè aquest és un exemple molt bàsic sobre el funcionament dels sensors de color. La majoria dels tipus de sensors de color funcionen d’aquesta manera. Per tant, intenteu millorar-ho eliminant el soroll de la llum ambiental i altres sorolls.

Pas 5: Codi Arduino del sensor de color

#incloure

#define LED_PIN 33

#define LED_COUNT 1 Adafruit_NeoPixel LED (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #include #include #include #define OLED_RESET 4 Adafruit_SSD1306 display (128, 64); #define LDR 36 #define Botó 35 int R_value, G_value, B_value; void setup () {LED.begin (); LED.show (); pinMode (LDR, INPUT); pinMode (Button, INPUT); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); retard (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// si es prem el botó LED.setPixelColor (0, LED. Color (0, 50, 0)); // a color vermell LED.show (); retard (100); R_value = analogRead (LDR); // obtén el LED de muntatge vermell.setPixelColor (0, LED. Color (150, 0, 0)); // al LED de color gris.show (); retard (100); G_value = analogRead (LDR); // obtenir un muntatge verd LED.setPixelColor (0, LED. Color (0, 0, 255)); // a bluecolour LED.show (); retard (100); B_value = analogRead (LDR); // obtenir muntatge blau si (R_value> G_value && R_value> B_value) {// El vermell és el més reflectit Pantalla ("VERMELL", 3); } else if (G_value> R_value && G_value> B_value) {// el color verd es mostra més ("VERD", 3); } else if (B_value> R_value && B_value> G_value) {// blau és el més reflectit Pantalla ("BLAU", 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("VERD ="); Serial.print (G_value); Serial.print ("BLAU"); Serial.println (valor_B); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // apagat RGB LED.show (); Pantalla ("SENSE COLOR", 2); }} void Display (String commond, int size) {// mostrar dades display.clearDisplay (); display.setTextSize (mida); // Normal: escala 1: 1 píxel display.setTextColor (BLANC); // Dibuixar text en blanc display.setCursor (0, 20); // Comenceu a la cantonada superior esquerra display.println (commond); display.display (); }

Recomanat: