Kazalo:

Zaznavanje barve z LED RGB: 4 koraki
Zaznavanje barve z LED RGB: 4 koraki

Video: Zaznavanje barve z LED RGB: 4 koraki

Video: Zaznavanje barve z LED RGB: 4 koraki
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Julij
Anonim
Zaznavanje barve z LED RGB
Zaznavanje barve z LED RGB

Ste že kdaj želeli avtomatiziran način zaznavanja barve predmeta? Če na predmet prižgete svetlobo določene barve in pogledate, koliko svetlobe se odbije nazaj, lahko ugotovite, kakšne barve je predmet. Če na primer prižgete rdečo luč na rdečem predmetu, se bo ta svetloba odbila nazaj. Če na rdeči predmet zasvetite z modro svetlobo, bo predmet absorbiral del te svetlobe in manj se bo odbijal nazaj.

Korak: Potrebni deli

Potrebni deli
Potrebni deli

Uporabil sem mikrokrmilnik PIC 16F887, vendar bo deloval skoraj vsak s funkcijo modulacije širine impulza. 1 RGB LED1 Mikrokrmilnik 1 Standardna rdeča LED 1 1 k ohmski upor 1 Foto upor (spreminja upor glede na količino svetlobe, ki je nanj sijala) Nekatere žice Potrebujem le mikrokrmilnik in RGB LED, da imata široko paleto barvnih detektorjev, če pa želite samo vezje, ki zazna eno barvo, ne potrebujete mikrokrmilnika - potrebujete le svetlo LED barve, ki jo želite zaznati. Standardna rdeča LED je "indikatorska LED" - zasveti, ko zazna pravo barvo.

2. korak: Zgradite vezje

Zgradite vezje
Zgradite vezje
Zgradite vezje
Zgradite vezje

Shema je precej preprosta in v splošni obliki je prikazana spodaj. RGB LED se napaja zunaj s pomočjo PWM signala. Okrog fotorezistorja sem položil električni trak, tako da svetloba iz okolice ne prihaja - zaznala se bo le svetloba neposredno nad njim.

3. korak: Koda

Ta koda je bila napisana za Microchip PIC 16F887, vendar upamo, da boste dobili splošno predstavo. Uporabil sem vgrajen potenciometer na svoji razvojni plošči za spreminjanje barvnega spektra LED RGB (in ne gre skozi celoten spekter, ker nimam 3 modulov PWM, vendar je dovolj dober) Komentarji so vključeni. #include #include #include "delay.c" #include #include #use delay (ura = 4000000) #FUSES INTRC, NOWDT, NOPUT, NOMCLR, NOPROTECT, NOCPD, NOBROWNOUT, NOIESO, NOFCMEN, NOLVP #byte CCP1CON bajt CCP2CON = 0x1D#bajt PWM1CON = 0x9Bint vrednost = 128; int p1 = 0; int p2 = 0; void my_setup_ccp1 (vrednost int8) {output_low (PIN_C2); CCP1CON = vrednost; PWM1CON = 0;} void my_setup {output_low (PIN_C1); CCP2CON = vrednost;} // =================================== void main () {// A4 = vir napajanja za photodiodeoutput_high (PIN_A4); output_high (PIN_B1); setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (0); setup_adc_ports (sAN0); // Timer/Interrupt setupenable_interrupts my_setup_ccp2 (CCP_PWM); setup_timer_2 (T2_DIV_BY_1, 128, 1); // setup_compare (2, COMPARE_PWM | COMPARE_TIMER2); while (1) {// Prepreči, da bi PIC prešel v stanje spanja.//SET PWM DUTY CYCLE output_high // Pin A3 je fotodiodna povezava if (input (PIN_A3) == 1) output_high (PIN_A4); else output_low (PIN_A4); // Odčitajte vrednost potenciometra za spremembo barve LED vrednosti = read_adc (); stikalo (vrednost) {primer 0: p1 = vrednost; output_low (PIN_C0); p2 = vrednost; prekiniti; primer 50: p1 = vrednost; output_high (PIN_C0); p2 = vrednost; prekiniti; primer 100: p1 = vrednost; output_high (PIN_C0); p2 = vrednost; prekiniti; primer 150: output_high (PIN_C0); p1 = 50; p2 = vrednost; prekiniti; primer 200: output_low (PIN_C0); p1 = 0; p2 = vrednost; prekiniti; primer 250: p1 = 0; p2 = vrednost; output_low (PIN_C0); prekiniti; } p1 = vrednost; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

4. korak: Prijave

Prijave!
Prijave!

Preprost detektor barv, kot je ta, se lahko uporablja v robotiki ali za kul projekte, kot so ločevanje legov po barvah, razvrščanje M & M ali kot pomoč pri barvni slepoti. Upajmo, da vam je to navodilo pomagalo pri izboljšanju projekta, ki ste ga imeli v mislih!:) LED diode so dobre za marsikaj….

Priporočena: