Mundarija:

Pimoroni muhitida yorug'lik va rang o'lchovlari: mikro uchun bit: bit: 5 qadam
Pimoroni muhitida yorug'lik va rang o'lchovlari: mikro uchun bit: bit: 5 qadam

Video: Pimoroni muhitida yorug'lik va rang o'lchovlari: mikro uchun bit: bit: 5 qadam

Video: Pimoroni muhitida yorug'lik va rang o'lchovlari: mikro uchun bit: bit: 5 qadam
Video: Installing the Pimoroni NVMe Base on Raspberry Pi 5 2024, Iyul
Anonim
Pimoroni Enviro bilan yorug'lik va rang o'lchovlari: Micro: bit uchun bit
Pimoroni Enviro bilan yorug'lik va rang o'lchovlari: Micro: bit uchun bit
Pimoroni Enviro bilan yorug'lik va rang o'lchovlari: Micro: bit uchun bit
Pimoroni Enviro bilan yorug'lik va rang o'lchovlari: Micro: bit uchun bit
Pimoroni Enviro bilan yorug'lik va rang o'lchovlari: Micro: bit uchun bit
Pimoroni Enviro bilan yorug'lik va rang o'lchovlari: Micro: bit uchun bit

Men ilgari yorug'lik va rangni o'lchash imkonini beradigan ba'zi qurilmalarda ishlaganman va siz bu o'lchovlar nazariyasi haqida ko'p narsalarni topishingiz mumkin.

Pimoroni yaqinda ovoz balandligini o'lchash uchun MEMS mikrofoni, BME280 harorat/namlik/havo bosimi sensori va TCS3475 yorug'lik va rang sensori (RGBC) bilan ta'minlangan mikro: bit uchun qo'shimchali enviro: bit qo'shimchasini chiqardi. Bundan tashqari, rang sensori yon tomonlariga ikkita LED o'rnatilgan bo'lib, ular yorug'lik nurlari yordamida ob'ektlarning rangini o'lchash imkonini beradi. Ushbu o'lchovlarni bajarish uchun o'z qo'lingiz bilan asbob yaratish hech qachon oson bo'lmagan.

Men bu erda enviro: bit rang va yorug'lik o'lchovlari uchun ishlatilishi mumkinligini va buni bajarishga ruxsat beruvchi MakeCode skriptini tasvirlab bermoqchiman. Micro: bit va enviro: bit kombinatsiyasi-bu ilmiy o'lchovlar tamoyillarini qo'l bilan ko'rsatish va ular bilan o'ynash uchun yaxshi va arzon qurilma.

Bu ko'rsatma "Kamalak" tanlovining bir qismidir. Agar sizga yoqqan bo'lsa, iltimos, o'z ovozingizni bering

1 -qadam: Ishlatilgan materiallar

Mikro: bit, Pimoroni -da 13 GBP.

Pimoroni Enviro: bit, Pimoroni -da 20 GBP.

Pimoroni Power: bit, Piomoroni -da 6 GBP. Micro: bit uchun siz batareyalar to'plami yoki LiPo -dan foydalanishingiz mumkin

Rosco Cinegel rangli filtrli namuna bloki. Men o'zimni Berlinning Modulor shahridan oldim.

IKEA rangli plastik idishlar. IKEA, Berlin.

Yovvoyi gullar. Potsdam-Golmdagi o'tloq.

2 -qadam: MakeCode/JavaScript skriptlari

Pimoroni, MakeCode/JavaScript kodlash muhiti uchun ham, MicroPython uchun ham Enviro: bit uchun kutubxona ishlab chiqdi. Men bu erda MakeCode -dan foydalandim, chunki skriptlar to'g'ridan -to'g'ri micro: bit -ga yuklanishi mumkin va blokirovka kodlash imkonini beradi.

Skript qizil, yashil va ko'k (RGB) va aniq (C) kanallarining qiymatlarini o'qiydi. Birinchisi 0 dan 255 gacha, ikkinchisi 0 dan 61000 gacha.

Aniq kanalning diapazoni juda keng va kunduzgi yorug'likdan qorong'i xonaga qadar o'lchash imkonini beradi.

Hozircha men rangni o'lchash funktsiyasining barcha tafsilotlarini tushunmayapman, lekin menimcha, ular tuzatish va normallashtirish mexanizmlariga ega.

Avvaliga barcha to'rt kanalning qiymatlari olinadi. Natijalarni 5x5 LED matritsasida ko'rsatish uchun o'lchangan qiymatlar natijalarni bitta LED (R, G, B) yoki 5 (RGB) yoki 10 (C) qutilariga joylashtirish uchun ishlatiladi. ikkita (C) qator.

RGB holatida o'lchov chiziqli bo'lib, har bir qutining intervalli kengligi 51 birlikni tashkil qiladi. C holatida, o'lchov 10 bosqichdan oshiq logarifmik (log3, shuning uchun har bir qadam avvalgisidan 3 baravar ko'p). Bu juda xira va juda yorqin sharoitlarni ko'rsatishga imkon beradi.

A tugmachasini bosish R, G va B qiymatlarini raqamlar bilan ko'rsatadi, B ni esa C qiymatini bosadi. A+B LEDlarini faollashtiradi va B ularni o'chiradi.

bR = 0 // qutilari bo'lsin

bG = 0 bo'lsin bB = 0 bo'lsin bS = 0 bo'lsin bC = 0 bo'lsin bCx = 0 bo'lsin S = 0 // o'lchangan qiymatlar C = 0 bo'lsin B = 0 bo'lsin G = 0 bo'lsin R = 0 asosiy bo'lsin. => {if (input.buttonIsPressed (Button. AB)) {envirobit.setLEDs (envirobit. OnOff. On)} if if (input.buttonIsPressed (Button. A)) {basic.showString ("R:" + R +) "G:" + G + "B:" + B)} boshqa if (input.buttonIsPressed (Button. B)) {basic.showString ("C:" + C) envirobit.setLEDs (envirobit. OnOff. Off)} boshqa {basic.pause (100) R = envirobit.getRed () G = envirobit.getGreen () B = envirobit.getBlue () C = envirobit.getLight () bC = 5 bCx = 5 agar (R> = 204) { // binning, maksimal 255 bR = 4} if (R> = 153) {bR = 3} if if (R> = 102) {bR = 2} if if (R> = 51) {bR = 1} other {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} boshqa {bG = 0} if (B> = 204) {bB = 4} if if (B> = 153) {bB = 3} if if (B> = 102) {bB = 2} else if (B> = 51) {bB = 1} else {bB = 0} if (C> = 60000)) {// SatCh bCx = 4} if if (C> = 20000) {bCx = 3} if if (C> = 6600) {bCx = 2} if if (C> = 2200) {bCx = 1} if else (C> = 729) {bCx = 0} if if (C> = 243) {bC = 4} if if (C> = 81) {bC = 3} if if (C> = 27) {bC = 2} aks holda (C> = 9) {bC = 1} else {bC = 0} // led basic.clearScreen () ga yozing, agar (bCx <5) {led.plot (1, bCx)} boshqa {led.plot (0, bC)} led.plot (2, bR) led.plot (3, bG) led.plot (4, bB)}})

3 -qadam: RGB o'lchovlarini qabul qilish: uzatilgan yorug'lik rejimi

RGB o'lchovlarini qabul qilish: uzatilgan yorug'lik rejimi
RGB o'lchovlarini qabul qilish: uzatilgan yorug'lik rejimi
RGB o'lchovlarini qabul qilish: uzatilgan yorug'lik rejimi
RGB o'lchovlarini qabul qilish: uzatilgan yorug'lik rejimi
RGB o'lchovlarini qabul qilish: uzatilgan yorug'lik rejimi
RGB o'lchovlarini qabul qilish: uzatilgan yorug'lik rejimi
RGB o'lchovlarini qabul qilish: uzatilgan yorug'lik rejimi
RGB o'lchovlarini qabul qilish: uzatilgan yorug'lik rejimi

Yuqorida aytib o'tilganidek, rang o'lchashning ikkita rejimi mavjud: uzatilgan va aks ettirilgan yorug'lik spektroskopiyasi. O'tkazilgan yorug'lik rejimida yorug'lik rangli filtrdan yoki sensordan yechim orqali o'tadi. Yansıtılan yorug'lik o'lchovlarida, masalan, yorug'lik. LEDlardan ob'ekt aks etadi va sensor tomonidan aniqlanadi.

Keyin RGB qiymatlari micro: bit 5x5 LED matritsasining 3-5 -qatorlarida ko'rsatiladi, yuqori LEDlar past, pastki LEDlar yuqori qiymatlarni bildiradi.

Bu erda o'tkazilgan yorug'lik o'lchovlari bo'yicha o'tkazilgan tajribalar uchun men kunduzgi yorug'likni ishlatardim va sensori oldiga Rosco namunali paketidagi rangli filtrlarni qo'ydim. Siz effektlarni displeyda, ayniqsa qizil kanalda ko'rishingiz mumkin. Rasmlarni ko'rib chiqing va naqshlarni solishtiring.

Haqiqiy qiymatlarni o'qish uchun A tugmachasini bosish kifoya.

4 -qadam: Yorug'lik RGB va yorug'lik o'lchovlari

Yorug'lik RGB va yorug'lik o'lchovlari
Yorug'lik RGB va yorug'lik o'lchovlari
Yorug'lik RGB va yorug'lik o'lchovlari
Yorug'lik RGB va yorug'lik o'lchovlari
Yorug'lik RGB va yorug'lik o'lchovlari
Yorug'lik RGB va yorug'lik o'lchovlari

Yorug'likni o'lchash uchun men LEDlarni yoqdim (tugma [A+B]) va sensor oldiga IKEA bolalar stakanlarining yorqin rangli qismlarini qo'ydim. Rasmlardan ko'rinib turibdiki, RGB qiymatlari kutilganidek o'zgarmoqda.

Yorqinlikni o'lchash uchun birinchi qatorda past qiymatlar ikkinchi qatorda ko'rsatiladi. Pastki LEDlar yuqori, pastroq qiymatlar. Aniq qiymatni o'qish uchun B tugmachasini bosing.

5 -qadam: Ko'zgu nur o'lchovlari: Gullar

Ko'zgu nur o'lchovlari: gullar
Ko'zgu nur o'lchovlari: gullar
Ko'zgu nur o'lchovlari: gullar
Ko'zgu nur o'lchovlari: gullar
Ko'zgu nur o'lchovlari: gullar
Ko'zgu nur o'lchovlari: gullar
Ko'zgu nur o'lchovlari: gullar
Ko'zgu nur o'lchovlari: gullar

Men o'tloqdan yovvoyi gullarni tanladim va ularga rang o'lchovlarini o'tkazishga harakat qildim: ko'knor, makkajo'xori, jigarrang o'rik, devor harkweed va dilandelon barglari. RGB qiymatlari [R, G, B]:

  • hech kim [92, 100, 105]
  • ko'knor (qizil) [208, 98, 99]
  • makkajo'xori (ko'k) [93, 96, 138]
  • jigarrang o'rik (nilufar) [122, 97, 133]
  • devor harkvidi (sariq) [144, 109, 63]
  • momaqaymoq barglari (yashil) [164, 144, 124]

Hech bo'lmaganda dastlabki uchta o'simlik uchun kutilganidek. Ranglarni qiymatlardan ko'rsatish uchun siz bu erda bo'lgani kabi rang kalkulyatoridan foydalanishingiz mumkin.

Tavsiya: