- Gerekli malzemeler:
- LDR:
- RGB LED:
- Devre şeması:
- Programlama Açıklaması:
- Arduino Renk Karıştırma Lambasının Çalışması:
Ya tek bir RGB led kullanarak farklı renkler oluşturabilir ve odamızın köşesini daha çekici hale getirebilirsek? İşte burada, odadaki ışık değişikliği olduğunda renk değiştirebilen basit bir Arduino tabanlı renk karıştırma lambası. Böylece bu lamba odadaki ışık koşullarına göre otomatik olarak rengini değiştirecektir.
Her renk Kırmızı, Yeşil ve Mavi rengin birleşimidir. Yani kırmızı, yeşil ve mavi renkleri kullanarak herhangi bir rengi üretebiliriz. Yani burada PWM'yi yani LDR'lerdeki ışık yoğunluğunu değiştireceğiz. Bu RGB LED'de kırmızı, yeşil ve mavi renk yoğunluğunu daha da değiştirecek ve farklı renkler üretilecektir.
Aşağıdaki tablo, görev döngülerindeki ilgili değişiklikle renk kombinasyonlarını göstermektedir.
Gerekli malzemeler:
- 1 x Arduino UNO
- 1 x Hamur Tahtası
- 3 x 220 ohm direnç
- 3 x 1 kilohm direnç
- Atlama telleri
- 3 adet LDR
- 3 x renkli şerit (kırmızı, yeşil, mavi)
- 1 x RGB LED
LDR:
Biz kullanacağız photoresistor (veya ışık bağımlı direnç, LDR veya foto-iletken hücreyi bu devrede burada). LDR'ler, ışığa duyarlı özelliklerine sahip olmalarını sağlamak için yarı iletken malzemelerden yapılmıştır. Bu LDR'ler veya FOTOĞRAF DİRENÇLERİ “Foto İletkenlik” ilkesine göre çalışır. Şimdi bu ilkenin söylediği şey, LDR'nin yüzeyine ışık düştüğünde (bu durumda) elemanın iletkenliği artar veya başka bir deyişle, ışık LDR'nin yüzeyine düştüğünde LDR'nin direnci düşer. LDR için direnç azalmasının bu özelliği, yüzeyde kullanılan yarı iletken malzemenin bir özelliği olduğu için elde edilir.
Burada, RGB Led içindeki ayrı Kırmızı, Yeşil ve Mavi LED'in parlaklığını kontrol etmek için üç LDR sensörü kullanılır. Arduino ile LDR'yi kontrol etme hakkında daha fazla bilgiyi burada bulabilirsiniz.
RGB LED:
Var iki tip RGB LED, bir ortak bir katot tipi (yaygın negatif) ve diğer bir ortak anot tipi (yaygın pozitif) tipidir. CC'de (Ortak Katot veya Ortak Negatif), her terminal bir rengi temsil eden üç pozitif terminal ve üç rengi de temsil eden bir negatif terminal olacaktır.
Devremizde CA (Ortak Anot veya Ortak Pozitif) tipini kullanacağız. Ortak Anot tipinde, KIRMIZI LED'in AÇIK olmasını istiyorsak, KIRMIZI LED pimini topraklamalı ve ortak pozitif enerjiye güç vermeliyiz. Aynı şey tüm LED'ler için de geçerli. RGB LED ile Arduino arasında arayüz oluşturmayı buradan öğrenin.
Devre şeması:
Bu projenin tam devre şeması yukarıda verilmiştir. Devre şemasında gösterilen + 5V ve toprak bağlantısı, Arduino'nun 5V ve topraklama piminden elde edilebilir. Arduino'nun kendisi, dizüstü bilgisayarınızdan veya 12V adaptör veya 9V pil kullanılarak DC jakından çalıştırılabilir.
RGB led'in parlaklığını değiştirmek için PWM kullanacağız. Buradan PWM hakkında daha fazla bilgi edinebilirsiniz. İşte Arduino ile bazı PWM örnekleri:
- Arduino Uno'dan Değişken Güç Kaynağı
- Arduino kullanarak DC Motor Kontrolü
- Arduino Tabanlı Ton Üreteci
Programlama Açıklaması:
Öncelikle tüm giriş ve çıkış pinlerini aşağıda gösterildiği gibi ilan ediyoruz.
const bayt red_sensor_pin = A0; const bayt green_sensor_pin = A1; const bayt blue_sensor_pin = A2; const bayt green_led_pin = 9; const bayt blue_led_pin = 10; const bayt red_led_pin = 11;
Sensör ve ledlerin başlangıç değerlerini 0 olarak verin.
işaretsiz int red_led_value = 0; işaretsiz int blue_led_value = 0; işaretsiz int green_led_value = 0; işaretsiz int red_sensor_value = 0; işaretsiz int blue_sensor_value = 0; işaretsiz int green_sensor_value = 0; void setup () { pinMode (red_led_pin, OUTPUT); pinMode (blue_led_pin, OUTPUT); pinMode (green_led_pin, OUTPUT); Serial.begin (9600); }
Döngü bölümünde, analogRead () ile üç sensörün çıkışını alacağız; işlev ve üç farklı değişkende saklayın.
boşluk döngüsü () { red_sensor_value = analogRead (red_sensor_pin); gecikme (50); blue_sensor_value = analogRead (blue_sensor_pin); gecikme (50); green_sensor_value = analogRead (green_sensor_pin);
Hata ayıklama amacıyla bu değerleri seri monitöre yazdırın
Serial.println ("Ham Sensör Değerleri:"); Seri.print ("\ t Kırmızı:"); Serial.print (red_sensor_value); Seri.print ("\ t Mavi:"); Serial.print (blue_sensor_value); Seri.print ("\ t Yeşil:"); Serial.println (green_sensor_value);
Sensörlerden 0-1023 değerleri alacağız ancak Arduino PWM pinlerimiz çıkış olarak 0-255 değerlerine sahiptir. Yani ham değerlerimizi 0-255'e çevirmeliyiz. Bunun için ham değerleri 4'e bölmeliyiz VEYA basitçe bu değerleri dönüştürmek için Arduino'nun haritalama fonksiyonunu kullanabiliriz.
red_led_value = red_sensor_value / 4; // Kırmızı LED'i tanımlayın blue_led_value = blue_sensor_value / 4; // Mavi LED'i tanımlayın green_led_value = green_sensor_value / 4; // Yeşil Led'i tanımlayın
Eşlenen değerleri seri monitöre yazdırın
Serial.println ("Eşlenen Sensör Değerleri:"); Seri.print ("\ t Kırmızı:"); Seri.print (red_led_value); Seri.print ("\ t Mavi:"); Serial.print (blue_led_value); Seri.print ("\ t Yeşil:"); Serial.println (green_led_value);
RGB LED çıkışı için analogWrite () kullanın
analogWrite (red_led_pin, red_led_value); // kırmızı LED analogWrite (blue_led_pin, blue_led_value); // mavi LED analogWrite (green_led_pin, green_led_value); // yeşili göster
Arduino Renk Karıştırma Lambasının Çalışması:
Üç LDR kullandığımız için, bu sensörlerde ışık olayı meydana geldiğinde direnci değişir, bunun sonucunda Arduino'nun sensörler için bir giriş pini görevi gören analog pinlerinde voltajlar da değişir.
Bu sensörlerde ışık şiddeti değiştiğinde, RGB'deki ilgili led'i direnç miktarı değiştikçe yanacaktır ve PWM kullanarak RGB led'de farklı renk karışımımız var.