Obsah:
- Krok 1: Použité materiály
- Krok 2: Skript MakeCode/JavaScript
- Krok 3: Měření RGB: Režim přenášeného světla
- Krok 4: Odražené světlo RGB a měření jasu
- Krok 5: Měření odraženého světla: květiny
Video: Měření světla a barev pomocí Pimoroni Enviro: bit pro Micro: bit: 5 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:23
Dříve jsem pracoval na některých zařízeních, která umožňují měření světla a barev, a zde a zde najdete mnoho o teorii těchto měření.
Společnost Pimoroni nedávno vydala enviro: bit, doplněk pro micro: bit, který je dodáván s mikrofonem MEMS pro měření hladiny zvuku, snímačem teploty/vlhkosti/tlaku vzduchu BME280 a světelným a barevným senzorem TCS3475 (RGBC). Kromě toho jsou na bocích barevného senzoru umístěny dvě LED diody, které umožňují měřit barvu předmětů odraženým světlem. Sestavení nástroje pro provádění těchto měření nebylo nikdy jednodušší.
Zde bych chtěl popsat, jak lze enviro: bit použít pro měření barev a světla a skript MakeCode, který je umožňuje provádět. Kombinace micro: bit a enviro: bit je pěkné a levné zařízení, které vám umožní demonstrovat principy vědeckých měření a hrát si s nimi.
Tento návod je součástí soutěže „Duha“. Pokud se vám líbí, dejte mu prosím svůj hlas. Děkuji
Krok 1: Použité materiály
Micro: bit, 13 GBP u Pimoroni.
Pimoroni Enviro: bit, 20 GBP u Pimoroni.
Výkon Pimoroni: bit, 6 GBP u Piomoroni. Můžete také použít baterie nebo LiPo pro micro: bit
Blok vzorku barevného filtru Rosco Cinegel. Svůj jsem dostal z Moduloru v Berlíně.
IKEA barevné plastové kelímky. IKEA, Berlín.
Divoké květiny. Louka v Postupimi-Golmu.
Krok 2: Skript MakeCode/JavaScript
Pimoroni vyvinul knihovnu pro Enviro: bit, a to jak pro kódovací prostředí MakeCode/JavaScript, tak pro MicroPython. Zde jsem použil MakeCode, protože skripty lze nahrát přímo na micro: bit a umožňují blokové kódování.
Skript čte hodnoty červeného, zeleného a modrého (RGB) a čistého (C) kanálu. První jsou uvedeny v hodnotách od 0 do 255, druhé v celém rozsahu od 0 do zhruba 61000.
Rozsah čistého kanálu je velmi široký a umožňuje měření od jasného denního světla po temnou místnost.
Teď už nerozumím všem podrobnostem funkce měření barev, ale předpokládám, že mají implementovány nějaké korekční a normalizační mechanismy.
Nejprve se vezmou hodnoty všech čtyř kanálů. Aby bylo možné zobrazit výsledky na matici LED 5x5, používají se naměřené hodnoty k umístění výsledků do 5 (RGB) nebo 10 (C) zásobníků, které jsou reprezentovány jednou LED v jednom (R, G, B) nebo dva (C) řádky.
V případě RGB je škálování lineární a velikost intervalu každého zásobníku je široká 51 jednotek. V případě C je škálování logaritmické na 10 kroků (log3, takže každý krok je 3násobek předchozího). To umožňuje zobrazit velmi slabé a velmi jasné podmínky.
Stisknutím tlačítka A zobrazíte hodnoty R, G a B v číslech, stisknutím B hodnotu C. A+B aktivuje LED diody a B je vypne.
nechte bR = 0 // koše
nech bG = 0 nech bB = 0 nech bS = 0 nech bC = 0 nech bCx = 0 nech S = 0 // naměřené hodnoty nech C = 0 nech B = 0 nech G = 0 nech R = 0 základní. navždy (() => {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) {// Saturace bCx = 4} else if (C> = 20000) {bCx = 3} else if (C> = 6600) {bCx = 2} else if (C> = 2200) {bCx = 1} else if 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} // write to 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)}})
Krok 3: Měření RGB: Režim přenášeného světla
Jak již bylo naznačeno, existují dva režimy měření barev: spektroskopie procházejícího a odraženého světla. V režimu procházejícího světla světlo prochází barevným filtrem nebo roztokem k senzoru. Při měření odraženého světla světlo vyzařované např. od diod LED se odráží od předmětu a je detekován senzorem.
Hodnoty RGB se pak zobrazí ve 3. až 5. řadě mikro: bitové 5x5 LED matice, přičemž horní LED diody představují nízké, spodní LED vysoké hodnoty.
Pro experimenty zde ukázané na měření procházejícího světla jsem použil denní světlo a před senzor umístil barevné filtry ze sady vzorků Rosco. Efekty můžete vidět na displeji, zejména v červeném kanálu. Podívejte se na obrázky a porovnejte vzory.
Chcete -li přečíst skutečné hodnoty, stačí stisknout tlačítko A.
Krok 4: Odražené světlo RGB a měření jasu
Pro měření odraženého světla jsem rozsvítil diody LED (tlačítko [A+B]) a před senzor umístil několik pestrobarevných kusů dětských šálků IKEA. Jak je vidět z obrázků, hodnoty RGB se mění podle očekávání.
Pro měření jasu jsou nízké hodnoty zobrazeny v prvním, vysoké hodnoty ve druhém řádku. Nízké hodnoty v horních, vyšší hodnoty ve spodních LED diodách. Přesnou hodnotu přečtete stisknutím tlačítka B.
Krok 5: Měření odraženého světla: květiny
Nasbíral jsem nějaké divoké květiny z louky a pokusil se na nich provést nějaké barevné měření. Byl to mák, chrpa, hnědý plíseň, nástěnka a listnatý list. Hodnoty RGB byly [R, G, B]:
- žádný [92, 100, 105]
- mák (červený) [208, 98, 99]
- chrpa (modrá) [93, 96, 138]
- plevel hnědý (šeřík) [122, 97, 133]
- žralok nástěnný (žlutý) [144, 109, 63]
- list pampelišky (zelený) [164, 144, 124]
Což odpovídá očekávání, alespoň pro první tři závody. K zobrazení barev z hodnot můžete použít kalkulačku barev, jako je zde.
Doporučuje:
Měření času (hodiny na měření pásky): 5 kroků (s obrázky)
Time Measure (Tape Measure Clock): Pro tento projekt jsme (Alex Fiel & Anna Lynton) vzali každodenní měřicí nástroj a udělali z něj hodiny! Původní plán byl motorizovat stávající svinovací metr. Při tom jsme se rozhodli, že bude snazší vytvořit si vlastní shell, do kterého
Použití Pimoroni Enviro+ FeatherWing s Adafruit Feather NRF52840 Express: 8 kroků
Použití Pimoroni Enviro+ FeatherWing s Adafruit Feather NRF52840 Express: Pimoroni Enviro+ FeatherWing je deska plná senzorů navržených pro práci s deskami Adafruit Feather. Je to užitečné místo, kde začít pro kohokoli, koho zajímá monitorování životního prostředí, znečištění ovzduší a shromažďování dat. Já
Zajímavé pokyny pro programování programování pro návrháře-ovládání barev: 10 kroků
Zajímavé pokyny pro programování programování pro návrháře-ovládání barev: V předchozích kapitolách jsme si řekli více o tom, jak použít kód k tvarování namísto bodů znalostí o barvě. V této kapitole prozkoumáme tento aspekt znalostí hlouběji
Měření intenzity světla pomocí BH1715 a Raspberry Pi: 5 kroků
Měření intenzity světla pomocí BH1715 a Raspberry Pi: Včera jsme pracovali na LCD displejích a při jejich práci jsme si uvědomili důležitost výpočtu intenzity světla. Intenzita světla není důležitá pouze ve fyzické oblasti tohoto světa, ale má svou dobře uvedenou roli v biologickém
Jak ovládat světla/domácí světla pomocí Arduino a Amazon Alexa: 16 kroků (s obrázky)
Jak ovládat světla/domácí světla pomocí Arduino a Amazon Alexa: Vysvětlil jsem, jak ovládat světlo, které je připojeno k UNO a ovládáno Alexou