Spisu treści:
Wideo: Prosty czujnik koloru DIY firmy Magicbit: 5 kroków
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
W tym samouczku dowiemy się, jak zrobić prosty czujnik koloru za pomocą Magicbit z Arduino.
Kieszonkowe dzieci
- Magicbit
- Kabel USB-A do Micro-USB
Krok 1: Historia
Cześć chłopaki, czasami trzeba użyć czujników koloru do pewnych celów. Ale może nie wiesz, jak one działają. W tym samouczku dowiesz się, jak zrobić prosty czujnik koloru DIY za pomocą Magicbit z Arduino. Zacznijmy.
Krok 2: Teoria i metodologia
W tym projekcie oczekujemy, że nauczymy Cię budować czujnik koloru, który może wykrywać kolory czerwony, zielony i niebieski. To bardzo prosty przykład. Więc jak to zrobić. Do tego celu używamy modułu RGB Magicbita oraz wbudowanego LDR. Przede wszystkim trzeba dowiedzieć się o jakiejś teorii. Chodzi o ilość odbicia światła. Teraz zadaję ci pytanie. Jaka kolorowa powierzchnia najbardziej odbija światło w kolorze czerwonym? a także jakie powierzchnie, które w większości odbijają światło zielone i niebieskie. Pomyśl trochę. Ale odpowiedź jest prosta. Red kolorowe powierzchnia przeważnie odzwierciedlają czerwony kolor światła. Również zielone i niebieskie powierzchnie będą odbijać zielone i niebieskie światło. Więc w tym projekcie używamy tej teorii. Aby rozpoznać kolor emitujemy kolejno czerwone, zielone i niebieskie światła. Za każdym razem mierzymy wielkość odbicia za pomocą wartości LDR. Jeśli jakieś światło da najwięcej odbicia niż pozostałe dwa, to ta powierzchnia powinna być w większości odbitą kolorową powierzchnią.
Krok 3: Konfiguracja sprzętu
To bardzo proste. Podłącz moduł RGB do prawego górnego portu Magicbit. Ten moduł ma diodę LED Neopixel WS2812B. Ta dioda LED ma 4 piny. Dwa władzy i dwa dla danych i na zewnątrz. Ponieważ używamy jednego leda potrzebujemy tylko pinów zasilania i danych w pinie. Jeśli nie masz tego modułu, możesz kupić i moduł Neopixel. Jeśli kupiłeś ten rodzaj modułu, musisz podłączyć piny zasilania i dane w pin do Magicbit. To bardzo proste. Podłącz VCC i GND Magicbit do pinów zasilania modułu RGB i pin D33 do pinu danych.
Krok 4: Konfiguracja oprogramowania
Większość wykonała programowanie. Używamy Arduino IDE do programowania naszego Magicbita. W kodzie korzystamy z kilku bibliotek. Są to biblioteka Adafruit Neopixel do sterowania Neopixel LED oraz biblioteka Adafruit OLED do obsługi OLED uchwytu. W konfiguracji konfigurujemy nasze wejścia i wyjścia. Skonfiguruj także wbudowany wyświetlacz OLED na Magicbit. W pętli sprawdzamy, czy lewy przycisk Magicbita jest wciśnięty czy nie. Jeśli wciśnięty to sygnał wejściowy wynosi 0. Bo jest już podciągany przez płytkę. Jeśli zostanie naciśnięty, to sprawdzamy kolor. Jeśli nie, na ekranie pojawi się komunikat „brak koloru”. Po naciśnięciu przycisku automatycznie włączają się kolejno czerwone, zielone i niebieskie światła i przechowują ilość odbić kolorów w trzech zmiennych. Następnie porównaliśmy te wartości i wybraliśmy maksymalną wartość koloru do wyświetlenia jako kolor wyjściowy.
Podłącz więc kabel micro USB do Magicbit i prawidłowo wybierz typ płyty i porty COM. Teraz prześlij kod. Następnie nadszedł czas, aby przetestować nasz czujnik. Aby to przetestować, trzymaj wierzchnią część czerwonego, zielonego lub niebieskiego papieru lub arkusza na module LDR i RGB i naciśnij lewy przycisk. Następnie wyświetlacz OLED pokaże jaki jest kolor powierzchni. Jeśli to źle, powodem jest to, że niektóre kolory mają wysoką intensywność światła. Na przykład na każdej zielonej powierzchni wyjście jest czerwone, wtedy trzeba zmniejszyć jasność światła czerwonego o pewną wartość. Ponieważ czerwone światło ma w tym przypadku bardzo wysoką jasność. Więc ma wysoki współczynnik odbicia. Jeśli nie wiesz, jak kontrolować jasność, zapoznaj się z samouczkiem w linku poniżej.
magicbit-arduino.readthedocs.io/en/latest/
W tym linku znajdziesz sposób sterowania modułem RGB firmy Magicbit. A także możesz dowiedzieć się, jak pracować z LDR i przyciskiem za pomocą Magicbit. Przeczytaj ten dokument i dowiedz się więcej, jak ulepszyć czujnik koloru. Ponieważ jest to bardzo podstawowy przykład działania czujników kolorów. Większość typ czujników koloru działa w ten sposób. Spróbuj więc to poprawić, usuwając szum światła otoczenia i inne dźwięki.
Krok 5: Arduino Code of Color Sensor
#włączać
#zdefiniuj 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 Wyświetlacz Adafruit_SSD1306 (128, 64); #define LDR 36 #define Button 35 int wartość_R, wartość_G, wartość_B; void setup () {LED.begin (); LED.show(); pinMode(LDR, WEJŚCIE); pinMode (przycisk, WEJŚCIE); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display(); opóźnienie (1000); display.clearDisplay(); Serial.początek(9600); } void loop() { if(digitalRead(Przycisk)==0){// jeśli przycisk jest wciśnięty LED.setPixelColor(0, LED. Color(0, 50, 0)); //na czerwonym kolorze LED.show(); opóźnienie (100); R_value=analogRead(LDR);//uzyskaj czerwony montaż LED.setPixelColor(0, LED. Color(150, 0, 0));//na zielonym kolorze LED.show(); opóźnienie (100); G_value=analogRead(LDR);//uzyskaj zielony montaż LED.setPixelColor(0, LED. Color(0, 0, 255)); //na niebieskim kolorze LED.show(); opóźnienie (100); B_value=analogRead(LDR);//uzyskaj niebieski montaż if (R_value>G_value && R_value>B_value){//czerwony jest najbardziej widoczny Display("RED", 3); } else if (G_value>R_value && G_value>B_value){//zielony jest najbardziej odzwierciedlony Display("GREEN", 3); } else if (B_value>R_value && B_value>G_value){//niebieski jest najbardziej odzwierciedlony Display("BLUE", 3); } Serial.print("CZERWONY="); Serial.print(R_wartość); Serial.print ("zielone ="); Serial.print(G_value); Serial.print ("niebieski ="); Serial.println(B_value); } else{ LED.setPixelColor(0, LED. Color(0, 0, 0)); //wyłącz RGB LED.show(); Wyświetlacz ("brak koloru", 2); } } void Display(String commond, int size) { // wyświetl dane display.clearDisplay(); display.setTextSize(rozmiar); // Normalna skala pikseli 1:1 display.setTextColor(WHITE); // Rysuj biały tekst display.setCursor(0, 20); // Rozpocznij w lewym górnym rogu display.println(commond); display.display(); }