Mundarija:

RGB LED yordamida rangni aniqlash: 4 qadam
RGB LED yordamida rangni aniqlash: 4 qadam

Video: RGB LED yordamida rangni aniqlash: 4 qadam

Video: RGB LED yordamida rangni aniqlash: 4 qadam
Video: Arduino kodi bilan RGB LEDni qanday ishlatish kerak qarshilik rezistorini hisoblash 2024, Noyabr
Anonim
RGB LED yordamida rangni aniqlash
RGB LED yordamida rangni aniqlash

Siz hech qachon ob'ektning rangini aniqlashning avtomatlashtirilgan usulini xohlaganmisiz? Ob'ektga ma'lum bir rangning yorug'ligini berib, orqada qancha yorug'lik aks etayotganiga qarab, siz uning qaysi rangda ekanligini bilib olishingiz mumkin. Masalan, agar siz qizil narsaga qizil chiroqni yoqsangiz, u nur qaytariladi. Agar siz qizil narsaga ko'k chiroqni yoqsangiz, ob'ekt uning bir qismini o'zlashtiradi va undan kamroq qismi aks etadi.

1 -qadam: kerakli qismlar

Kerakli qismlar
Kerakli qismlar

Men PIC 16F887 mikrokontrolleridan foydalandim, lekin puls-kenglik-modulyatsiya qobiliyatiga ega deyarli hamma ishlaydi. 1 RGB LED1 Mikrokontroller1 Standart qizil LED 1k ohmli rezistor1 Fotoresistor (uning nurlanishiga qarab qarshiligini o'zgartiradi) Ba'zi simlar Menga faqat rangli detektorlarning keng diapazoni bo'lishi uchun mikrokontroller va RGB LED kerak bo'ladi. bitta rangni aniqlaydi, sizga mikrokontroller kerak emas - faqat siz aniqlamoqchi bo'lgan rangdagi yorqin LED kerak. Oddiy qizil LED - "ko'rsatkichli LED" - to'g'ri rang aniqlanganda yonadi.

2 -qadam: O'chirish sxemasini yarating

O'chirish davri
O'chirish davri
O'chirish davri
O'chirish davri

Sxema juda sodda va umuman olganda quyida ko'rsatilgan. RGB LED tashqi tomondan PWM signali bilan quvvatlanadi, men fotorezistorga elektr tasmasini qo'yaman, shunda atrofdagi yorug'lik kirmaydi - faqat uning ustidagi yorug'lik aniqlanadi.

3 -qadam: Kod

Bu kod Microchip PIC 16F887 uchun yozilgan, lekin umid qilamanki, siz umumiy fikrga ega bo'lasiz. Men RGB LED-ning rang spektrini o'zgartirish uchun ishlab chiqish panelidagi o'rnatilgan potentsiometrdan foydalandim (va u butun spektr bo'ylab o'tmaydi, chunki menda 3 PWM moduli yo'q, lekin bu etarli darajada yaxshi) Sharhlar kiritilgan. #include #include #include "delay.c" #include #include #use delay (soat = 4000000) #FUSES INTRC, NOWDT, NOPUT, NOMCLR, NOPROTECT, NOCPD, NOBROWNOUT, NOIESO, NOFCMEN, NOLVP #bayt CCP1 bayt CCP2CON = 0x1D#bayt PWM1CON = 0x9Bint qiymati = 128; int p1 = 0; int p2 = 0; void my_setup_ccp1 (int8 qiymati) {output_low (PIN_C2); CCP1CON = qiymat; PWM1CON = 0;} bekor qilingan my_setup_ccp2 {output_low (PIN_C1); CCP2CON = qiymati;} // ================================ void main () {// A4 = photodiodeoutput_high uchun quvvat manbai (PIN_A4); output_high (PIN_B1); setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (0); setup_adc_ports (sAN0); // Timer/Interrupt setupenable_interrups_PP_P1 my_setup_ccp2 (CCP_PWM); setup_timer_2 (T2_DIV_BY_1, 128, 1); // setup_compare (2, COMPARE_PWM | COMPARE_TIMER2); while (1) {// PICning uyquga ketishini oldini oladi. // Pin A3 - bu fotodiod aloqasi, agar (kirish (PIN_A3) == 1) chiqish_yuqori (PIN_A4); else output_low (PIN_A4); // LED qiymatining rangini o'zgartirish uchun potansiometrning qiymatini o'qing = read_adc (); switch (qiymat) {0 holat: p1 = qiymat; chiqish_ past (PIN_C0); p2 = qiymat; tanaffus; 50 -holat: p1 = qiymat; chiqish_yuqori (PIN_C0); p2 = qiymat; tanaffus; 100 -holat: p1 = qiymat; chiqish_yuqori (PIN_C0); p2 = qiymat; tanaffus; 150 -holat: chiqish_yuqori (PIN_C0); p1 = 50; p2 = qiymat; tanaffus; ish 200: output_low (PIN_C0); p1 = 0; p2 = qiymat; tanaffus; holat 250: p1 = 0; p2 = qiymat; chiqish_ past (PIN_C0); tanaffus; } p1 = qiymat; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

4 -qadam: Arizalar

Ilovalar!
Ilovalar!

Bu kabi oddiy rang detektori robototexnika sohasida yoki legolarni rang bo'yicha ajratish, M & Mlarni saralash yoki rang ko'rligi uchun yordam sifatida ajoyib loyihalarda ishlatilishi mumkin. Umid qilamanki, bu ko'rsatma siz o'ylagan loyihani yaxshilashda yordam berdi!:) LEDlar ko'p narsalar uchun yaxshi ….

Tavsiya: