Obsah:
Video: Jednoduchý DIY farebný senzor od Magicbit: 5 krokov
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
V tomto návode sa naučíme, ako vytvoriť jednoduchý farebný senzor pomocou Magicbit s Arduino.
Zásoby
- Magicbit
- Kábel USB-A na Micro-USB
Krok 1: Príbeh
Ahoj, ľudia niekedy musíte na niektoré účely použiť snímače farby. Ale možno neviete, ako fungujú. V tomto návode sa teda dozviete, ako vytvoriť jednoduchý farebný senzor pre domácich majstrov pomocou Magicbit s Arduino. Začnime.
Krok 2: Teória a metodika
V tomto projekte vás očakávame, že vás naučí stavať snímač farieb, ktorý dokáže detekovať červené, zelené a modré farby. Toto je veľmi základný príklad. Ako to teda urobiť. Na tento účel používame RGB modul Magicbit a vstavaný LDR. Najprv sa musíte naučiť niečo o teórii. To je o množstve odrazu svetla. Teraz kladiem otázku od vás. Aký farebný povrch najviac odráža červené svetlo? Tiež aké povrchy, ktoré väčšinou odrážajú zelené a modré svetlo. Rozmýšľaj trochu. Ale odpoveď je jednoduchá. Červeno sfarbený povrch väčšinou odráža svetlo červenej farby. Zelené a modré povrchy budú tiež odrážať zelené a modré svetlá. V tomto projekte teda používame túto teóriu. Aby sme rozoznali farbu, vysielame jedno po druhom červené, zelené a modré svetlo. Zakaždým, keď meriame množstvo odrazu pomocou hodnoty LDR. Ak niektoré svetlo poskytne najväčší odraz ako ostatné dve svetlá, potom by tento povrch mal byť prevažne odrazeným farebným povrchom.
Krok 3: Nastavenie hardvéru
Toto je veľmi jednoduché. Zapojte svoj modul RGB do pravého horného portu Magicbit. Tento modul má WS2812B Neopixel LED. Táto LED dióda má 4 piny. Dva na napájanie a dva na vstup a výstup dát. Pretože používame jednu diódu, potrebujeme iba napájacie piny a údaje v pine. Ak nemáte tento modul, môžete si kúpiť modul Neopixel. Ak ste si kúpili tento typ modulu, musíte k Magicbit pripojiť napájacie piny a údaje v kolíku. To je veľmi ľahké. Pripojte VCC a GND zariadenia Magicbit k napájacím kolíkom modulu RGB a kolíka D33 k dátovému kolíku.
Krok 4: Nastavenie softvéru
Väčšinu práce robí programovanie. Na programovanie nášho Magicbit používame Arduino IDE. V kóde používame niekoľko knižníc. Sú to knižnica Adafruit Neopixel pre ovládanie Neopixel LED a knižnica Adafruit OLED pre rukoväť OLED. V nastavení konfigurujeme naše vstupy a výstupy. Tiež nakonfigurujte vstavaný OLED displej na Magicbit. V slučke skontrolujeme, či je tlačidlo Magicbit stlačené alebo nie. Ak stlačí, je vstupný signál 0. Pretože je už doskou vytiahnutý nahor. Ak je stlačené, vykonáme kontrolu farieb. Ak nie, potom sa na obrazovke zobrazí vyhlásenie „bez farby“. Keď je tlačidlo stlačené, automaticky zapne červené, zelené a modré svetlo jeden po druhom a uloží množstvo odrazu farieb do troch premenných. Ďalej sme tieto hodnoty porovnali a vybrali farbu maximálnej hodnoty, ktorá sa má zobraziť ako výstupná farba.
Pripojte teda kábel micro USB k Magicbit a vyberte správne typ dosky a porty com. Teraz nahrajte kód. Potom je čas otestovať náš senzor. Ak to chcete otestovať, ponechajte na module LDR a RGB povrch papiera alebo hárku s červeným, zeleným alebo modrým povrchom a stlačte ľavé tlačidlo. Potom OLED displej ukáže, aká je farba povrchu. Ak je to nesprávne, dôvodom je, že niektoré farby majú vysokú intenzitu svetla. Napríklad na každom zelenom povrchu je výstup červený, potom musíte z určitej miery znížiť jas červeného svetla. Pretože červené svetlo má v takom prípade veľmi vysoký jas. Majú teda vysoký odraz. Ak neviete, ako ovládať jas, pozrite si návod v nižšie uvedenom odkaze.
magicbit-arduino.readthedocs.io/en/latest/
V tomto odkaze nájdete, ako ovládať tento modul RGB z Magicbit. A tiež nájdete, ako pracovať s LDR a tlačidlom pomocou Magicbit. Prečítajte si tento dokument a prečítajte si ďalej, ako vylepšiť snímač farieb. Pretože toto je veľmi základný príklad toho, ako fungujú farebné senzory. Väčšina typov farebných senzorov funguje týmto spôsobom. Skúste to teda zlepšiť odstránením hluku okolitého svetla a iných zvukov.
Krok 5: Code of Color Sensor Arduino
#zahrnúť
#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 displej (128, 64); #define LDR 36 #define Button 35 int R_value, G_value, B_value; neplatné nastavenie () {LED.begin (); LED.show (); pinMode (LDR, INPUT); pinMode (tlačidlo, VSTUP); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); oneskorenie (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// ak je tlačidlo stlačené LED.setPixelColor (0, LED. Color (0, 50, 0)); // na redcolour LED.show (); oneskorenie (100); R_value = analogRead (LDR); // získajte červenú montáž LED.setPixelColor (0, LED. Color (150, 0, 0)); // na zelenú farbu LED.show (); oneskorenie (100); G_value = analogRead (LDR); // get green mount LED.setPixelColor (0, LED. Color (0, 0, 255)); // na bluecolour LED.show (); oneskorenie (100); B_value = analogRead (LDR); // získanie modrej montáže, ak (R_value> G_value && R_value> B_value) {// červená farba sa najviac odráža na displeji ("ČERVENÁ", 3); } else if (G_value> R_value && G_value> B_value) {// zelená je najviac odrazená Zobrazenie ("ZELENÁ", 3); } else if (B_value> R_value && B_value> G_value) {// modrá farba sa najviac prejavuje na displeji ("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)); // vypnuté RGB LED.show (); Displej („ŽIADNA FARBA“, 2); }} void Display (reťazec, veľkosť int) {// zobrazenie údajov display.clearDisplay (); display.setTextSize (veľkosť); // Normálna 1: 1 pixelová mierka display.setTextColor (WHITE); // Nakreslite biely text display.setCursor (0, 20); // Začnite v ľavom hornom rohu display.println (commond); display.display (); }