İçindekiler:

Pimoroni Enviro:bit için Micro:bit: 5 Adım ile Işık ve Renk Ölçümleri
Pimoroni Enviro:bit için Micro:bit: 5 Adım ile Işık ve Renk Ölçümleri

Video: Pimoroni Enviro:bit için Micro:bit: 5 Adım ile Işık ve Renk Ölçümleri

Video: Pimoroni Enviro:bit için Micro:bit: 5 Adım ile Işık ve Renk Ölçümleri
Video: E-ink Display Project Ideas 2022 (Arduino, ESP32, Micro:bit, inky:bit Pimoroni, epaper, inspiration) 2024, Temmuz
Anonim
Mikro:bit için Pimoroni Enviro:bit ile Işık ve Renk Ölçümleri
Mikro:bit için Pimoroni Enviro:bit ile Işık ve Renk Ölçümleri
Mikro:bit için Pimoroni Enviro:bit ile Işık ve Renk Ölçümleri
Mikro:bit için Pimoroni Enviro:bit ile Işık ve Renk Ölçümleri
Mikro:bit için Pimoroni Enviro:bit ile Işık ve Renk Ölçümleri
Mikro:bit için Pimoroni Enviro:bit ile Işık ve Renk Ölçümleri

Daha önce ışık ve renk ölçümlerine izin veren bazı cihazlar üzerinde çalışıyordum ve burada ve burada bu tür ölçümlerin arkasındaki teori hakkında çok şey bulabilirsiniz.

Pimoroni yakın zamanda, ses seviyesi ölçümleri için bir MEMS mikrofonu, bir BME280 sıcaklık/nem/hava basıncı sensörü ve bir TCS3475 ışık ve renk sensörü (RBC) ile birlikte gelen micro:bit için bir eklenti olan enviro:bit'i piyasaya sürdü. Ek olarak, renk sensörünün yan taraflarına yerleştirilmiş iki adet LED, yansıyan ışıkla nesnelerin rengini ölçmeye olanak tanır. Bu ölçümleri gerçekleştirmek için kendiniz bir araç oluşturmak hiç bu kadar kolay olmamıştı.

Burada enviro:bit'in renk ve ışık ölçümleri için nasıl kullanılabileceğini ve bunları gerçekleştirmeyi sağlayan MakeCode betiğini anlatmak istiyorum. micro:bit ve enviro:bit kombinasyonu, bilimsel ölçümlerin ilkelerini uygulamalı olarak göstermek ve onlarla oynamak için güzel ve ucuz bir cihazdır.

Bu talimat, "Gökkuşağı" yarışmasının bir parçasıdır. Beğendiyseniz lütfen oyunuzu verin. Teşekkürler

Adım 1: Kullanılan Malzemeler

Mikro:bit, Pimoroni'de 13 GBP.

Pimoroni Enviro:bit, Pimoroni'de 20 GBP.

Pimoroni Gücü: bit, Piomoroni'de 6 GBP. Ayrıca micro:bit için pil paketleri veya bir LiPo kullanabilirsiniz.

Rosco Cinegel renk filtresi örnek bloğu. Benimkini Modulor, Berlin'den aldım.

IKEA renkli plastik bardaklar. IKEA, Berlin.

Kır çiçekleri. Potsdam-Golm'da bir çayır.

2. Adım: MakeCode/JavaScript Komut Dosyası

Pimoroni, hem MakeCode/JavaScript kodlama ortamı hem de MicroPython için Enviro:bit için bir kitaplık geliştirmiştir. Burada, betikler doğrudan mikro:bit'e yüklenebildiği ve blok kodlamaya izin verdiği için MakeCode kullandım.

Komut dosyası, kırmızı, yeşil ve mavi (RGB) ve net (C) kanalların değerlerini okur. İlkler 0 ila 255 arasındaki değerlerde, ikincisi 0 ila yaklaşık 61000 arasındaki tüm aralıkta verilir.

Net kanal aralığı çok geniştir ve parlak gün ışığından karanlık bir odaya kadar ölçüm yapılmasına olanak tanır.

Şimdiye kadar renk ölçüm fonksiyonunun tüm ayrıntılarını anlamadım, ancak bazı düzeltme ve normalleştirme mekanizmalarının uygulandığını varsayıyorum.

İlk başta, dört kanalın hepsinin değerleri alınır. Sonuçları 5x5 LED matrisinde görüntüleyebilmek için, sonuçları bir (R, G, B) veya bir LED ile temsil edilen 5 (RGB) veya 10 (C) kutuya yerleştirmek için ölçülen değerler kullanılır. iki (C) satır.

RGB durumunda, ölçekleme doğrusaldır ve her bölmenin aralık boyutu 51 birim genişliğindedir. C durumunda, ölçekleme 10 adımda logaritmiktir (log3, yani her adım bir öncekinin 3 katıdır). Bu, hem çok loş hem de çok parlak koşulların görüntülenmesini sağlar.

A düğmesine basmak, R, G ve B değerlerini sayılarla, B'ye basmak ise C değerini görüntüler. A+B LED'leri etkinleştirir ve B onları kapatır.

bR = 0 olsun // kutular

olsun bG = 0 olsun bB = 0 olsun bS = 0 olsun bC = 0 olsun bCx = 0 olsun S = 0 // ölçülen değerler olsun C = 0 olsun B = 0 olsun G = 0 olsun R = 0 basic.forever(() => { if (input.buttonIsPressed(Button. AB)) { envirobit.setLEDs(envirobit. OnOff. On) } else if (input.buttonIsPressed(Button. A)) { basic.showString("R: " + R + " G: " + G + " B: " + B) } else if (input.buttonIsPressed(Button. B)) { basic.showString("C: " + C) envirobit.setLEDs(envirobit. OnOff. Off) } else { basic.pause(100) R = envirobit.getRed() G = envirobit.getGreen() B = envirobit.getBlue() C = envirobit.getLight() bC = 5 bCx = 5 if (R >= 204) { // binning, max 255 bR = 4 } else if (R >= 153) { bR = 3 } else if (R >= 102) { bR = 2 } else if (R >= 51) { bR = 1 } başka { bR = 0 } if (G >= 204) { bG = 4 } else if (G >= 153) { bG = 3 } else if (G >= 102) { bG = 2 } else if (G >= 51) { bG = 1 } else { bG = 0 } if (B >= 204) { bB = 4 } else if (B >= 153) { bB = 3 } else if (B >= 102) { bB = 2 } else if (B >= 51) { bB = 1 } else { bB = 0 } if (C >= 60000) { // Doygunluk bCx = 4 } else if (C >= 20000) { bCx = 3 } else if (C >= 6600) { bCx = 2 } else if (C >= 2200) { bCx = 1 } else if (C >= 729) { bCx = 0 } else if (C >= 243) { bC = 4 } else if (C >= 81) { bC = 3 } else if (C >= 27) { bC = 2 } else if (C >= 9) { bC = 1 } else { bC = 0 } // led basic.clearScreen()'e yaz if (bCx < 5) { led.plot(1, bCx) } else { led.plot (0, bC) } led.plot(2, bR) led.plot(3, bG) led.plot(4, bB) } })

Adım 3: RGB Ölçümlerinin Alınması: İletilen Işık Modu

RGB Ölçümleri Alma: İletilen Işık Modu
RGB Ölçümleri Alma: İletilen Işık Modu
RGB Ölçümleri Alma: İletilen Işık Modu
RGB Ölçümleri Alma: İletilen Işık Modu
RGB Ölçümleri Alma: İletilen Işık Modu
RGB Ölçümleri Alma: İletilen Işık Modu
RGB Ölçümleri Alma: İletilen Işık Modu
RGB Ölçümleri Alma: İletilen Işık Modu

Daha önce belirtildiği gibi, iki renk ölçüm modu vardır: iletilen ve yansıyan ışık spektroskopisi. İletilen ışık modunda, ışık renkli bir filtreden veya çözeltiden sensöre gider. Yansıyan ışık ölçümlerinde, yayılan ışık örn. LED'lerden gelen bir nesne tarafından yansıtılır ve sensör tarafından algılanır.

RGB değerleri daha sonra micro:bit 5x5 LED matrisinin 3. ila 5. sıralarında görüntülenir; üst LED'ler düşük, alt LED'ler yüksek değerleri temsil eder.

Burada iletilen ışık ölçümlerinde gösterilen deneyler için gün ışığını kullandım ve sensörün önüne bir Rosco numune paketinden renkli filtreler yerleştirdim. Efektleri ekranda özellikle kırmızı kanalda görebilirsiniz. Resimlere bir göz atın ve desenleri karşılaştırın.

Gerçek değerleri okumak için A düğmesine basmanız yeterlidir.

Adım 4: Yansıyan Işık RGB ve Parlaklık Ölçümleri

Yansıyan Işık RGB ve Parlaklık Ölçümleri
Yansıyan Işık RGB ve Parlaklık Ölçümleri
Yansıyan Işık RGB ve Parlaklık Ölçümleri
Yansıyan Işık RGB ve Parlaklık Ölçümleri
Yansıyan Işık RGB ve Parlaklık Ölçümleri
Yansıyan Işık RGB ve Parlaklık Ölçümleri

Yansıyan ışık ölçümleri için LED'leri açtım (düğme [A+B]) ve sensörün önüne parlak renkli bazı IKEA çocuk bardakları yerleştirdim. Resimlerden de anlaşılacağı üzere RGB değerleri beklendiği gibi değişmektedir.

Parlaklık ölçümleri için ilk satırda düşük değerler, ikinci satırda yüksek değerler görüntülenir. Üstte düşük değerler, alt LED'lerde daha yüksek değerler. Kesin değeri okumak için B düğmesine basın.

Adım 5: Yansıyan Işık Ölçümleri: Çiçekler

Yansıyan Işık Ölçümleri: Çiçekler
Yansıyan Işık Ölçümleri: Çiçekler
Yansıyan Işık Ölçümleri: Çiçekler
Yansıyan Işık Ölçümleri: Çiçekler
Yansıyan Işık Ölçümleri: Çiçekler
Yansıyan Işık Ölçümleri: Çiçekler
Yansıyan Işık Ölçümleri: Çiçekler
Yansıyan Işık Ölçümleri: Çiçekler

Bir çayırdan bazı kır çiçekleri topladım ve üzerlerinde bazı renk ölçümleri yapmaya çalıştım. Haşhaş, peygamber çiçeği, kahverengi knapweed, wall harkweed ve dilandelon yaprağıydı. RGB değerleri [R, G, B]:

  • hiçbiri [92, 100, 105]
  • haşhaş (kırmızı) [208, 98, 99]
  • peygamber çiçeği (mavi) [93, 96, 138]
  • kahverengi karahindiba (leylak) [122, 97, 133]
  • duvar harkweed (sarı) [144, 109, 63]
  • karahindiba yaprağı (yeşil) [164, 144, 124]

Bu, en azından ilk üç tesis için beklentilere uyuyor. Değerlerden renkleri görüntülemek için buradaki gibi bir renk hesaplayıcı kullanabilirsiniz.

Önerilen: