Cuprins:

Senzor de culoare DIY simplu de la Magicbit: 5 pași
Senzor de culoare DIY simplu de la Magicbit: 5 pași

Video: Senzor de culoare DIY simplu de la Magicbit: 5 pași

Video: Senzor de culoare DIY simplu de la Magicbit: 5 pași
Video: how to make Motion detection light on off PIR sensor project #howto 2024, Noiembrie
Anonim
Image
Image

În acest tutorial vom învăța despre cum să faci un senzor de culoare simplu folosind Magicbit cu Arduino.

Provizii

  • Magicbit
  • Cablu USB-A la Micro-USB

Pasul 1: Poveste

Configurare hardware
Configurare hardware

Bună băieți, uneori trebuie să folosiți senzori de culoare în anumite scopuri. Dar poate că nu știi cum funcționează. Deci, în acest tutorial veți afla despre cum să creați un senzor de culoare DIY simplu folosind Magicbit cu Arduino. Să începem.

Pasul 2: Teorie și metodologie

În acest proiect ne așteptăm să vă învățăm să construiți senzori de culoare care să poată detecta culorile roșu, verde și albastru. Acesta este un exemplu foarte simplu. Deci, cum să faceți acest lucru. În acest scop folosim modulul RGB al Magicbit și LDR încorporat. Mai întâi de toate, trebuie să aflați ceva teorie. Este vorba despre cantitatea de reflexie a luminii. Acum îți pun întrebări. Ce suprafață colorată care reflectă cel mai mult lumina de culoare roșie? Și ce suprafețe care reflectă în cea mai mare parte luminile verzi și albastre. Gândește puțin. Dar răspunsul este simplu. Suprafața de culoare roșie reflectă în cea mai mare parte culoarea roșie a luminii. De asemenea, suprafețele verzi și albastre vor reflecta luminile verzi și albastre. Deci, în acest proiect folosim această teorie. Pentru a recunoaște culoarea, emitem roșu, verde și albastru lumini unul câte unul. De fiecare dată măsurăm cantitatea de reflexie utilizând valoarea LDR. Dacă o anumită lumină va da cea mai mare reflexie decât alte două lumini, atunci suprafața respectivă ar trebui să fie cea mai mare parte reflectată suprafață colorată.

Pasul 3: Configurare hardware

Acest lucru este foarte simplu. Conectați modulul RGB la portul din dreapta sus al Magicbit. Acest modul are LED Neopixel WS2812B. Acest LED are 4 pini. Două pentru putere și două pentru intrarea și ieșirea datelor. Deoarece folosim un led, avem nevoie doar de pini de alimentare și de date în pin. Dacă nu aveți acel modul, puteți cumpăra și modulul Neopixel. Dacă ați cumpărat acest tip de modul, trebuie să conectați pinii de alimentare și datele în pin la Magicbit. Este foarte ușor. Conectați VCC și GND ale Magicbit la pinii de alimentare ai modulului RGB și pinul D33 la pinul de date.

Pasul 4: Configurare software

Cea mai mare parte realizată de programare. Folosim Arduino IDE pentru a ne programa Magicbit. În cod folosim câteva biblioteci. Acestea sunt biblioteca Adafruit Neopixel pentru control Neopixel LED și biblioteca Adafruit OLED pentru mâner OLED. În configurare ne configurăm intrările și ieșirile. De asemenea, configurați afișajul OLED încorporat pe Magicbit. În buclă verificăm dacă butonul din stânga este apăsat sau nu din Magicbit. Dacă a fost apăsat, semnalul de intrare este 0. Deoarece este deja tras de placa. Dacă a fost apăsat, atunci facem verificarea culorilor. Dacă nu, ecranul va afișa declarația „fără culoare”. Când butonul este apăsat, porniți automat luminile roșii, verzi și albastre unul câte unul și stocați cantitatea de reflexie a culorilor în trei variabile. Apoi am comparat acele valori și am selectat valoarea maximă a culorii pentru a fi afișată ca culoare de ieșire.

Deci, conectați cablul micro USB la Magicbit și selectați corect tipul de placă și porturile com. Acum încărcați codul. Atunci este timpul să ne testăm senzorul. Pentru a testa acest lucru, păstrați hârtia sau foaia roșie, verde sau albastră pe modulul LDR și RGB și apăsați butonul stânga. Apoi, ecranul OLED va arăta care este culoarea suprafeței. Dacă acest lucru este greșit, motivul este că unele culori au o intensitate ridicată a luminii. De exemplu, în fiecare suprafață verde, ieșirea este roșie, atunci trebuie să reduceți luminozitatea luminii roșii de la o anumită cantitate. Deoarece lumina roșie are o luminozitate foarte mare în acest caz. Deci au o reflectare ridicată. Dacă nu știți cum să controlați luminozitatea, consultați tutorialul în linkul de mai jos.

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

În acest link puteți găsi cum să controlați acel modul RGB de la Magicbit. Și, de asemenea, puteți găsi cum să lucrați cu LDR și butonul cu ajutorul Magicbit. Citiți acel document și studiați în continuare cum să îmbunătățiți senzorul de culoare. Deoarece acesta este un exemplu foarte simplu despre modul în care funcționează senzorii de culoare. Majoritatea tipurilor de senzori de culoare funcționează în acest fel. Deci, încercați să îmbunătățiți acest lucru eliminând zgomotul luminii ambientale și alte zgomote.

Pasul 5: Codul Arduino al senzorului de culoare

#include

#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 Afișaj Adafruit_SSD1306 (128, 64); #define LDR 36 #define Butonul 35 int R_value, G_value, B_value; void setup () {LED.begin (); LED.show (); pinMode (LDR, INPUT); pinMode (Buton, INPUT); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); întârziere (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Buton) == 0) {// dacă butonul este apăsat LED.setPixelColor (0, LED. Color (0, 50, 0)); // pe culoarea roșie LED.show (); întârziere (100); R_value = analogRead (LDR); // obțineți montare roșie LED.setPixelColor (0, LED. Color (150, 0, 0)); // pe greencolour LED.show (); întârziere (100); G_value = analogRead (LDR); // get green mount LED.setPixelColor (0, LED. Color (0, 0, 255)); // pe bluecolour LED.show (); întârziere (100); B_value = analogRead (LDR); // obțineți montarea albastră dacă (R_value> G_value && R_value> B_value) {// roșu este cel mai reflectat Afișaj ("RED", 3); } else if (G_value> R_value && G_value> B_value) {// verde este cel mai reflectat Afișaj ("GREEN", 3); } else if (B_value> R_value && B_value> G_value) {// albastru este cel mai reflectat Afișaj ("BLUE", 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("VERDE ="); Serial.print (G_value); Serial.print ("ALBASTRU ="); Serial.println (B_value); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // oprit RGB LED.show (); Afișaj („FĂRĂ CULOARE”, 2); }} void Display (String commond, int size) {// display data display.clearDisplay (); display.setTextSize (dimensiune); // Normal 1: 1 pixel display display.setTextColor (WHITE); // Desenați textul alb display.setCursor (0, 20); // Începeți din colțul din stânga sus display.println (commond); display.display (); }

Recomandat: