Բովանդակություն:

Գույնի հայտնաբերում RGB LED- ի միջոցով. 4 քայլ
Գույնի հայտնաբերում RGB LED- ի միջոցով. 4 քայլ

Video: Գույնի հայտնաբերում RGB LED- ի միջոցով. 4 քայլ

Video: Գույնի հայտնաբերում RGB LED- ի միջոցով. 4 քայլ
Video: ESP32 Tutorial 6 - Using RGB LED Project 2.3 -SunFounder's ESP32 IoT Learnig kit 2024, Նոյեմբեր
Anonim
Գույնի հայտնաբերում RGB LED- ի միջոցով
Գույնի հայտնաբերում RGB LED- ի միջոցով

Երբևէ ցանկացե՞լ եք օբյեկտի գույնը հայտնաբերելու ավտոմատացված եղանակ: Փայլելով որոշակի գույնի առարկայի վրա և նայելով, թե որքան լույս է հետադարձվում, կարող եք ասել, թե ինչ գույնի է առարկան: Օրինակ, եթե կարմիր լույս վառեք կարմիր առարկայի վրա, այդ լույսը հետ կանդրադառնա: Եթե կարմիր օբյեկտի վրա կապույտ լույս եք շողացնում, օբյեկտը կլանում է այդ լույսի մի մասը, և դրանից քիչը հետ է արտացոլվում:

Քայլ 1: Անհրաժեշտ մասեր

Պահանջվող մասեր
Պահանջվող մասեր

Ես օգտագործել եմ PIC 16F887 միկրոկոնտրոլեր, բայց գրեթե ցանկացած զարկերակի լայնության մոդուլյացիայի ունակությամբ կաշխատի: 1 RGB LED1 Միկրոկոնտրոլեր 1 Ստանդարտ կարմիր LED 1 կիլոմետր դիմադրություն 1 Ֆոտոռեզիստոր (փոխում է դիմադրությունը ՝ կախված դրա վրա լուսավորված լույսի չափից) Որոշ լարեր Ինձ միայն միկրոկոնտրոլերն ու RGB LED- ն են պետք, որպեսզի ունենան գունային դետեկտորների լայն տեսականի, բայց եթե դուք միայն միացում եք ուզում հայտնաբերում է մեկ գույն, ձեզ հարկավոր չէ միկրոկոնտրոլեր. ձեզ հարկավոր է միայն վառ գույնի լուսադիոդ, որը ցանկանում եք հայտնաբերել: Ստանդարտ կարմիր LED- ը «ցուցիչ LED» - այն լուսավորվում է, երբ ճիշտ գույնը հայտնաբերվում է:

Քայլ 2: Կառուցեք շրջանը

Կառուցեք շրջանը
Կառուցեք շրջանը
Կառուցեք շրջանը
Կառուցեք շրջանը

Սխեմատիկան բավականին պարզ է, և ընդհանուր տեսքով, ստորև ներկայացված է: RGB LED- ն արտաքինից սնուցվում է PWM ազդանշանով: Ես էլեկտրական ժապավեն եմ դնում ֆոտոռեզիստորի շուրջը, որպեսզի շրջակա միջավայրի լույսը չընկնի. Կհայտնաբերվի միայն դրա վերևի լույսը:

Քայլ 3: Կոդ

Այս ծածկագիրը գրված է միկրոչիպի PIC 16F887 համարի համար, բայց հուսով եմ, որ կարող եք ստանալ ընդհանուր գաղափարը: Ես օգտագործեցի ներկառուցված պոտենցիոմետրը իմ զարգացման տախտակի վրա ՝ RGB LED- ի գունային սպեկտրը փոխելու համար (և այն չի անցնում ամբողջ սպեկտրով, քանի որ ես չունեմ 3 PWM մոդուլ, բայց դա բավական լավ է) Մեկնաբանությունները ներառված են: #include #include #include "delay.c" #include #include #use delay (clock = 4000000) #FUSES INTRC, NOWDT, NOPUT, NOMCLR, NOPROTECT, NOCPD, NOBROWNOUT, NOIESO, NOFCMEN, NOLVP #բայթ CCP1 բայթ CCP2CON = 0x1D#բայթ PWM1CON = 0x9Bint արժեքը = 128; int p1 = 0; int p2 = 0; void my_setup_ccp1 (int8 արժեքը) {output_low (PIN_C2); CCP1CON = արժեք; PWM1CON = 0;} անվավեր my_setup8) արժեք {output_low (PIN_C1); CCP2CON = արժեք;} // ==================================== անվավեր հիմնական () {// A4 = էներգիայի աղբյուր photodiodeoutput_high (PIN_A4); ելքային_բարձր (PIN_B1); setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (0); setup_adc_ports (sAN0); // erամաչափ/ընդհատում setupenable_inter_p2 my_setup_ccp2 (CCP_PWM); setup_timer_2 (T2_DIV_BY_1, 128, 1); // setup_compare (2, COMPARE_PWM | COMPARE_TIMER2); մինչդեռ (1) {// Կանխել PIC- ի քնելը://SET PWM DUTAY; // Pin A3- ը ֆոտոդիոդի միացումն է, եթե (մուտքագրում (PIN_A3) == 1) ելքային_բարձր (PIN_A4); else output_low (PIN_A4); // կարդալ պոտենցիոմետրի արժեքը LED գույնի գույնը փոխելու համար = read_adc (); անջատիչ (արժեք) {դեպք 0: p1 = արժեք; output_low (PIN_C0); p2 = արժեք; ընդմիջում; գործ 50: p1 = արժեք; ելքային_բարձր (PIN_C0); p2 = արժեք; ընդմիջում; գործ 100: p1 = արժեք; ելքային_բարձր (PIN_C0); p2 = արժեք; ընդմիջում; պատյան 150 ՝ ելքային_բարձր (PIN_C0); p1 = 50; p2 = արժեք; ընդմիջում; պատյան 200 ՝ ելքային_չափ (PIN_C0); p1 = 0; p2 = արժեք; ընդմիջում; գործ 250: p1 = 0; p2 = արժեք; output_low (PIN_C0); ընդմիջում; } p1 = արժեք; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

Քայլ 4: Դիմումներ:

Դիմումներ!
Դիմումներ!

Նման պարզ դետեկտորը կարող է օգտագործվել ռոբոտաշինության մեջ, կամ այնպիսի զով նախագծերի համար, ինչպիսիք են լեգոները գույնով առանձնացնելը, M & M- ները տեսակավորելը կամ որպես օգնություն գունային կուրության համար: Հուսով եմ, որ այս ուսանելիը օգտակար եղավ ձեր մտքում դրված նախագիծը բարելավելու համար::) LED- ները լավ են շատ բաների համար …:

Խորհուրդ ենք տալիս: