Mündəricat:

Magicbit -dən sadə DIY rəng sensoru: 5 addım
Magicbit -dən sadə DIY rəng sensoru: 5 addım

Video: Magicbit -dən sadə DIY rəng sensoru: 5 addım

Video: Magicbit -dən sadə DIY rəng sensoru: 5 addım
Video: Learn Coding with MagicBit 2024, Noyabr
Anonim
Image
Image

Bu dərslikdə Arduino ilə Magicbit istifadə edərək sadə bir rəng sensoru necə edəcəyimizi öyrənəcəyik.

Təchizat

  • Magicbit
  • USB-A-dan Mikro-USB Kabelinə

Addım 1: Hekayə

Avadanlıq Quraşdırması
Avadanlıq Quraşdırması

Salam uşaqlar, bəzən bəzi məqsədlər üçün rəng sensorlarından istifadə etməlisiniz. Amma bəlkə də onların necə işlədiyini bilmirsən. Beləliklə, bu dərslikdə Arduino ilə Magicbit istifadə edərək sadə bir DIY rəng sensoru necə edəcəyinizi öyrənəcəksiniz. Başlayaq.

Addım 2: nəzəriyyə və metodologiya

Bu layihədə sizə qırmızı, yaşıl və mavi rəngləri algılayan rəng sensoru qurmağı öyrətməyi gözləyirik. Bu çox əsas bir nümunədir. Beləliklə, bunu necə etmək olar. Bu məqsədlə Magicbit və daxili LDR -nin RGB modulundan istifadə edirik. Əvvəlcə bəzi nəzəriyyələri öyrənməlisiniz. İşığın əks olunma miqdarı haqqında. İndi sizdən bir sual soruşuram. Qırmızı rəng işığını ən çox əks etdirən hansı rəngli səthdir, həm də əsasən Yaşıl və Mavi işıqları əks etdirən səthlər. Bir az fikirləş. Ancaq cavab sadədir. Qırmızı rəngli səth əsasən qırmızı işığı əks etdirir. Yaşıl və mavi səthlər yaşıl və mavi işıqları əks etdirəcək. Bu layihədə bu nəzəriyyədən istifadə edirik. Rəngi tanımaq üçün qırmızı, yaşıl və mavi işıqları bir -bir yandırırıq. Hər dəfə LDR dəyərindən istifadə edərək əks olunma miqdarını ölçürük. Əgər bir işıq digər iki işığa nisbətən daha çox əks olunarsa, o səth əsasən rəngli səthə əks olunmalıdır.

Addım 3: Hardware Setup

Bu çox sadə. RGB modulunuzu Magicbit -in yuxarı sağ limanına qoşun. Bu modulda WS2812B Neopixel LED var. Bu LEDdə 4 pin var. İki güc və ikisi Məlumat giriş və çıxış üçün. Bir led istifadə etdiyimiz üçün yalnız güc pinlərinə və pin məlumatlarına ehtiyacımız var. Bu modul yoxdursa, satın ala bilərsiniz və Neopixel modulu. Belə bir modul satın alsanız, güc pinlərini və məlumatları pindəki Magicbit -ə bağlamalısınız. Bu çox asandır. Magicbit -in VCC və GND -ni RGB modulunun pinlərinə və D33 pinini məlumat pininə qoşun.

Addım 4: Proqram Quraşdırması

Çox hissəsi proqramlaşdırma ilə aparılır. Magicbit proqramlaşdırmaq üçün Arduino IDE -dən istifadə edirik. Kodda bir neçə kitabxanadan istifadə edirik. Bunlar idarəetmə Neopixel LED üçün Adafruit Neopixel kitabxanası və sapı OLED üçün Adafruit OLED kitabxanasıdır. Quraşdırmada giriş və çıxışlarımızı konfiqurasiya edirik. Magicbit -də quraşdırılmış OLED ekranı da konfiqurasiya edin. Döngədə, Magicbit düyməsinin sol ələ basıldığını yoxlayırıq. Basıldıqda giriş siqnalı 0 -dır. Çünki lövhə tərəfindən artıq çəkilir. Basıldıqda rəng yoxlamasını edirik. Əks təqdirdə, ekranda "rəng yoxdur" ifadəsi görünəcək. Düymə basıldıqda avtomatik olaraq qırmızı, yaşıl və mavi işıqları bir -bir yandırın və rənglərin əks olunma miqdarını üç dəyişənə daxil edin. Sonra bu dəyərləri müqayisə etdik və çıxış rəngi kimi göstərmək üçün maksimum dəyər rəngini seçdik.

Mikro USB kabelini Magicbit -ə qoşun və lövhə növünü və giriş portlarını düzgün seçin. İndi kodu yükləyin. Sonra sensorumuzu sınamağın vaxtı gəldi. Bunu yoxlamaq üçün LDR və RGB modulunda qırmızı, yaşıl və ya mavi üzlü kağızı və ya vərəqi saxlayın və sol düyməni basın. Sonra OLED ekran səthin rənginin nə olduğunu göstərəcək. Səhv olarsa, bəzi rənglərin yüksək işıq intensivliyinə sahib olmasıdır. Nümunə olaraq hər yaşıl səthdə çıxış qırmızıdır, sonra qırmızı işığın parlaqlığını müəyyən qədər azaltmalısınız. Çünki qırmızı işıq çox yüksək parlaqlığa malikdir. Buna görə yüksək əks olunmağa malikdir. Parlaqlığı necə idarə edəcəyinizi bilmirsinizsə, aşağıdakı linkdəki təlimata baxın.

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

Bu linkdə Magicbit -dən RGB modulunu necə idarə edəcəyinizi tapa bilərsiniz. Həm də LDR ilə necə işləməyi və Magicbit istifadə edərək düyməni basmağı öyrənə bilərsiniz. Bu sənədi oxuyun və rəng sensorunu necə yaxşılaşdıracağınızı öyrənin. Çünki bu rəng sensorlarının necə işlədiyinə dair çox sadə bir nümunədir. Çox rəng sensoru bu şəkildə işləyir. Buna görə də ətrafdakı işıq səslərini və digər səsləri aradan qaldıraraq bunu yaxşılaşdırmağa çalışın.

Addım 5: Arduino Rəng Sensoru Kodu

#daxil edin

#LED_PIN 33 təyin edin

#define LED_COUNT 1 Adafruit_NeoPixel LED (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #include #include #include #define OLED_RESET 4 Adafruit_SSD1306 displeyi (128, 64); #define LDR 36 #define Button 35 int R_value, G_value, B_value; void setup () {LED.begin (); LED.show (); pinMode (LDR, GİRİŞ); pinMode (Düymə, GİRİŞ); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); display.display (); gecikmə (1000); display.clearDisplay (); Serial.begin (9600); } void loop () {if (digitalRead (Button) == 0) {// düyməsinə basıldığı təqdirdə LED.setPixelColor (0, LED. Color (0, 50, 0)); // qırmızı rəngli LED.show (); gecikmə (100); R_value = analogRead (LDR); // qırmızı montaj LED.setPixelColor (0, LED. Color (150, 0, 0)); // yaşıl rəngdə LED.show (); gecikmə (100); G_value = analogRead (LDR); // yaşıl montaj LED.setPixelColor əldə edin (0, LED. Color (0, 0, 255)); // mavi rəngli LED.show (); gecikmə (100); B_value = analogRead (LDR); // mavi rəng alsanız (R_value> G_value && R_value> B_value) {// qırmızı ən çox əks olunan Ekrandır ("QIRMIZI", 3); } else if (G_value> R_value && G_value> B_value) {// yaşıl ən çox əks olunan Görüntüdür ("YEŞİL", 3); } else if (B_value> R_value && B_value> G_value) {// mavi ən çox əks olunan Görüntüdür ("MAVİ", 3); } Serial.print ("QIRMIZI ="); Serial. çap (R_ dəyəri); Serial.print ("GREEN ="); Serial.print (G_value); Serial.print ("MAVİ ="); Serial.println (B_value); } başqa {LED.setPixelColor (0, LED. Color (0, 0, 0))); // off RGB LED.show (); Ekran ("RENK YOX", 2); }} void Display (String commond, int size) {// məlumatların göstərilməsi display.clearDisplay (); display.setTextSize (ölçü); // Normal 1: 1 piksel ölçülü display.setTextColor (BEYAZ); // Ağ mətn çəkin display.setCursor (0, 20); // Sol üst küncdəki ekrandan başlayın.println (commond); display.display (); }

Tövsiyə: