Sadržaj:

Otkrivanje boje pomoću RGB LED: 4 koraka
Otkrivanje boje pomoću RGB LED: 4 koraka

Video: Otkrivanje boje pomoću RGB LED: 4 koraka

Video: Otkrivanje boje pomoću RGB LED: 4 koraka
Video: ЧЁРНАЯ МЕТКА ОТ ОККУЛЬТИСТА 2024, Juli
Anonim
Otkrivanje boje pomoću RGB LED diode
Otkrivanje boje pomoću RGB LED diode

Jeste li ikada poželjeli automatizirani način otkrivanja boje objekta? Osvjetljavanjem određene boje na objektu i gledanjem koliko se svjetlosti reflektira unatrag, možete odrediti koje je boje objekt. Na primjer, ako osvijetlite crveno svjetlo na crvenom objektu, to će se svjetlo odbiti natrag. Ako na crveni predmet zasvijetlite plavim svjetlom, objekt će apsorbirati dio te svjetlosti, a manje će se reflektirati natrag.

Korak 1: Potrebni dijelovi

Potrebni dijelovi
Potrebni dijelovi

Koristio sam mikrokontroler PIC 16F887, ali gotovo svaki s mogućnošću modulacije širine impulsa će raditi. 1 RGB LED1 Mikrokontroler1 Standardna crvena LED1 otpornik od 1 k ohma1 Fotootpornik (mijenja otpor ovisno o količini svjetlosti koja ga obasjava) Neke žice Potrebni su mi samo mikrokontroler i RGB LED da bismo imali širok raspon detektora u boji, ali ako želite samo krug koji detektira jednu boju, ne treba vam mikrokontroler - potrebna vam je samo svijetla LED boje koju želite otkriti. Standardna crvena LED dioda je "indikatorska LED" - svijetli kada se detektira prava boja.

Korak 2: Izgradite krug

Izgradite krug
Izgradite krug
Izgradite krug
Izgradite krug

Shema je prilično jednostavna i općenito je prikazana u nastavku. RGB LED napaja se izvana pomoću PWM signala. Stavio sam električnu traku oko fotootpornika tako da ne ulazi unutrašnje svjetlo - samo će se svjetlo detektirati neposredno iznad njega.

Korak 3: Kôd

Ovaj kôd je napisan za Microchip PIC 16F887, ali nadam se da možete steći opću ideju. Koristio sam ugrađeni potenciometar na svojoj razvojnoj ploči za promjenu spektra boja RGB LED (i ne prolazi kroz cijeli spektar jer nemam 3 PWM modula, ali je dovoljno dobar) Uključeni su komentari. #include #include #include "delay.c" #include #include #use delay (clock = 4000000) #FUSES INTRC, NOWDT, NOPUT, NOMCLR, NOPROTECT, NOCPD, NOBROWNOUT, NOIESO, NOFCMEN, NOLVP #byte CCP1CON bajt CCP2CON = 0x1D#bajt PWM1CON = 0x9Bint vrijednost = 128; int p1 = 0; int p2 = 0; void my_setup_ccp1 (vrijednost int8) {output_low (PIN_C2); CCP1CON = vrijednost; PWM1CON = 0;} vrijednost void my_setup {output_low (PIN_C1); CCP2CON = vrijednost;} // =================================== void main () {// A4 = izvor napajanja za photodiodeoutput_high (PIN_A4); output_high (PIN_B1); setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (0); setup_adc_ports (sAN0); // Tajmer/prekid setupenable_interrupts_MCP2 my_setup_ccp2 (CCP_PWM); setup_timer_2 (T2_DIV_BY_1, 128, 1); // setup_compare (2, COMPARE_PWM | COMPARE_TIMER2); while (1) {// Sprječavanje PIC -a da zaspi.//SET PWM DUTY CYCLE output_high; // Pin A3 je fotodiodna veza if (input (PIN_A3) == 1) output_high (PIN_A4); else output_low (PIN_A4); // Očitajte vrijednost potenciometra za promjenu boje LED vrijednosti = read_adc (); prekidač (vrijednost) {slučaj 0: p1 = vrijednost; output_low (PIN_C0); p2 = vrijednost; break; slučaj 50: p1 = vrijednost; output_high (PIN_C0); p2 = vrijednost; break; slučaj 100: p1 = vrijednost; output_high (PIN_C0); p2 = vrijednost; break; slučaj 150: output_high (PIN_C0); p1 = 50; p2 = vrijednost; break; slučaj 200: output_low (PIN_C0); p1 = 0; p2 = vrijednost; break; slučaj 250: p1 = 0; p2 = vrijednost; output_low (PIN_C0); break; } p1 = vrijednost; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

Korak 4: Prijave

Prijave!
Prijave!

Jednostavan detektor boja kao što je ovaj može se koristiti u robotici, ili za hladne projekte poput odvajanja lego kockica po boji, sortiranje M & M -a ili kao pomoć pri daltonizmu. Nadamo se da je ovo uputstvo bilo od pomoći u poboljšanju projekta koji ste imali na umu!:) LED diode su dobre za mnoge stvari….

Preporučuje se: