Spisu treści:
- Krok 1: Użyte materiały
- Krok 2: Skrypt MakeCode/JavaScript
- Krok 3: Wykonywanie pomiarów RGB: tryb światła przechodzącego
- Krok 4: Pomiary światła odbitego RGB i jasności
- Krok 5: Pomiary światła odbitego: kwiaty
Wideo: Pomiary światła i koloru za pomocą Pimoroni Enviro:bit dla Micro:bit: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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
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
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
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:
Używanie skrzydła Pimoroni Enviro+ z piórem Adafruit Feather NRF52840 Express: 8 kroków
Używanie skrzydła Pimoroni Enviro+ FeatherWing z Adafruit Feather NRF52840 Express: Pimoroni Enviro+ FeatherWing to deska pełna czujników zaprojektowanych do współpracy z serią desek Adafruit Feather. Jest to przydatne miejsce do rozpoczęcia dla wszystkich zainteresowanych monitorowaniem środowiska, zanieczyszczeniem atmosfery i gromadzeniem danych. I
Zmiana koloru światła pierścieniowego LED: 11 kroków
Zmiana koloru światła pierścieniowego LED: Dzisiaj zamierzamy zrobić 20-calowe światło pierścieniowe LED zmieniające kolor. Wiem, że pierścienie świetlne mają zazwyczaj okrągły kształt, ale ten będzie kwadratem, aby trochę ułatwić. Ten mini projekt jest przeznaczony przede wszystkim dla fotografów, którzy potrzebują budżetu
Zmiana koloru światła nocnego za pomocą Ardruino 101: 4 kroki (ze zdjęciami)
Lampka nocna zmieniająca kolor za pomocą Ardruino 101: W tym projekcie wykonasz lampkę nocną za pomocą ardruino, pasków Adafruit neo rgb i drukarki 3D. Zwróć uwagę, że to niemożliwe do złamania dotyczy wyłącznie mojego szkolnego projektu. Kod tego projektu jest oparty na innym projekcie. Powiedziawszy to, nie jestem byłym
Zmiana koloru światła USB: 5 kroków
Światło USB zmieniające kolor: Oto światło wykonane z plastikowej butelki, żyłki wędkarskiej, starego kabla USB i wolno zmieniającej się diody LED RGB. Nić nylonowa (żyłka) nie daje takiego samego efektu jak prawdziwe światłowody. Degradacja sygnału świetlnego jest większa wzdłuż
Tania i łatwa zmiana koloru światła nocnego LED RGB: 3 kroki
RGB LED Tania i łatwa zmiana koloru lampki nocnej: Ten projekt był całkiem prosty, gdy się pobawiłem i rozgryzłem, co zajęło trochę czasu. Pomysł polega na tym, aby móc zmienić kolor za pomocą przełącznika i mieć również opcje ściemniania diody LED. Są to elementy, których będziesz potrzebować