İçindekiler:

RGB LED Kullanarak Renk Algılama: 4 Adım
RGB LED Kullanarak Renk Algılama: 4 Adım

Video: RGB LED Kullanarak Renk Algılama: 4 Adım

Video: RGB LED Kullanarak Renk Algılama: 4 Adım
Video: Tinkercad ile Arduino Dersleri - #Ders11 - Butonlar ile RGB Led Renk Oluşturma 2024, Temmuz
Anonim
RGB LED Kullanarak Renk Algılama
RGB LED Kullanarak Renk Algılama

Hiç bir nesnenin rengini algılamanın otomatik bir yolunu istediniz mi? Nesneye belirli bir renkteki ışık parlayarak ve ne kadar ışığın geri yansıdığına bakarak nesnenin hangi renk olduğunu anlayabilirsiniz. Örneğin, kırmızı bir nesneye kırmızı bir ışık tutarsanız, o ışık geri yansır. Kırmızı bir nesneye mavi bir ışık tutarsanız, nesne bu ışığın bir kısmını emecek ve daha azı geri yansıtılacaktır.

Adım 1: Gerekli Parçalar

Gerekli Parçalar
Gerekli Parçalar

Bir PIC 16F887 Mikrodenetleyici kullandım, ancak darbe genişlik modülasyonu özelliğine sahip hemen hemen her şey çalışacaktır. 1 RGB LED1 Mikrodenetleyici1 Standart kırmızı LED1 1k ohm direnç1 Fotodirenç (üzerine gelen ışığın miktarına bağlı olarak direnci değiştirir)Bazı kablolarGeniş bir renk dedektörü yelpazesine sahip olmak için sadece mikrodenetleyiciye ve RGB LED'e ihtiyacım var, ancak sadece bir devre istiyorsanız bir rengi algılar, bir mikro denetleyiciye ihtiyacınız yoktur - yalnızca algılamak istediğiniz rengin parlak bir LED'ine ihtiyacınız vardır. Standart kırmızı LED, "gösterge LED'idir" - doğru renk algılandığında yanar.

Adım 2: Devreyi Oluşturun

Devreyi İnşa Et
Devreyi İnşa Et
Devreyi İnşa Et
Devreyi İnşa Et

Şematik oldukça basittir ve genel olarak aşağıda gösterilmiştir. RGB LED'e harici olarak bir PWM sinyali ile güç verilir. Ortam ışığının içeri girmemesi için fotorezistörün etrafına elektrik bandı koydum - sadece doğrudan üzerindeki ışık algılanacak.

Adım 3: Kod

Bu kod bir Microchip PIC 16F887 için yazılmıştır, ancak umarım genel fikri anlayabilirsiniz. RGB LED'in renk spektrumunu değiştirmek için geliştirme kartımdaki yerleşik potansiyometreyi kullandım (ve 3 PWM modülüm olmadığı için tüm spektrumdan geçmiyor, ancak bu yeterince iyi) Yorumlar dahil. #include #include #include "delay.c"#include #include #gecikmeyi kullan(clock = 4000000)#FUSES INTRC, NOWDT, NOPUT, NOMCLR, NOPROTECT, NOCPD, NOBROWNOUT, NOIESO, NOFCMEN, NOLVP#byte CCP1CON = 0x17# bayt CCP2CON = 0x1D#byte PWM1CON = 0x9Bint değeri = 128;int p1 = 0;int p2 = 0;void my_setup_ccp1(int8 değeri){output_low(PIN_C2);CCP1CON = value;PWM1CON = 0;}void my_setup_ccp2(int8 değeri) {output_low(PIN_C1);CCP2CON = değer;}//=================================== ana geçersiz (){//A4 = photodiodeoutput_high(PIN_A4);output_high(PIN_B1);setup_adc(ADC_CLOCK_INTERNAL);set_adc_channel(0);setup_adc_ports(sAN0) için güç kaynağı;//Timer/Interrupt setupenable_interrupts;(INT_setup_CP1); my_setup_ccp2(CCP_PWM);setup_timer_2(T2_DIV_BY_1, 128, 1);//setup_compare(2, COMPARE_PWM|COMPARE_TIMER2);while(1){ // PIC'nin uyku moduna geçmesini engelle.//SET PWM DUTY CYCLE output_high(PIN_A5); //Pin A3 fotodiyot bağlantısıdır if(input(PIN_A3) == 1) output_high(PIN_A4); else output_low(PIN_A4);//LED'in rengini değiştirmek için potansiyometre değerini okuyun değeri = read_adc(); geçiş (değer) { durum 0: p1 = değer; output_low(PIN_C0); p2 = değer; kırmak; durum 50: p1 = değer; output_high(PIN_C0); p2 = değer; kırmak; durum 100: p1 = değer; output_high(PIN_C0); p2 = değer; kırmak; durum 150: output_high(PIN_C0); p1 = 50; p2 = değer; kırmak; durum 200: output_low(PIN_C0); p1 = 0; p2 = değer; kırmak; durum 250: p1 = 0; p2 = değer; output_low(PIN_C0); kırmak; } p1 = değer; p2 = 128 - p1; set_pwm1_duty(p1); set_pwm2_duty(p2);}}

Adım 4: Uygulamalar

Uygulamalar!
Uygulamalar!

Bunun gibi basit bir renk dedektörü robotikte veya legoları renge göre ayırmak, M&M'leri sıralamak veya renk körlüğüne yardımcı olmak gibi harika projeler için kullanılabilir. Umarım bu talimat, aklınızdaki bir projeyi geliştirmede yardımcı olmuştur!:) LED'ler pek çok şeye iyi geliyor….

Önerilen: