Оглавление:

Измерения света и цвета с помощью Pimoroni Enviro: bit for the Micro: bit: 5 шагов
Измерения света и цвета с помощью Pimoroni Enviro: bit for the Micro: bit: 5 шагов

Видео: Измерения света и цвета с помощью Pimoroni Enviro: bit for the Micro: bit: 5 шагов

Видео: Измерения света и цвета с помощью Pimoroni Enviro: bit for the Micro: bit: 5 шагов
Видео: Самодельный тепловизор. Прошивка V1.1 2024, Ноябрь
Anonim
Измерения света и цвета с помощью Pimoroni Enviro: bit для Micro: bit
Измерения света и цвета с помощью Pimoroni Enviro: bit для Micro: bit
Измерения света и цвета с помощью Pimoroni Enviro: bit для Micro: bit
Измерения света и цвета с помощью Pimoroni Enviro: bit для Micro: bit
Измерения света и цвета с помощью Pimoroni Enviro: bit для Micro: bit
Измерения света и цвета с помощью Pimoroni Enviro: bit для Micro: bit

Раньше я работал над некоторыми устройствами, которые позволяют измерять свет и цвет, и вы можете много узнать о теории, лежащей в основе таких измерений, в инструкциях здесь и здесь.

Pimoroni недавно выпустил enviro: bit, надстройку для micro: bit, которая поставляется с микрофоном MEMS для измерения уровня звука, датчиком температуры / влажности / давления воздуха BME280 и датчиком света и цвета TCS3475 (RGBC). Кроме того, по бокам датчика цвета расположены два светодиода, позволяющие измерять цвет объектов по отраженному свету. Самостоятельное создание инструмента для выполнения этих измерений никогда не было таким простым.

Здесь я хотел бы описать, как enviro: bit можно использовать для измерений цвета и света, а также сценарий MakeCode, который позволяет это выполнять. Комбинация micro: bit и enviro: bit - красивое и недорогое устройство, позволяющее продемонстрировать принципы научных измерений на практике и поиграть с ними.

Эта инструкция является частью конкурса «Радуга». Если вам это нравится, пожалуйста, проголосуйте за него.

Шаг 1: Используемые материалы

Микро: бит, 13 фунтов в Пиморони.

Pimoroni Enviro: немного, 20 фунтов стерлингов в Пиморони.

Pimoroni Power: бит, 6 фунтов стерлингов в Пиоморони. Вы также можете использовать аккумуляторные батареи или LiPo для micro: bit.

Блок-образец цветного фильтра Rosco Cinegel. Я получил свой от Modulor, Берлин.

Цветные пластиковые стаканчики ИКЕА. ИКЕА, Берлин.

Полевые цветы. Луг в Потсдам-Голме.

Шаг 2: сценарий MakeCode / JavaScript

Пиморони разработал библиотеку для Enviro: bit как для среды кодирования MakeCode / JavaScript, так и для MicroPython. Я здесь использовал MakeCode, так как скрипты могут быть загружены непосредственно в micro: bit и позволяют блочное кодирование.

Скрипт считывает значения красного, зеленого и синего (RGB) и чистого (C) каналов. Первые даны в значениях от 0 до 255, вторые - во всем диапазоне от 0 до примерно 61000.

Диапазон прозрачного канала очень широк и позволяет проводить измерения от яркого дневного света до темной комнаты.

К настоящему времени я не понимаю всех деталей функции измерения цвета, но предполагаю, что в них реализованы некоторые механизмы коррекции и нормализации.

Сначала берутся значения всех четырех каналов. Чтобы иметь возможность отображать результаты на светодиодной матрице 5x5, измеренные значения используются для размещения результатов в 5 (RGB) или 10 (C) ячейках, которые представлены одним светодиодом в одном (R, G, B) или два (В) ряда.

В случае RGB масштабирование является линейным, и размер интервала каждого бина составляет 51 единицу в ширину. В случае C масштабирование является логарифмическим по 10 шагам (log3, поэтому каждый шаг является трехкратным по сравнению с предыдущим). Это позволяет отображать как очень тусклые, так и очень яркие условия.

Нажатие кнопки A отображает значения R, G и B в цифрах, нажатие B - значение C. A + B активирует светодиоды, а B отключает их.

let bR = 0 // ячейки

let bG = 0 let bB = 0 let bS = 0 let bC = 0 let bCx = 0 let S = 0 // измеренные значения пусть C = 0 let B = 0 let G = 0 let 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) { // биннинг, максимум 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 строках светодиодной матрицы micro: bit 5x5, причем верхние светодиоды представляют низкие значения, нижние светодиоды - высокие значения.

Для показанных здесь экспериментов по измерению проходящего света я использовал дневной свет и поместил цветные фильтры из упаковки образцов Роско перед датчиком. Вы можете увидеть эффекты на дисплее, особенно в красном канале. Посмотрите картинки и сравните выкройки.

Чтобы прочитать фактические значения, просто нажмите кнопку 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]

Что соответствует ожиданиям, по крайней мере, для первых трех заводов. Чтобы отобразить цвета из значений, вы можете использовать калькулятор цветов, как здесь.

Рекомендуемые: