Obsah:

Jednoduchý DIY barevný senzor od Magicbit: 5 kroků
Jednoduchý DIY barevný senzor od Magicbit: 5 kroků

Video: Jednoduchý DIY barevný senzor od Magicbit: 5 kroků

Video: Jednoduchý DIY barevný senzor od Magicbit: 5 kroků
Video: Ingenious Workers and Smart Tools You Must See 2024, Listopad
Anonim
Image
Image

V tomto tutoriálu se naučíme, jak vytvořit jednoduchý barevný senzor pomocí Magicbit s Arduino.

Zásoby

  • Magicbit
  • Kabel USB-A na Micro-USB

Krok 1: Příběh

Nastavení hardwaru
Nastavení hardwaru

Ahoj lidi, někdy musíte pro některé účely použít barevné senzory. Ale možná nevíte, jak fungují. V tomto tutoriálu se tedy dozvíte, jak pomocí Magicbit s Arduinem vytvořit jednoduchý barevný senzor pro kutily. Pojďme začít.

Krok 2: Teorie a metodologie

V tomto projektu očekáváme, že vás naučíme vytvářet barevný senzor, který dokáže detekovat červené, zelené a modré barvy. Toto je velmi základní příklad. Jak to tedy udělat? K tomuto účelu používáme RGB modul Magicbit a vestavěný LDR. Nejprve se musíte naučit nějakou teorii. To je o množství odrazu světla. Nyní se ptám na vaši otázku. Jaký barevný povrch nejvíce odráží červené barevné světlo? Také jaké povrchy, které většinou odrážejí zelené a modré světlo. Trochu přemýšlejte. Ale odpověď je jednoduchá. Červeně zbarvený povrch většinou odráží červené barevné světlo. Také zelené a modré povrchy budou odrážet zelená a modrá světla. V tomto projektu tedy tuto teorii používáme. Abychom rozeznali barvu, vysíláme jedno po druhém červené, zelené a modré světlo. Pokaždé měříme množství odrazu pomocí hodnoty LDR. Pokud některé světlo poskytne největší odraz než ostatní dvě světla, pak by tento povrch měl být převážně odraženým barevným povrchem.

Krok 3: Nastavení hardwaru

To je velmi jednoduché. Zapojte modul RGB do pravého horního portu Magicbit. Tento modul má LED diodu WS2812B Neopixel LED. Tato LED má 4 piny. Dva pro napájení a dva pro vstup a výstup dat. Protože používáme jednu LED, potřebujeme pouze napájecí piny a data v pinu. Pokud tento modul nemáte, můžete si koupit modul Neopixel. Pokud jste si koupili tento typ modulu, musíte k Magicbit připojit napájecí piny a data v pinu. To je velmi snadné. Připojte VCC a GND Magicbit k napájecím pinům modulu RGB a pin D33 k datovému pinu.

Krok 4: Nastavení softwaru

Většinu provádí programování. K programování našeho Magicbit používáme Arduino IDE. V kódu používáme několik knihoven. Jsou to knihovna Adopruit Neopixel pro ovládání Neopixel LED a knihovna Adafruit OLED pro rukojeť OLED. V nastavení konfigurujeme naše vstupy a výstupy. Také nakonfigurujte vestavěný OLED displej na Magicbit. Ve smyčce kontrolujeme, zda je stisknuto levé tlačítko MagicBit. Pokud stiskne, je vstupní signál 0. Protože je již vytažen deskou nahoru. Pokud je stisknuto, provedeme kontrolu barev. Pokud ne, na obrazovce se zobrazí prohlášení „žádná barva“. Když je tlačítko stisknuto, automaticky se rozsvítí červené, zelené a modré světlo jeden po druhém a množství odrazů barev se uloží do tří proměnných. Dále jsme tyto hodnoty porovnali a vybrali barvu maximální hodnoty, která se má zobrazit jako výstupní barva.

Připojte tedy kabel micro USB k Magicbit a správně vyberte typ desky a porty com. Nyní nahrajte kód. Pak je čas vyzkoušet náš senzor. Chcete -li to otestovat, ponechte červený, zelený nebo modrý povrch papíru nebo archu na modulu LDR a RGB a stiskněte levé tlačítko. Poté OLED displej ukáže, jaká je barva povrchu. Pokud je to špatně, důvodem je, že některé barvy mají vysokou intenzitu světla. Jako příklad na každém zeleném povrchu je výstup červený, pak musíte od určité míry snížit jas červeného světla. Protože červené světlo má v tom případě velmi vysoký jas. Takže mají vysoký odraz. Pokud nevíte, jak ovládat jas, podívejte se na návod v níže uvedeném odkazu.

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

V tomto odkazu najdete, jak ovládat tento modul RGB z Magicbit. A také můžete zjistit, jak pracovat s LDR a tlačítkem pomocí Magicbit. Přečtěte si tento dokument a dále studujte, jak zlepšit barevný senzor. Protože toto je velmi základní příklad toho, jak fungují barevné senzory. Většina typů barevných senzorů pracuje tímto způsobem. Zkuste to tedy zlepšit odstraněním okolního světelného šumu a dalších zvuků.

Krok 5: Arduino Code of Color Sensor

#zahrnout

#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 Tlačítko 35 int R_value, G_value, B_value; neplatné nastavení () {LED.begin (); LED.show (); pinMode (LDR, INPUT); pinMode (tlačítko, VSTUP); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); zpoždění (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// pokud je stisknuto tlačítko LED.setPixelColor (0, LED. Color (0, 50, 0)); // na redcolour LED.show (); zpoždění (100); R_value = analogRead (LDR); // získejte červenou montáž LED.setPixelColor (0, LED. Color (150, 0, 0)); // na greencolour LED.show (); zpoždění (100); G_value = analogRead (LDR); // get green mount LED.setPixelColor (0, LED. Color (0, 0, 255)); // na bluecolour LED.show (); zpoždění (100); B_value = analogRead (LDR); // get blue mount if (R_value> G_value && R_value> B_value) {// červená se nejvíce odráží Display ("RED", 3); } else if (G_value> R_value && G_value> B_value) {// zelená se nejvíce odráží Display ("ZELENÁ", 3); } else if (B_value> R_value && B_value> G_value) {// modrá se nejvíce odráží Display ("MODRÁ", 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("ZELENÉ ="); Serial.print (G_value); Serial.print ("BLUE ="); Serial.println (B_value); } else {LED.setPixelColor (0, LED. Color (0, 0, 0)); // vypnuto RGB LED.show (); Displej („ŽÁDNÁ BARVA“, 2); }} void Display (String commond, int size) {// display data display.clearDisplay (); display.setTextSize (velikost); // Normální 1: 1 pixel scale display.setTextColor (WHITE); // Nakreslete bílý text display.setCursor (0, 20); // Začněte v levém horním rohu display.println (commond); display.display (); }

Doporučuje: