İçindekiler:
- Adım 1: RGB Renk Alanı
- 2. Adım: İyi Gemi Lissajous
- Adım 3: Bekleyin - Sinüzoidal Dalgalı Bir LED'i Nasıl Sürebiliriz?
- Adım 4: Bir 3D LIssajous Modeli Oluşturalım
- Adım 5: Bunları Arduino'da Bir Araya Getirmek
- Adım 6: Sırada Ne Var?
Video: Renk Uzayını Keşfetmek: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Gözlerimiz ışığı görsel spektrumdaki kırmızı, yeşil ve mavi renklere duyarlı reseptörler aracılığıyla algılar. İnsanlar bu gerçeği film, televizyon, bilgisayarlar ve diğer cihazlar aracılığıyla yaklaşık yüz yıl boyunca renkli görüntüler sağlamak için kullandılar.
Bir bilgisayar veya telefonun ekranında, ekranda yan yana bulunan minik kırmızı, yeşil ve mavi LED'lerin yoğunluğu değiştirilerek görüntüler birçok renkte görüntülenir. Kırmızı, yeşil veya mavi LED'lerden gelen ışığın yoğunluğu değiştirilerek milyonlarca farklı renk gösterilebilir.
Bu proje, bir Arduino, bir RGB LED ve biraz matematik kullanarak kırmızı, yeşil ve mavi (RGB) renk uzayını keşfetmenize yardımcı olacaktır.
Üç rengin, kırmızı, yeşil ve mavinin yoğunluğunu, her rengin bir eksen boyunca olduğu ve üç eksenin de birbirine dik olduğu bir küpteki koordinatlar olarak düşünebilirsiniz. Eksenin sıfır noktasına veya orijine ne kadar yakınsanız, o renk o kadar az gösterilir. Üç rengin tümü için değerler sıfır noktasında veya orijin olduğunda, renk siyahtır ve RGB LED'i tamamen kapalıdır. Üç rengin tümü için değerler olabildiğince yüksek olduğunda (bizim durumumuzda, üç rengin her biri için 255), RGB LED tamamen yanar ve göz bu renk kombinasyonunu beyaz olarak algılar.
Adım 1: RGB Renk Alanı
Güzel imajını kullanma izni için Kenneth Moreland'a teşekkürler.
Arduino'ya bağlı bir RGB LED kullanarak 3B renk alanı küpünün köşelerini keşfetmek istiyoruz, ancak bunu ilginç bir şekilde yapmak istiyoruz. Bunu üç döngüyü (birer kırmızı, yeşil ve mavi için) iç içe geçirerek ve olası tüm renk kombinasyonlarından geçerek yapabilirdik, ancak bu gerçekten sıkıcı olurdu. lazer ışık gösterisi? Ayarlara bağlı olarak, bir Lissajous deseni çapraz çizgi, daire, 8 rakamı veya yavaş dönen sivri kelebek benzeri bir desen gibi görünebilir. Lissajous desenleri, x-y (veya bizim durumumuz için, x-y-z veya R-G-B) eksenlerinde çizilen iki (veya daha fazla) osilatörün sinüzoidal sinyallerinin izlenmesiyle oluşturulur.
2. Adım: İyi Gemi Lissajous
En ilginç Lissajous kalıpları, sinüzoidal sinyallerin frekansları az miktarda farklılık gösterdiğinde ortaya çıkar. Buradaki osiloskop fotoğrafında, frekanslar 5'e 2 oranında farklılık gösterir (her ikisi de asal sayıdır). Bu desen karesini oldukça iyi kaplar ve köşelere güzel girer. Daha yüksek asal sayılar, kareyi kaplamak ve köşelere daha da fazla sokmak için daha iyi bir iş çıkarırdı.
Adım 3: Bekleyin - Sinüzoidal Dalgalı Bir LED'i Nasıl Sürebiliriz?
Beni yakaladın! Üç rengin her biri için kapalı (0) ile tam açık (255) arasında değişen 3B renk uzayını keşfetmek istiyoruz, ancak sinüzoidal dalgalar -1 ile +1 arasında değişir. Burada istediğimizi elde etmek için biraz matematik ve programlama yapacağız.
- -127 ile +127 arasında değişen değerler elde etmek için her değeri 127 ile çarpın
- 127 ekleyin ve 0 ile 255 arasında değişen değerler elde etmek için her değeri yuvarlayın (bizim için 255'e yeterince yakın)
0 ile 255 arasında değişen değerler, tek baytlı sayılarla (C benzeri Arduino programlama dilinde "char" veri türü) temsil edilebilir, bu nedenle tek baytlık gösterimi kullanarak bellekten tasarruf edeceğiz.
Ama açılar nasıl? Derece kullanıyorsanız, 0 ile 360 arasında sinüzoid aralığındaki açılar. Radyan kullanıyorsanız, açılar 0 ile 2 çarpı π ("pi") arasındadır. Arduino'muzda tekrar hafızayı koruyan bir şey yapacağız ve 256 parçaya bölünmüş ve 0 ile 255 arasında değişen "ikili açılara" sahip bir daire düşüneceğiz, böylece renklerin her biri için "açılar" olabilir. burada da tek baytlık sayılar veya karakterlerle temsil edilir.
Arduino, olduğu gibi oldukça şaşırtıcı ve sinüzoidal değerleri hesaplayabilmesine rağmen, daha hızlı bir şeye ihtiyacımız var. Değerleri önceden hesaplayacağız ve bunları programımızda 256 girişli uzun tek baytlık diziye veya char değerlerine koyacağız (Arduino programında SineTable[…] bildirimine bakın).
Adım 4: Bir 3D LIssajous Modeli Oluşturalım
Tabloda üç rengin her biri için farklı bir frekansta dolaşmak için, renk başına bir dizin tutacağız ve renkler arasında adım adım ilerlerken her dizine nispeten asal ofsetler ekleyeceğiz. Kırmızı, Yeşil ve Mavi indeks değerleri için görece asal ofsetler olarak 2, 5 ve 11'i seçeceğiz. Arduino'nun kendi dahili matematik yetenekleri, her bir dizine ofset değerini eklerken otomatik olarak sarmalayarak bize yardımcı olacaktır.
Adım 5: Bunları Arduino'da Bir Araya Getirmek
Çoğu Arduino'nun bir dizi PWM (veya darbe genişlik modülasyonu) kanalı vardır. Burada üç taneye ihtiyacımız olacak. Bir Arduino UNO bunun için harika. Küçük bir 8 bitlik Atmel mikro denetleyicisi (ATTiny85) bile harika bir şekilde çalışıyor.
PWM kanallarının her biri, Arduino'nun "AnalogWrite" işlevini kullanarak, sinüzoidal döngü etrafındaki her noktadaki rengin yoğunluğunun 0'dan (tümü kapalı) bir darbe genişliği veya görev döngüsü ile temsil edildiği RGB LED'in bir rengini sürecektir.) - 255 (tümü açık). Gözlerimiz, yeterince hızlı tekrarlanan bu değişen darbe genişliklerini LED'in farklı yoğunlukları veya parlaklıkları olarak algılar. Üç rengin her birini bir RGB LED'de çalıştıran üç PWM kanalını birleştirerek, 256*256*256 veya on altı milyondan fazla renk görüntüleme yeteneğine sahibiz!
Arduino IDE'yi (Etkileşimli Geliştirme Ortamı) kurmanız ve USB kablosunu kullanarak Arduino kartınıza bağlamanız gerekir. PWM çıkışları 3, 5 ve 6'dan (işlemci pinleri 5, 11 ve 12) proto kartınızdaki veya proto kalkanınızdaki üç 1 KΩ (bin ohm) dirence ve dirençlerden LED R, G'ye jumper çalıştırın, ve B pinleri.
- RGB LED'i ortak bir katot (negatif terminal) ise, katottan Arduino'daki GND pinine bir kablo çekin.
- RGB LED'i ortak bir anot (pozitif terminal) ise, anottan Arduino'daki +5V pinine bir kablo çekin.
Arduino taslağı her iki şekilde de çalışacaktır. Bir SparkFun Electronics / COM-11120 RGB ortak katot LED'i kullandım (yukarıda SparkFun web sitesinden resmedilmiştir). En uzun pim ortak katottur.
RGB-Instructable.ino taslağını indirin, Arduino IDE ile açın ve derlemeyi test edin. Doğru hedef Arduino kartını veya çipini belirttiğinizden emin olun, ardından programı Arduino'ya yükleyin. Hemen başlamalıdır.
RGB LED'in adlandırabildiğiniz kadar çok renk ve sayamayacağınız milyonlarca renk arasından geçtiğini göreceksiniz!
Adım 6: Sırada Ne Var?
Arduino ile RGB Renk Uzayını keşfetmeye başladık. Bu konseptle yaptığım diğer bazı şeyler şunlardır:
İşleri gerçekten hızlandırmak için AnalogWrite kullanmak yerine doğrudan çip üzerindeki kayıtlara yazma
- Devreyi, bir IR yakınlık sensörünün, ne kadar yaklaştığınıza bağlı olarak döngüyü hızlandıracak veya yavaşlatacak şekilde değiştirme
- Bir Atmel ATTiny85 8-pin mikrodenetleyiciyi Arduino bootloader ile programlamak ve bu çizim
Önerilen:
SOLARBOI - Dünyayı Keşfetmek İçin 4G Solar Rover Çıktı!: 3 Adım (Resimlerle)
SOLARBOI - Dünyayı Keşfetmek İçin 4G Solar Rover!: Küçüklüğümden beri keşfetmeyi hep sevmişimdir. Yıllar boyunca, WiFi üzerinden kontrol edilen birçok uzaktan kumandalı araba gördüm ve yeterince eğlenceli görünüyorlardı. Ama çok daha ileri gitmeyi hayal ettim - gerçek dünyaya, sınırların çok ötesine
Arduino RGB Renk Seçici – Gerçek Hayattaki Nesnelerden Renk Seçin: 7 Adım (Resimlerle)
Arduino RGB Renk Seçici - Gerçek Hayattaki Nesnelerden Renk Seçin: Bu Arduino tabanlı RGB renk seçici ile fiziksel nesnelerden kolayca renk seçin, gerçek hayattaki nesnelerde gördüğünüz renkleri PC'nizde veya cep telefonunuzda yeniden oluşturmanıza olanak tanır. Ucuz bir TCS347 kullanarak nesnenin rengini taramak için bir düğmeye basmanız yeterlidir
Windows 8.1'i Keşfetmek!!: 12 Adım
Windows 8.1'i Keşfetmek !!: Bu Eğitim Tablosu, Windows 8.1'in tüm özelliklerine ve programlarına hızlı bir genel bakış sağlayacaktır.Lütfen kanalıma abone olunTeşekkürler
Ücretsiz Buluşlarınızı Yeniden Keşfetmek 'Fantastik Plastik İşler' Robotu Parlamak İçin: 5 Adım
Ücretsiz Buluşlarınızı Yeniden Keşfetmek 'Fantastik Plastik İşler' Robotu Parlamak için: Bir plastik 'robot'u parlatıp renkleri soldurmak için hazır LED'leri kullanmak! Temel lehimleme, devre, LED'ler ve plastiklere giriş sağlar
Kitap Bilgilerini Keşfetmek, Düzenlemek ve Paylaşmak İçin Bir Web Sitesi olan Bookhuddle.com'u Oluşturma: 10 Adım
Kitap Bilgilerini Keşfetmek, Düzenlemek ve Paylaşmak için bir Web Sitesi olan Bookhuddle.com'u Oluşturma: Bu gönderi, okuyucuların kitap bilgilerini keşfetmesine, düzenlemesine ve paylaşmasına yardımcı olmayı amaçlayan bir web sitesi olan Bookhuddle.com'u oluşturma ve başlatmayla ilgili adımları açıklar. Burada açıklanan adımlar diğer web sitelerinin geliştirilmesi için geçerli olacaktır