Spisu treści:
- Krok 1: Przestrzeń kolorów RGB
- Krok 2: Dobry statek Lissajous
- Krok 3: Poczekaj - jak możemy napędzać diodę LED falą sinusoidalną?
- Krok 4: Zbudujmy wzór 3D Lissajous
- Krok 5: Łączenie tego wszystkiego w Arduino
- Krok 6: Co dalej?
Wideo: Odkrywanie przestrzeni kolorów: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Nasze oczy odbierają światło przez receptory wrażliwe na kolory czerwony, zielony i niebieski w spektrum widzenia. Przez ostatnie sto lat ludzie wykorzystywali ten fakt do dostarczania kolorowych obrazów za pośrednictwem filmu, telewizji, komputerów i innych urządzeń.
Na ekranie komputera lub telefonu obrazy są wyświetlane w wielu kolorach, zmieniając intensywność maleńkich czerwonych, zielonych i niebieskich diod LED, które znajdują się obok siebie na ekranie. Zmieniając intensywność światła z czerwonej, zielonej lub niebieskiej diody LED, można pokazać miliony różnych kolorów.
Ten projekt pomoże Ci zbadać przestrzeń kolorów czerwonego, zielonego i niebieskiego (RGB) za pomocą Arduino, diody LED RGB i trochę matematyki.
Możesz myśleć o intensywności trzech kolorów, czerwonego, zielonego i niebieskiego, jako o współrzędnych w sześcianie, gdzie każdy kolor jest wzdłuż jednej osi, a wszystkie trzy osie są do siebie prostopadłe. Im bliżej jesteś punktu zerowego lub początku osi, tym mniej tego koloru jest wyświetlane. Gdy wartości wszystkich trzech kolorów są w punkcie zerowym, czyli początku, wtedy kolor jest czarny, a dioda LED RGB jest całkowicie wyłączona. Gdy wartości dla wszystkich trzech kolorów są tak wysokie, jak to możliwe (w naszym przypadku 255 dla każdego z trzech kolorów), dioda LED RGB jest całkowicie włączona, a oko postrzega tę kombinację kolorów jako białą.
Krok 1: Przestrzeń kolorów RGB
Dziękuję Kennethowi Morelandowi za zgodę na wykorzystanie jego ładnego wizerunku.
Chcielibyśmy zbadać zakamarki przestrzeni kolorów 3D za pomocą diody LED RGB podłączonej do Arduino, ale też chcemy to zrobić w ciekawy sposób. Moglibyśmy to zrobić, zagnieżdżając trzy pętle (po jednej dla czerwonego, zielonego i niebieskiego) i przechodząc przez każdą możliwą kombinację kolorów, ale to byłoby naprawdę nudne. Czy widzieliście kiedyś dwuwymiarowy wzór Lissajous na oscyloskopie lub pokaz świateł laserowych? W zależności od ustawień wzór Lissajous może wyglądać jak ukośna linia, koło, ósemka lub powoli obracający się, spiczasty wzór przypominający motyla. Wzory Lissajous są tworzone przez śledzenie sygnałów sinusoidalnych dwóch (lub więcej) oscylatorów wykreślonych na osiach x-y (lub, w naszym przypadku, x-y-z lub R-G-B).
Krok 2: Dobry statek Lissajous
Najciekawsze wzory Lissajous pojawiają się, gdy częstotliwości sygnałów sinusoidalnych różnią się nieznacznie. Na zdjęciu z oscyloskopu częstotliwości różnią się o stosunek 5 do 2 (obie liczby są liczbami pierwszymi). Ten wzór dość dobrze pokrywa swój kwadrat i ładnie wchodzi w rogi. Wyższe liczby pierwsze zrobiłyby jeszcze lepszą robotę, pokrywając kwadrat i wbijając się jeszcze głębiej w rogi.
Krok 3: Poczekaj - jak możemy napędzać diodę LED falą sinusoidalną?
Masz mnie! Chcemy zbadać przestrzeń kolorów 3D, która waha się od wyłączenia (0) do pełnego włączenia (255) dla każdego z trzech kolorów, ale fale sinusoidalne wahają się od -1 do +1. Zrobimy trochę matematyki i programowania, aby uzyskać to, czego chcemy.
- Pomnóż każdą wartość przez 127, aby uzyskać wartości z zakresu od -127 do +127
- Dodaj 127 i zaokrąglij każdą wartość, aby uzyskać wartości z zakresu od 0 do 255 (wystarczająco blisko 255 dla nas)
Wartości z zakresu od 0 do 255 mogą być reprezentowane przez liczby jednobajtowe (typ danych „char” w języku programowania Arduino podobnym do C), więc zaoszczędzimy pamięć, korzystając z reprezentacji jednobajtowej.
Ale co z kątami? Jeśli używasz stopni, kąty mieszczą się w zakresie sinusoidy od 0 do 360. Jeśli używasz radianów, kąty wahają się od 0 do 2 razy π ("pi"). Zamierzamy zrobić coś, co ponownie zaoszczędzi pamięć w naszym Arduino i pomyślimy o kole podzielonym na 256 części i mającym „kąty binarne” w zakresie od 0 do 255, więc „kąty” dla każdego z kolorów mogą być tutaj również reprezentowane są przez liczby jednobajtowe lub znaki.
Arduino jest całkiem niesamowite takim, jakim jest i chociaż potrafi obliczać wartości sinusoidalne, potrzebujemy czegoś szybszego. Wstępnie obliczymy wartości i umieścimy je w 256-wejściowej tablicy wartości jednobajtowych lub wartości char w naszym programie (patrz deklaracja SineTable[…] w programie Arduino).
Krok 4: Zbudujmy wzór 3D Lissajous
Aby przechodzić przez tabelę z inną częstotliwością dla każdego z trzech kolorów, zachowamy jeden indeks na kolor i dodamy względnie pierwsze przesunięcia do każdego indeksu podczas przechodzenia przez kolory. Wybierzemy 2, 5 i 11 jako względnie pierwsze przesunięcia dla wartości indeksu czerwonego, zielonego i niebieskiego. Własne wewnętrzne możliwości matematyczne Arduino pomogą nam automatycznie zawijać się, gdy dodajemy wartość przesunięcia do każdego indeksu.
Krok 5: Łączenie tego wszystkiego w Arduino
Większość Arduino ma kilka kanałów PWM (lub modulacji szerokości impulsu). Potrzebujemy tu trzech. Arduino UNO świetnie się do tego nadaje. Nawet mały 8-bitowy mikrokontroler Atmel (ATTiny85) działa bajecznie.
Każdy z kanałów PWM będzie sterował jednym kolorem diody LED RGB za pomocą funkcji Arduino „AnalogWrite”, w której intensywność koloru w każdym punkcie wokół cyklu sinusoidalnego jest reprezentowana przez szerokość impulsu lub cykl pracy, od 0 (wszystkie wyłączone) do 255 (wszystkie włączone). Nasze oczy postrzegają te zmieniające się szerokości impulsów, powtarzane wystarczająco szybko, jako różne natężenia lub jasności diody LED. Łącząc wszystkie trzy kanały PWM sterujące każdym z trzech kolorów w LED RGB, otrzymujemy możliwość wyświetlania 256*256*256, czyli ponad szesnastu milionów kolorów!
Musisz skonfigurować Arduino IDE (interaktywne środowisko programistyczne) i podłączyć je do płyty Arduino za pomocą kabla USB. Uruchom zworki z wyjść PWM 3, 5 i 6 (styki 5, 11 i 12 procesora) do trzech rezystorów 1 KΩ (tysiąc omów) na twojej płycie lub osłonie proto, a także z rezystorów do diody LED R, G i kołki B.
- Jeśli dioda LED RGB jest wspólną katodą (zacisk ujemny), poprowadź przewód z katody z powrotem do styku GND w Arduino.
- Jeśli dioda LED RGB jest wspólną anodą (zacisk dodatni), poprowadź przewód z anody z powrotem do pinu +5V w Arduino.
Szkic Arduino zadziała w obie strony. Zdarzyło mi się użyć diody LED wspólnej katody SparkFun Electronics / COM-11120 RGB (na zdjęciu powyżej, ze strony internetowej SparkFun). Najdłuższy pin to wspólna katoda.
Pobierz szkic RGB-Instructable.ino, otwórz go za pomocą Arduino IDE i przetestuj kompilację. Pamiętaj, aby określić poprawną docelową płytę lub układ Arduino, a następnie załaduj program do Arduino. Powinien uruchomić się natychmiast.
Zobaczysz, jak dioda LED RGB przechodzi przez tyle kolorów, ile możesz nazwać, a miliony nie możesz!
Krok 6: Co dalej?
Właśnie rozpoczęliśmy odkrywanie przestrzeni kolorów RGB z naszym Arduino. Kilka innych rzeczy, które zrobiłem z tą koncepcją, to:
Bezpośrednie zapisywanie do rejestrów na chipie, zamiast używania AnalogWrite, aby naprawdę przyspieszyć
- Modyfikowanie obwodu tak, aby czujnik zbliżeniowy IR przyspieszał lub spowalniał cykl w zależności od tego, jak blisko się znajdujesz
- Programowanie 8-pinowego mikrokontrolera Atmel ATTiny85 za pomocą bootloadera Arduino i tego szkicu
Zalecana:
Jak zakodować sorter kolorów w Modkit for Vex: 7 kroków
Jak zakodować sorter kolorów w Modkit for Vex: Cześć wszystkim, w tym samouczku dowiesz się, jak zakodować sorter kolorów w Modkit for VexHope, zrobisz to i ciesz się! Proszę głosuj na mnie!:)
Uprawa większej ilości sałaty na mniejszej przestrzeni lub Uprawa sałaty w kosmosie (mniej więcej): 10 kroków
Uprawa większej ilości sałaty w mniejszej przestrzeni lub… Uprawa sałaty w kosmosie (mniej więcej): To profesjonalne zgłoszenie do konkursu Growing Beyond Earth, Maker Contest, przesłane za pośrednictwem Instructables. Nie mogłem być bardziej podekscytowany projektowaniem pod kątem produkcji roślin kosmicznych i publikowaniem mojego pierwszego Instructable. Aby rozpocząć, konkurs poprosił nas o
Urządzenie LED z Bluetooth: wejście do innego wymiaru przestrzeni: 6 kroków
Urządzenie LED z Bluetooth: Wejście do przestrzeni innego wymiaru: Jest to dzieło sztuki związane z urządzeniem świetlnym LED dla mojego projektu rzeźby o nazwie Sacred Object. Używam tego urządzenia do zaprezentowania wpisu do nowego świata. Kiedy włączam światło LED, widzimy nieskończony tunel wewnątrz betonowego pudełka.Taśma LED to kontrola
CAD 3D - standardowe konfiguracje i tworzenie przestrzeni roboczej: 14 kroków
CAD 3D - Standardowe konfiguracje i tworzenie obszaru roboczego: -Tworzenie (a) standardowego pliku części w celu zwiększenia wydajnościTen samouczek dotyczy tworzenia domyślnego pliku części, który będzie można otworzyć w przyszłości - wiedząc, że określone kluczowe parametry już tam są - zminimalizowanie ilości powtarzalnej pracy w ciągu dnia
Ogrzewanie przestrzeni sterowane przez cyfrowy termostat: 5 kroków (ze zdjęciami)
Grzejnik przestrzeni kontrolowany przez cyfrowy termostat: Ta instrukcja pokazuje, jak używać gotowego cyfrowego programowalnego termostatu do sterowania niedrogim grzejnikiem. Większość tanich grzejników ma tylko analogowe pokrętło do zgrubnego ustawiania temperatury; nawet najbardziej wymyślne modele pozwalają tylko