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, Srpanj
Anonim
Otkrivanje boje pomoću RGB LED
Otkrivanje boje pomoću RGB LED

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

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 1k ohmski otpornik1 Fotootpornik (mijenja otpor ovisno o količini svjetlosti koja je na njega zasjala) Neke žiceSamo mi mikrokontroler i RGB LED trebaju samo široki raspon detektora u boji, ali ako želite samo krug koji detektira jednu boju, ne trebate mikrokontroler - potrebna vam je samo svijetla LED boje koju želite detektirati. 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 putem PWM signala. Stavila sam električnu traku oko fotootpornika tako da ne ulazi svjetlo iz okoline - detektovat će se samo svjetlo neposredno iznad njega.

Korak 3: Kôd

Ovaj kôd je napisan za Microchip PIC 16F887, ali nadamo 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); // Mjerač vremena/prekid setupenable_interrupts_MCP2_TCP2 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; pauza; slučaj 50: p1 = vrijednost; output_high (PIN_C0); p2 = vrijednost; pauza; slučaj 100: p1 = vrijednost; output_high (PIN_C0); p2 = vrijednost; pauza; slučaj 150: output_high (PIN_C0); p1 = 50; p2 = vrijednost; pauza; slučaj 200: output_low (PIN_C0); p1 = 0; p2 = vrijednost; pauza; slučaj 250: p1 = 0; p2 = vrijednost; output_low (PIN_C0); pauza; } p1 = vrijednost; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

Korak 4: Prijave

Prijave!
Prijave!

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

Preporučeni: