Съдържание:

Измервания на светлината и цвета с Pimoroni Enviro: бит за Micro: бит: 5 стъпки
Измервания на светлината и цвета с Pimoroni Enviro: бит за Micro: бит: 5 стъпки

Видео: Измервания на светлината и цвета с Pimoroni Enviro: бит за Micro: бит: 5 стъпки

Видео: Измервания на светлината и цвета с Pimoroni Enviro: бит за Micro: бит: 5 стъпки
Видео: Плеядеанцы. Высшие измерения. Божественные существа Света 2024, Юли
Anonim
Измервания на светлината и цвета с Pimoroni Enviro: бит за Micro: бит
Измервания на светлината и цвета с Pimoroni Enviro: бит за Micro: бит
Измервания на светлината и цвета с Pimoroni Enviro: бит за Micro: бит
Измервания на светлината и цвета с Pimoroni Enviro: бит за Micro: бит
Измервания на светлината и цвета с Pimoroni Enviro: бит за Micro: бит
Измервания на светлината и цвета с Pimoroni Enviro: бит за Micro: бит

Преди това бях работил върху някои устройства, които позволяват измерване на светлината и цвета и може да откриете много за теорията зад тези измервания на инструкциите тук и тук.

Pimoroni наскоро пусна enviro: bit, добавка за micro: bit, която идва с MEMS микрофон за измерване на нивото на звука, BME280 сензор за температура/влажност/въздушно налягане и сензор за светлина и цвят TCS3475 (RGBC). Освен това има два светодиода, поставени отстрани на цветния сензор, позволяващи измерване на цвета на обектите чрез отразена светлина. Изграждането на инструмент за извършване на тези измервания никога не е било по -лесно.

Тук бих искал да опиша как enviro: bit може да се използва за цветни и светлинни измервания и скрипта MakeCode, който позволява да се извършат тези. Комбинацията от micro: bit и enviro: bit е хубаво и евтино устройство, което демонстрира практически принципите на научните измервания и играе с тях.

Тази инструкция е част от конкурса „Дъга“. Ако ви харесва, моля, дайте своя глас. Благодаря

Стъпка 1: Използвани материали

Микро: бит, 13 GBP в Pimoroni.

Pimoroni Enviro: бит, 20 GBP в Pimoroni.

Pimoroni Power: бит, 6 GBP в Piomoroni. Можете също да използвате батерии или LiPo за micro: bit

Пробен блок с цветен филтър Rosco Cinegel. Взех моята от Modulor, Берлин.

Пластмасови чаши от IKEA. IKEA, Берлин.

Диви цветя. Поляна в Потсдам-Голм.

Стъпка 2: MakeCode/JavaScript скрипт

Pimoroni е разработил библиотека за Enviro: bit, както за кодиращата среда MakeCode/JavaScript, така и за MicroPython. Тук съм използвал MakeCode, тъй като скриптовете могат да се качват директно в micro: bit и позволява блоково кодиране.

Скриптът чете стойностите на червения, зеления и синия (RGB) и ясния (C) канал. Първите са дадени в стойности от 0 до 255, вторите в целия диапазон от 0 до около 61000.

Обхватът на чистия канал е много широк и позволява измервания от ярка дневна светлина до тъмна стая.

Досега не разбирам всички подробности за функцията за измерване на цветовете, но предполагам, че те имат въведени някои механизми за корекция и нормализиране.

Първоначално се вземат стойностите и на четирите канала. За да могат да се показват резултатите на 5x5 LED матрица, измерените стойности се използват за поставяне на резултатите в 5 (RGB) или 10 (C) контейнери, които са представени от един светодиод във всеки един (R, G, B) или два (C) реда.

В случай на RGB, мащабирането е линейно и размерът на интервала на всеки контейнер е широк 51 единици. В случай на C, мащабирането е логаритмично за 10 стъпки (log3, така че всяка стъпка е 3-кратна от предишната). Това позволява да се показват много слаби и много ярки условия.

Натискането на бутон А показва стойностите R, G и B в цифри, като натискате B стойността C. A+B активира светодиодите и B ще ги изключи.

нека bR = 0 // контейнери

нека bG = 0 нека bB = 0 нека bS = 0 нека bC = 0 нека bCx = 0 нека S = 0 // измерени стойности нека C = 0 нека B = 0 нека G = 0 нека 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)} иначе ако (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) {// Насищане 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 () 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: Измерване на RGB: Режим на предавана светлина

Правене на RGB измервания: Режим на предавана светлина
Правене на RGB измервания: Режим на предавана светлина
Правене на RGB измервания: Режим на предавана светлина
Правене на RGB измервания: Режим на предавана светлина
Правене на RGB измервания: Режим на предавана светлина
Правене на RGB измервания: Режим на предавана светлина
Правене на RGB измервания: Режим на предавана светлина
Правене на RGB измервания: Режим на предавана светлина

Както бе посочено по -горе, има два режима на цветно измерване: спектроскопия на пропускаща и отразена светлина. В режим на предавана светлина светлината преминава през цветен филтър или разтвор към сензора. При измерванията на отразената светлина излъчваната светлина, напр. от светодиодите се отразява от обект и се открива от сензора.

След това стойностите на RGB се показват в 3 -ти до 5 -ти ред на микро: битова 5x5 LED матрица, като горните светодиоди представляват ниски, долните светодиоди високите стойности.

За експериментите, показани тук върху измерванията на предадената светлина, използвах дневна светлина и поставих цветни филтри от пакета с проби на Rosco пред сензора. Можете да видите ефектите на дисплея, особено в червения канал. Разгледайте снимките и сравнете моделите.

За да прочетете действителните стойности, просто натиснете бутона A.

Стъпка 4: Измерване на RGB отразена светлина и измерване на яркостта

RGB отразена светлина и измерване на яркостта
RGB отразена светлина и измерване на яркостта
RGB отразена светлина и измерване на яркостта
RGB отразена светлина и измерване на яркостта
RGB отразена светлина и измерване на яркостта
RGB отразена светлина и измерване на яркостта

За измерване на отразената светлина включих светодиодите (бутон [A+B]) и поставих няколко ярко оцветени парчета детски чаши IKEA пред сензора. Както може да се види от снимките, стойностите на RGB се променят според очакванията.

За измерване на яркостта, ниските стойности се показват в първия, високите стойности във втория ред. Ниски стойности в горните, по -високи стойности от долните светодиоди. За да прочетете точната стойност, натиснете бутона B.

Стъпка 5: Измервания на отразена светлина: Цветя

Измервания на отразена светлина: Цветя
Измервания на отразена светлина: Цветя
Измервания на отразена светлина: Цветя
Измервания на отразена светлина: Цветя
Измервания на отразена светлина: Цветя
Измервания на отразена светлина: Цветя
Измервания на отразена светлина: Цветя
Измервания на отразена светлина: Цветя

Взех няколко диви цветя от една поляна и се опитах да направя някои цветни измервания върху тях. Това бяха мак, метличина, кафяв дрян, стена от арки и лист от диланделон. Стойностите на RGB бяха [R, G, B]:

  • няма [92, 100, 105]
  • мак (червен) [208, 98, 99]
  • метличина (синя) [93, 96, 138]
  • кафяв канапе (люляк) [122, 97, 133]
  • стена от арковица (жълта) [144, 109, 63]
  • листа от глухарче (зелено) [164, 144, 124]

Което отговаря на очакванията, поне за първите три завода. За да покажете цветовете от стойностите, можете да използвате цветен калкулатор, както този тук.

Препоръчано: