Съдържание:

Прост DIY цветен сензор от Magicbit: 5 стъпки
Прост DIY цветен сензор от Magicbit: 5 стъпки

Видео: Прост DIY цветен сензор от Magicbit: 5 стъпки

Видео: Прост DIY цветен сензор от Magicbit: 5 стъпки
Видео: DIY: ОСЕННИЙ ДЕКОР КОМНАТЫ. Ключница Стринг арт, перо из ниток, осенние поделки своими руками. 2024, Декември
Anonim
Image
Image

В този урок ще научим как да направите прост цветен сензор, използвайки Magicbit с Arduino.

Консумативи

  • Magicbit
  • USB-A към Micro-USB кабел

Стъпка 1: История

Хардуерна настройка
Хардуерна настройка

Здравейте момчета, понякога трябва да използвате цветни сензори за някои цели. Но може би не знаете как работят. Така че в този урок ще научите как да направите прост DIY цветен сензор, използвайки Magicbit с Arduino. Да започнем.

Стъпка 2: Теория и методология

В този проект очакваме да ви научим да изграждате цветен сензор, който може да открива червени, зелени и сини цветове. Това е много основен пример. И така, как да направите това. За тази цел използваме RGB модул на Magicbit и вграден LDR. Първо трябва да научите за някаква теория. Това е количеството отражение на светлината. Сега задавам въпрос от вас. Каква цветна повърхност, която най -много отразява светлината на червения цвят? Също какви повърхности, които отразяват най -вече зелените и сините светлини. Помислете малко. Но отговорът е прост. Червената повърхност отразява най -вече червената светлина. Също така зелените и сините повърхности ще отразяват зелените и сините светлини. Така че в този проект ние използваме тази теория. За да разпознаем цвета, ние излъчваме червени, зелени и сини светлини една по една. Всеки път, когато измерваме количеството на отражение, използвайки LDR стойност. Ако някаква светлина ще даде най -голямо отражение от другите две светлини, тогава тази повърхност трябва да бъде най -вече отразена цветна повърхност.

Стъпка 3: Настройка на хардуера

Това много просто. Включете вашия RGB модул в горния десен порт на Magicbit. Този модул има WS2812B Neopixel LED. Този светодиод има 4 пина. Две за захранване и две за вход и изход на данни. Тъй като използваме един светодиод, имаме нужда само от захранващи щифтове и данни в пин. Ако нямате този модул, можете да си купите и Neopixel модул. Ако сте закупили такъв модул, трябва да свържете захранващи щифтове и данни в пин към Magicbit. Това е много лесно. Свържете VCC и GND на Magicbit към захранващи щифтове на RGB модул и D33 щифт към извод за данни.

Стъпка 4: Настройка на софтуера

По -голямата част се извършва от програмирането. Използваме Arduino IDE за програмиране на нашия Magicbit. В кода използваме няколко библиотеки. Те са библиотека Adafruit Neopixel за управление на Neopixel LED и библиотека Adafruit OLED за дръжка OLED. В настройката ние конфигурираме нашите входове и изходи. Също така конфигурирайте вградения OLED дисплей на Magicbit. В цикъла проверяваме дали левият бутон е натиснат или не на Magicbit. Ако е натиснат, входният сигнал е 0. Тъй като вече е изтеглен от платката. Ако е натиснато, правим проверка на цвета. Ако не, тогава екранът ще покаже изявление "без цвят". Когато бутонът е натиснат, автоматично се включват червени, зелени и сини светлини един по един и се съхраняват количеството отражение на цветовете в три променливи. След това сравнихме тези стойности и избрахме цвят с максимална стойност, който да се показва като изходен цвят.

Така че свържете микро USB кабел към Magicbit и изберете правилно типа платка и com портовете. Сега качете кода. Тогава е време да тестваме нашия сензор. За да проверите това, дръжте червената, зелената или синята хартия или лист върху модула LDR и RGB и натиснете левия бутон. Тогава OLED дисплеят ще покаже какъв е цветът на повърхността. Ако това е грешка, причината е, че някои цветове имат висока интензивност на светлината. Като пример във всяка зелена повърхност изходът е червен, тогава трябва да намалите яркостта на червената светлина от известно количество. Тъй като червената светлина има много висока яркост в този случай. Така че те имат силно отражение. Ако не знаете как да контролирате яркостта, вижте урока в линка по -долу.

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

В тази връзка можете да намерите как да управлявате този RGB модул от Magicbit. Освен това можете да откриете как да работите с LDR и бутон с помощта на Magicbit. Прочетете този документ и проучете допълнително как да подобрите сензора за цвят. Защото това е много основен пример за това как работят сензорите за цвят. Повечето видове цветни сензори работят по този начин. Затова се опитайте да подобрите това, като премахнете шума от околната светлина и други шумове.

Стъпка 5: Код на сензора за цвят на Arduino

#включва

#дефинирайте 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 дисплей (128, 64); #дефинира LDR 36 #дефинира бутон 35 int R_value, G_value, B_value; void setup () {LED.begin (); LED.show (); pinMode (LDR, INPUT); pinMode (Бутон, ВХОД); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); забавяне (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// ако бутонът е натиснат LED.setPixelColor (0, LED. Color (0, 50, 0)); // на redcolour LED.show (); забавяне (100); R_value = analogRead (LDR); // получавам червен LED LED.setPixelColor (0, LED. Color (150, 0, 0)); // на greencolour LED.show (); забавяне (100); G_value = analogRead (LDR); // получавам светодиод за зелено монтиране.setPixelColor (0, LED. Color (0, 0, 255)); // на bluecolour LED.show (); забавяне (100); B_value = analogRead (LDR); // получавам син монтаж, ако (R_value> G_value && R_value> B_value) {// червеното е най -отразено Display ("RED", 3); } иначе ако (G_value> R_value && G_value> B_value) {// зеленото е най -отразено Display ("GREEN", 3); } иначе ако (B_value> R_value && B_value> G_value) {// синьото е най -отразено Display ("BLUE", 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("ЗЕЛЕН ="); Serial.print (G_value); Serial.print ("СИН ="); Serial.println (B_value); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // изключен RGB LED.show (); Дисплей ("NO COLOR", 2); }} void Display (String commond, int size) {// показване на данни display.clearDisplay (); display.setTextSize (размер); // Нормален дисплей в мащаб 1: 1 пиксел.setTextColor (БЯЛ); // Начертайте бял текстов дисплей.setCursor (0, 20); // Старт в горния ляв ъгъл display.println (commond); display.display (); }

Препоръчано: