Turinys:

Šviesos ir spalvų matavimai Naudojant „Pimoroni Enviro: bit“, skirtą „Micro: bit“: 5 žingsniai
Šviesos ir spalvų matavimai Naudojant „Pimoroni Enviro: bit“, skirtą „Micro: bit“: 5 žingsniai

Video: Šviesos ir spalvų matavimai Naudojant „Pimoroni Enviro: bit“, skirtą „Micro: bit“: 5 žingsniai

Video: Šviesos ir spalvų matavimai Naudojant „Pimoroni Enviro: bit“, skirtą „Micro: bit“: 5 žingsniai
Video: LED juostų naudojimas interjere: RGB ir paprastos baltos spalvos variantai. 2024, Liepa
Anonim
Šviesos ir spalvų matavimai Naudojant „Pimoroni Enviro: bit“, skirtą „Micro: bit“
Šviesos ir spalvų matavimai Naudojant „Pimoroni Enviro: bit“, skirtą „Micro: bit“
Šviesos ir spalvų matavimai Naudojant „Pimoroni Enviro: bit“, skirtą „Micro: bit“
Šviesos ir spalvų matavimai Naudojant „Pimoroni Enviro: bit“, skirtą „Micro: bit“
Šviesos ir spalvų matavimai Naudojant „Pimoroni Enviro: bit“, skirtą „Micro: bit“
Šviesos ir spalvų matavimai Naudojant „Pimoroni Enviro: bit“, skirtą „Micro: bit“

Anksčiau dirbau prie kai kurių prietaisų, leidžiančių matuoti šviesą ir spalvas, ir čia bei čia galite rasti daug informacijos apie tokių matavimų teoriją.

„Pimoroni“neseniai išleido „enviro: bit“, „micro: bit“priedą, kurį sudaro MEMS mikrofonas garso lygio matavimui, BME280 temperatūros/drėgmės/oro slėgio jutiklis ir TCS3475 šviesos ir spalvų jutiklis (RGBC). Be to, spalvų jutiklio šonuose yra du šviesos diodai, leidžiantys išmatuoti objektų spalvą pagal atspindėtą šviesą. Dar niekada nebuvo taip paprasta susikurti įrankį šiems matavimams atlikti.

Čia norėčiau aprašyti, kaip „enviro: bit“gali būti naudojamas spalvų ir šviesos matavimams bei „MakeCode“scenarijui, kuris leidžia juos atlikti. „Micro: bit“ir „enviro: bit“derinys yra gražus ir nebrangus prietaisas, padedantis demonstruoti praktinių mokslinių matavimų principus ir žaisti su jais.

Ši pamoka yra konkurso „Vaivorykštė“dalis. Jei jums tai patinka, prašome balsuoti. AčiūH

1 žingsnis: naudojamos medžiagos

„Micro: bit“, 13 GBP „Pimoroni“.

„Pimoroni Enviro“: bitai, 20 GBP „Pimoroni“.

„Pimoroni Power“: bitų, 6 GBP „Piomoroni“. Taip pat galite naudoti „micro: bit“baterijas arba „LiPo“

„Rosco Cinegel“spalvų filtro mėginio blokas. Aš gavau savo iš Moduloro, Berlyno.

IKEA spalvos plastikiniai puodeliai. IKEA, Berlynas.

Laukinės gėlės. Potsdamo-Golmo pieva.

2 veiksmas: „MakeCode“/„JavaScript“scenarijus

„Pimoroni“sukūrė „Enviro: bit“biblioteką, skirtą „MakeCode“/„JavaScript“kodavimo aplinkai ir „MicroPython“. Čia aš naudoju „MakeCode“, nes scenarijus galima įkelti tiesiai į „micro: bit“ir leidžia blokuoti kodavimą.

Scenarijus nuskaito raudonos, žalios ir mėlynos (RGB) ir aiškių (C) kanalų reikšmes. Pirmieji skaičiai pateikiami nuo 0 iki 255, o antrasis - nuo 0 iki maždaug 61000.

Skaidraus kanalo diapazonas yra labai platus ir leidžia matuoti nuo ryškios dienos šviesos iki tamsios patalpos.

Iki šiol nesuprantu visų spalvų matavimo funkcijos detalių, tačiau darau prielaidą, kad jie turi tam tikrų korekcijos ir normalizavimo mechanizmų.

Iš pradžių imamos visų keturių kanalų vertės. Kad rezultatai būtų rodomi 5x5 LED matricoje, išmatuotos vertės naudojamos rezultatams sudėti į 5 (RGB) arba 10 (C) dėžes, kurias viename (R, G, B) arba dvi (C) eilutės.

RGB atveju mastelio keitimas yra tiesinis, o kiekvienos dėžės intervalo dydis yra 51 vieneto pločio. C atveju mastelio keitimas yra logaritminis per 10 žingsnių (log3, taigi kiekvienas žingsnis yra 3 kartus didesnis nei ankstesnis). Tai leidžia rodyti labai silpnas ir labai ryškias sąlygas.

Paspaudus mygtuką A rodomos R, G ir B vertės skaičiais, paspaudus B - C reikšmė. A+B įjungia šviesos diodus, o B juos išjungia.

tegul bR = 0 // dėžės

tegul bG = 0 tegul bB = 0 tegul bS = 0 tegul bC = 0 tegul bCx = 0 tegul S = 0 // išmatuotos vertės tegul C = 0 tegul B = 0 tegul G = 0 tegul R = 0 bazinis. 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} else {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) {// Sotumas 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} // rašyti į led basic.clearScreen () if (bCx <5) {led.plot (1, bCx)} else {led.plot (0, bC)} led.plot (2, bR) led.plot (3, bG) led.plot (4, bB)}})

3 žingsnis: RGB matavimai: skleidžiamos šviesos režimas

RGB matavimai: perduodamos šviesos režimas
RGB matavimai: perduodamos šviesos režimas
RGB matavimai: perduodamos šviesos režimas
RGB matavimai: perduodamos šviesos režimas
RGB matavimai: perduodamos šviesos režimas
RGB matavimai: perduodamos šviesos režimas
RGB matavimai: perduodamos šviesos režimas
RGB matavimai: perduodamos šviesos režimas

Kaip minėta anksčiau, yra du spalvų matavimo būdai: pralaidžios ir atspindėtos šviesos spektroskopija. Skleidžiamos šviesos režimu šviesa per spalvotą filtrą ar tirpalą patenka į jutiklį. Matuojant atspindėtą šviesą, skleidžiama šviesa pvz. nuo šviesos diodų atspindi objektas ir aptinka jutiklis.

Tada RGB reikšmės rodomos 3–5 „micro: bit“5x5 LED matricos eilutėse, o viršutiniai šviesos diodai reiškia žemą, apatiniai šviesos diodai - aukštas vertes.

Čia parodytiems eksperimentams dėl skleidžiamos šviesos matavimų naudojau dienos šviesą ir prieš jutiklį įdėjau spalvotus filtrus iš „Rosco“mėginių paketo. Efektus galite matyti ekrane, ypač raudoname kanale. Pažvelkite į nuotraukas ir palyginkite modelius.

Norėdami perskaityti faktines vertes, tiesiog paspauskite mygtuką A.

4 žingsnis: atspindėtos šviesos RGB ir ryškumo matavimai

Atspindimos šviesos RGB ir ryškumo matavimai
Atspindimos šviesos RGB ir ryškumo matavimai
Atspindimos šviesos RGB ir ryškumo matavimai
Atspindimos šviesos RGB ir ryškumo matavimai
Atspindimos šviesos RGB ir ryškumo matavimai
Atspindimos šviesos RGB ir ryškumo matavimai

Norėdami išmatuoti atspindėtą šviesą, įjungiau šviesos diodus (mygtukas [A+B]) ir prieš jutiklį padėjau keletą ryškių spalvų IKEA vaikiškų puodelių. Kaip matyti iš paveikslėlių, RGB vertės keičiasi, kaip tikėtasi.

Šviesumo matavimams žemos vertės rodomos pirmoje, didelės - antroje eilutėje. Žemos vertės viršutinėje, didesnės vertės - apatiniuose šviesos dioduose. Norėdami perskaityti tikslią vertę, paspauskite mygtuką B.

5 žingsnis: atspindėti šviesos matavimai: gėlės

Atspindėti šviesos matavimai: gėlės
Atspindėti šviesos matavimai: gėlės
Atspindėti šviesos matavimai: gėlės
Atspindėti šviesos matavimai: gėlės
Atspindėti šviesos matavimai: gėlės
Atspindėti šviesos matavimai: gėlės
Atspindėti šviesos matavimai: gėlės
Atspindėti šviesos matavimai: gėlės

Iš pievos nuskyniau keletą laukinių gėlių ir bandžiau joms atlikti tam tikrus spalvų matavimus. Tai buvo aguonos, rugiagėlės, rudos karpinės, sieninės varnalėšos ir dilandelio lapai. RGB reikšmės buvo [R, G, B]:

  • nėra [92, 100, 105]
  • aguona (raudona) [208, 98, 99]
  • rugiagėlė (mėlyna) [93, 96, 138]
  • rudas varnalėša (alyvinė) [122, 97, 133]
  • sieninė varnalėša (geltona) [144, 109, 63]
  • kiaulpienės lapas (žalias) [164, 144, 124]

Tai atitinka lūkesčius, bent jau pirmiems trims augalams. Norėdami parodyti spalvų reikšmes, galite naudoti spalvų skaičiuotuvą, kaip čia.

Rekomenduojamas: