Mündəricat:

Pimoroni Enviro ilə İşıq və Rəng Ölçmələri: Micro üçün bit: bit: 5 Addım
Pimoroni Enviro ilə İşıq və Rəng Ölçmələri: Micro üçün bit: bit: 5 Addım

Video: Pimoroni Enviro ilə İşıq və Rəng Ölçmələri: Micro üçün bit: bit: 5 Addım

Video: Pimoroni Enviro ilə İşıq və Rəng Ölçmələri: Micro üçün bit: bit: 5 Addım
Video: Micro:bit Sound to light 2024, Noyabr
Anonim
Pimoroni Enviro ilə İşıq və Rəng Ölçmələri: Micro: bit üçün bit
Pimoroni Enviro ilə İşıq və Rəng Ölçmələri: Micro: bit üçün bit
Pimoroni Enviro ilə İşıq və Rəng Ölçmələri: Micro: bit üçün bit
Pimoroni Enviro ilə İşıq və Rəng Ölçmələri: Micro: bit üçün bit
Pimoroni Enviro ilə İşıq və Rəng Ölçmələri: Micro: bit üçün bit
Pimoroni Enviro ilə İşıq və Rəng Ölçmələri: Micro: bit üçün bit

Əvvəllər işıq və rəng ölçmələrinə imkan verən bəzi qurğular üzərində işləyirdim və bu ölçülərin arxasındakı nəzəriyyə haqqında burada və buradakı təlimatları öyrənə bilərsiniz.

Pimoroni bu yaxınlarda səs səviyyəsinin ölçülməsi üçün MEMS mikrofonu, BME280 temperatur/rütubət/hava təzyiqi sensoru və TCS3475 işıq və rəng sensoru (RGBC) ilə birlikdə gələn mikro: bit üçün eklenti olan enviro: bit buraxdı. Əlavə olaraq rəng sensorunun yanlarında əks olunan işıqla obyektlərin rəngini ölçməyə imkan verən iki LED var. Bu ölçüləri yerinə yetirmək üçün özünüz bir alət qurmaq heç vaxt asan olmamışdı.

Burada enviro: bitin rəng və işıq ölçmələri üçün istifadə oluna biləcəyini və bunları yerinə yetirməyə imkan verən MakeCode skriptini təsvir etmək istərdim. Micro: bit və enviro: bit birləşməsi elmi ölçülərin praktiki olaraq nümayiş etdirilməsi və onlarla oynamaq üçün gözəl və ucuz bir cihazdır.

Bu təlimat "Gökkuşağı" yarışmasının bir hissəsidir. İstəsəniz, səsinizi verin

Addım 1: İstifadə olunan materiallar

Mikro: bit, Pimoroni -də 13 GBP.

Pimoroni Enviro: bit, Pimoroni -də 20 GBP.

Pimoroni Gücü: bit, Piomoroni -də 6 GBP. Micro: bit üçün batareya paketlərindən və ya LiPo -dan da istifadə edə bilərsiniz

Rosco Cinegel rəng filtri nümunə bloku. Mənimki Modulor, Berlindən.

IKEA rəngli plastik qablar. IKEA, Berlin.

Vəhşi çiçəklər. Potsdam-Golmda bir çəmənlik.

Addım 2: MakeCode/JavaScript Script

Pimoroni, həm MakeCode/JavaScript kodlaşdırma mühiti, həm də MicroPython üçün Enviro: bit üçün kitabxana hazırladı. Burada MakeCode istifadə etdim, çünki skriptlər birbaşa micro: bit -ə yüklənə bilər və blok kodlamasına imkan verir.

Ssenari qırmızı, yaşıl və mavi (RGB) və aydın (C) kanalların dəyərlərini oxuyur. Birincilər 0 -dan 255 -ə, ikincisi 0 -dan 61000 -ə qədər olan bütün dəyərlərdə verilir.

Aydın kanalın diapazonu çox genişdir və parlaq gün işığından qaranlıq bir otağa qədər ölçmə aparmağa imkan verir.

İndiyə qədər rəng ölçmə funksiyasının bütün detallarını anlamıram, amma bəzi düzəliş və normallaşdırma mexanizmlərinin tətbiq olunduğunu düşünürəm.

Əvvəlcə bütün dörd kanalın dəyərləri alınır. Nəticələri 5x5 LED matrisində göstərə bilmək üçün, ölçüləri bir LED ilə təmsil olunan 5 (RGB) və ya 10 (C) qutulara yerləşdirmək üçün istifadə olunur (R, G, B) və ya iki (C) sıra.

RGB vəziyyətində miqyaslama xətti olur və hər bir qutunun interval ölçüsü 51 vahiddir. C vəziyyətində, miqyaslama 10 addımdan artıq logarifmikdir (log3, buna görə də hər addım əvvəlkinin 3 qatına bərabərdir). Bu, həm çox qaranlıq, həm də çox parlaq şərtləri göstərməyə imkan verir.

A düyməsinə basaraq R, G və B dəyərlərini rəqəmlərlə, B düyməsini basaraq C dəyərini göstərin. A+B LEDləri aktivləşdirir və B onları söndürəcək.

bR = 0 // qutularına icazə verin

bG = 0 olsun bB = 0 olsun bS = 0 olsun bC = 0 olsun bCx = 0 olsun S = 0 // ölçülən dəyərlər C = 0 olsun B = 0 olsun G = 0 olsun R = 0 əsas olsun.forver (() => {if (input.buttonIsPressed (Button. AB)) {envirobit.setLEDs (envirobit. OnOff. On)} else if (input.buttonIsPressed (Button. A)) {basic.showString ("R:" + R +) "G:" + G + "B:" + B)} başqa halda (input.buttonIsPressed (Button. B)) {basic.showString ("C:" + C) envirobit.setLEDs (envirobit. OnOff. Off)} başqa {basic.pause (100) R = envirobit.getRed () G = envirobit.getGreen () B = envirobit.getBlue () C = envirobit.getLight () bC = 5 bCx = 5 əgər (R> = 204) { // binning, max 255 bR = 4} başqa (R> = 153) {bR = 3} başqa (R> = 102) {bR = 2} başqa (R> = 51) {bR = 1} başqa {bR = 0} if (G> = 204) {bG = 4} if if (G> = 153) {bG = 3} if if (G> = 102) {bG = 2} if if (G> = 51)) {bG = 1} başqa {bG = 0} əgər (B> = 204) {bB = 4} başqa (B> = 153) {bB = 3} başqa olarsa (B> = 102) {bB = 2} else if (B> = 51) {bB = 1} else {bB = 0} if (C> = 60000)) {// SatCh bCx = 4} else (C> = 20000) {bCx = 3} if if (C> = 6600) {bCx = 2} if if (C> = 2200) {bCx = 1} else if (C> = 729) {bCx = 0} başqa halda (C> = 243) {bC = 4} başqa halda (C> = 81) {bC = 3} başqa halda (C> = 27) {bC = 2} else if (C> = 9) {bC = 1} else {bC = 0} // led basic.clearScreen () yazsanız (bCx <5) {led.plot (1, bCx)} başqa {led.plot (0, bC)} led.plot (2, bR) led.plot (3, bG) led.plot (4, bB)}})

Addım 3: RGB Ölçmələri Alınır: Göndərilən İşıq Modu

RGB Ölçmələri Alınır: Göndərilən İşıq Modu
RGB Ölçmələri Alınır: Göndərilən İşıq Modu
RGB Ölçmələri Alınır: Göndərilən İşıq Modu
RGB Ölçmələri Alınır: Göndərilən İşıq Modu
RGB Ölçmələri Alınır: Göndərilən İşıq Modu
RGB Ölçmələri Alınır: Göndərilən İşıq Modu
RGB Ölçmələri Alınır: Göndərilən İşıq Modu
RGB Ölçmələri Alınır: Göndərilən İşıq Modu

Daha əvvəl də qeyd edildiyi kimi, iki rəng ölçmə rejimi var: ötürülmüş və əks olunan işıq spektroskopiyası. Göndərilən işıq rejimində işıq rəngli bir filtrdən və ya sensorun həllindən keçir. Yansıtılan işıq ölçmələrində yayılan işıq məs. LED -lər bir obyekt tərəfindən əks olunur və sensor tərəfindən aşkarlanır.

RGB dəyərləri daha sonra mikro: bit 5x5 LED matrisinin 3-5 -ci sıralarında göstərilir, üst LEDlər aşağı, aşağı LEDlər isə yüksək dəyərləri əks etdirir.

Burada ötürülən işıq ölçmələrində göstərilən təcrübələr üçün gündüz işığından istifadə etdim və sensorun önünə Rosco nümunə paketindən rəngli filtrlər qoydum. Efektləri, xüsusən də qırmızı kanalda görə bilərsiniz. Şəkillərə baxın və nümunələri müqayisə edin.

Həqiqi dəyərləri oxumaq üçün A düyməsini basmaq kifayətdir.

Addım 4: Yansıtılan İşıq RGB və Parlaqlıq Ölçmələri

Yansıtılan İşıq RGB və Parlaqlıq Ölçmələri
Yansıtılan İşıq RGB və Parlaqlıq Ölçmələri
Yansıtılan İşıq RGB və Parlaqlıq Ölçmələri
Yansıtılan İşıq RGB və Parlaqlıq Ölçmələri
Yansıtılan İşıq RGB və Parlaqlıq Ölçmələri
Yansıtılan İşıq RGB və Parlaqlıq Ölçmələri

Yansıtılan işıq ölçmələri üçün LED -ləri yandırdım (düymə [A+B]) və sensorun önünə parlaq rəngli IKEA uşaq fincanlarından bir neçə parça qoydum. Şəkillərdən də göründüyü kimi, RGB dəyərləri gözlənildiyi kimi dəyişir.

Parlaqlıq ölçmələri üçün aşağı dəyərlər birinci, yüksək dəyərlər ikinci cərgədə göstərilir. Yuxarıdakı aşağı dəyərlər, aşağı LEDlər tərəfindən daha yüksək dəyərlər. Dəqiq dəyəri oxumaq üçün B düyməsini basın.

Addım 5: Yansıtılan İşıq Ölçmələri: Çiçəklər

Yansıtılmış İşıq Ölçmələri: Çiçəklər
Yansıtılmış İşıq Ölçmələri: Çiçəklər
Yansıtılmış İşıq Ölçmələri: Çiçəklər
Yansıtılmış İşıq Ölçmələri: Çiçəklər
Yansıtılmış İşıq Ölçmələri: Çiçəklər
Yansıtılmış İşıq Ölçmələri: Çiçəklər
Yansıtılmış İşıq Ölçmələri: Çiçəklər
Yansıtılmış İşıq Ölçmələri: Çiçəklər

Çəmənlikdən bir neçə çöl çiçəyi götürdüm və üzərində rəng ölçmələri aparmağa çalışdım: haşhaş, qarğıdalı çiçəyi, qəhvəyi çiyələk, divar harkweed və dilandelon yarpağı. RGB dəyərləri [R, G, B] idi:

  • heç biri [92, 100, 105]
  • haşhaş (qırmızı) [208, 98, 99]
  • qarğıdalı çiçəyi (mavi) [93, 96, 138]
  • qəhvəyi kələm (yasəmən) [122, 97, 133]
  • divar harkweed (sarı) [144, 109, 63]
  • dandelon yarpağı (yaşıl) [164, 144, 124]

Ən azı ilk üç bitki üçün gözləntilərə uyğundur. Rəngləri dəyərlərdən göstərmək üçün burada olduğu kimi bir rəng kalkulyatorundan istifadə edə bilərsiniz.

Tövsiyə: