Spisu treści:

Pomiary światła i koloru za pomocą Pimoroni Enviro:bit dla Micro:bit: 5 kroków
Pomiary światła i koloru za pomocą Pimoroni Enviro:bit dla Micro:bit: 5 kroków

Wideo: Pomiary światła i koloru za pomocą Pimoroni Enviro:bit dla Micro:bit: 5 kroków

Wideo: Pomiary światła i koloru za pomocą Pimoroni Enviro:bit dla Micro:bit: 5 kroków
Wideo: Tryb pomiaru światła w aparacie, który wybrać? 2024, Lipiec
Anonim
Pomiary światła i koloru za pomocą Pimoroni Enviro:bit dla Micro:bit
Pomiary światła i koloru za pomocą Pimoroni Enviro:bit dla Micro:bit
Pomiary światła i koloru za pomocą Pimoroni Enviro:bit dla Micro:bit
Pomiary światła i koloru za pomocą Pimoroni Enviro:bit dla Micro:bit
Pomiary światła i koloru za pomocą Pimoroni Enviro:bit dla Micro:bit
Pomiary światła i koloru za pomocą Pimoroni Enviro:bit dla Micro:bit

Wcześniej pracowałem nad niektórymi urządzeniami, które umożliwiają pomiary światła i koloru i możesz znaleźć wiele o teorii stojącej za takimi pomiarami w instrukcjach tutaj i tutaj.

Firma Pimoroni wypuściła niedawno enviro:bit, dodatek do micro:bit, który zawiera mikrofon MEMS do pomiaru poziomu dźwięku, czujnik temperatury/wilgotności/ciśnienia powietrza BME280 oraz czujnik światła i koloru TCS3475 (RGBC). Dodatkowo po bokach czujnika koloru znajdują się dwie diody LED, które pozwalają mierzyć kolor obiektów za pomocą światła odbitego. Samodzielne tworzenie narzędzia do wykonywania tych pomiarów nigdy nie było łatwiejsze.

W tym miejscu chciałbym opisać, w jaki sposób enviro:bit może być używany do pomiarów koloru i światła oraz skrypt MakeCode, który to umożliwia. Połączenie micro:bit i enviro:bit to ładne i niedrogie urządzenie do praktycznego demonstrowania zasad pomiarów naukowych i zabawy z nimi.

Ta instrukcja jest częścią konkursu „Tęcza”. Jeśli Ci się spodoba, oddaj swój głos. DziękiH

Krok 1: Użyte materiały

Micro:bit, 13 GBP w Pimoroni.

Pimoroni Enviro:bit, 20 GBP w Pimoroni.

Pimoroni Power:bit, 6 GBP w firmie Piomoroni. Możesz również użyć baterii lub LiPo do micro:bit

Blok próbki filtra kolorów Rosco Cinegel. Dostałem mój z Modulor w Berlinie.

Kolorowe plastikowe kubki IKEA. IKEA, Berlin.

Dzikie kwiaty. Łąka w Poczdamie-Golm.

Krok 2: Skrypt MakeCode/JavaScript

Pimoroni opracował bibliotekę dla Enviro:bit, zarówno dla środowiska kodowania MakeCode/JavaScript, jak i dla MicroPython. Użyłem tutaj MakeCode, ponieważ skrypty można wgrywać bezpośrednio do micro:bit i umożliwiają kodowanie blokowe.

Skrypt odczytuje wartości kanałów czerwonego, zielonego i niebieskiego (RGB) oraz czystego (C). Pierwsze podane są w wartościach od 0 do 255, drugie w całym zakresie od 0 do około 61000.

Zasięg czystego kanału jest bardzo szeroki i umożliwia pomiary od jasnego światła dziennego do ciemnego pomieszczenia.

Na razie nie rozumiem wszystkich szczegółów funkcji pomiaru koloru, ale zakładam, że mają zaimplementowane mechanizmy korekcji i normalizacji.

Najpierw brane są wartości wszystkich czterech kanałów. Aby móc wyświetlić wyniki na matrycy LED 5x5, zmierzone wartości są używane do umieszczania wyników w 5 (RGB) lub 10 (C) przedziałach, które są reprezentowane przez jedną diodę LED w jednej (R, G, B) lub dwa (C) rzędy.

W przypadku RGB skalowanie jest liniowe, a rozmiar interwału każdego przedziału ma szerokość 51 jednostek. W przypadku C skalowanie jest logarytmiczne na 10 krokach (log3, więc każdy krok jest trzykrotny względem poprzedniego). Pozwala to na wyświetlanie zarówno bardzo ciemnych, jak i bardzo jasnych warunków.

Naciśnięcie przycisku A wyświetla wartości R, G i B w liczbach, naciśnięcie B wartość C. A+B aktywuje diody, a B je wyłącza.

niech bR = 0 // bins

niech bG = 0 niech bB = 0 niech bS = 0 niech bC = 0 niech bCx = 0 niech S = 0 // wartości mierzone niech C = 0 niech B = 0 niech G = 0 niech 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) { // 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 } jeśli (G >= 204) { bG = 4 } inaczej jeśli (G >= 153) { bG = 3 } inaczej jeśli (G >= 102) { bG = 2 } inaczej jeśli (G >= 51) { bG = 1 } inaczej { bG = 0 } jeśli (B >= 204) { bB = 4 } inaczej jeśli (B >= 153) { bB = 3 } inaczej jeśli (B >= 102) { bB = 2 } w przeciwnym razie if (B >= 51) { bB = 1 } w przeciwnym razie { bB = 0 } if (C >= 60000) { // Nasycenie 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 } inaczej jeśli (C >= 243) { bC = 4 } inaczej jeśli (C >= 81) { bC = 3 } inaczej jeśli (C >= 27) { bC = 2 } else if (C >= 9) { bC = 1 } else { bC = 0 } // zapis do 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: Wykonywanie pomiarów RGB: tryb światła przechodzącego

Wykonywanie pomiarów RGB: tryb światła przechodzącego
Wykonywanie pomiarów RGB: tryb światła przechodzącego
Wykonywanie pomiarów RGB: tryb światła przechodzącego
Wykonywanie pomiarów RGB: tryb światła przechodzącego
Wykonywanie pomiarów RGB: tryb światła przechodzącego
Wykonywanie pomiarów RGB: tryb światła przechodzącego
Wykonywanie pomiarów RGB: tryb światła przechodzącego
Wykonywanie pomiarów RGB: tryb światła przechodzącego

Jak wskazano wcześniej, istnieją dwa tryby pomiaru barwy: spektroskopia światła przechodzącego i odbitego. W trybie światła przechodzącego światło przechodzi przez kolorowy filtr lub roztwór do czujnika. W pomiarach światła odbitego światło emitowane m.in. z diod LED odbija się od obiektu i jest wykrywany przez czujnik.

Wartości RGB są następnie wyświetlane w rzędach od 3 do 5 matrycy LED micro:bit 5x5, przy czym górne diody LED reprezentują niskie, dolne diody LED wartości wysokie.

Do przedstawionych tutaj eksperymentów z pomiarami światła przechodzącego użyłem światła dziennego i umieściłem kolorowe filtry z pakietu próbek Rosco przed czujnikiem. Efekty widać na wyświetlaczu, zwłaszcza w kanale czerwonym. Obejrzyj zdjęcia i porównaj wzory.

Aby odczytać rzeczywiste wartości, wystarczy nacisnąć przycisk A.

Krok 4: Pomiary światła odbitego RGB i jasności

Światło odbite RGB i pomiary jasności
Światło odbite RGB i pomiary jasności
Światło odbite RGB i pomiary jasności
Światło odbite RGB i pomiary jasności
Światło odbite RGB i pomiary jasności
Światło odbite RGB i pomiary jasności

Do pomiaru światła odbitego włączyłem diody LED (przycisk [A+B]) i umieściłem kilka kolorowych kawałków kubków IKEA dla dzieci przed czujnikiem. Jak widać na zdjęciach, wartości RGB zmieniają się zgodnie z oczekiwaniami.

W przypadku pomiarów jasności w pierwszym rzędzie wyświetlane są wartości niskie, w drugim wysokie. Niskie wartości na górnych, wyższe wartości na dolnych diodach. Aby odczytać dokładną wartość, naciśnij przycisk B.

Krok 5: Pomiary światła odbitego: kwiaty

Pomiary światła odbitego: Kwiaty
Pomiary światła odbitego: Kwiaty
Pomiary światła odbitego: Kwiaty
Pomiary światła odbitego: Kwiaty
Pomiary światła odbitego: Kwiaty
Pomiary światła odbitego: Kwiaty
Pomiary światła odbitego: Kwiaty
Pomiary światła odbitego: Kwiaty

Zerwałem kilka dzikich kwiatów z łąki i próbowałem wykonać na nich pomiary kolorów. Były to mak, chaber, chaber, ogrodniczka i liść dilandelona. Wartości RGB wynosiły [R, G, B]:

  • brak [92, 100, 105]
  • mak (czerwony) [208, 98, 99]
  • chaber (niebieski) [93, 96, 138]
  • chaber brunatny (liliowy) [122, 97, 133]
  • ogrodniczka ścienna (żółta) [144, 109, 63]
  • liść mniszka lekarskiego (zielony) [164, 144, 124]

Co pasuje do oczekiwań, przynajmniej dla pierwszych trzech roślin. Aby wyświetlić kolory z wartości, możesz użyć kalkulatora kolorów, tak jak tutaj.

Zalecana: