Indholdsfortegnelse:

Farvedetektering ved hjælp af RGB LED: 4 trin
Farvedetektering ved hjælp af RGB LED: 4 trin

Video: Farvedetektering ved hjælp af RGB LED: 4 trin

Video: Farvedetektering ved hjælp af RGB LED: 4 trin
Video: Обязательно запомни эту хитрость! Как можно моментально вывести йод с одежды? #shorts 2024, Juli
Anonim
Farvedetektering ved hjælp af RGB LED
Farvedetektering ved hjælp af RGB LED

Har du nogensinde ønsket en automatisk måde at registrere farven på et objekt? Ved at skinne lys med en bestemt farve på objektet og se på, hvor meget lys der reflekteres tilbage, kan du se, hvilken farve objektet er. For eksempel, hvis du skinner et rødt lys på et rødt objekt, vil det lys blive reflekteret tilbage. Hvis du skinner et blåt lys på et rødt objekt, vil objektet absorbere noget af det lys, og mindre af det vil blive reflekteret tilbage.

Trin 1: Nødvendige dele

Nødvendige dele
Nødvendige dele

Jeg brugte en PIC 16F887 mikrokontroller, men næsten enhver med en pulsbredde-moduleringsevne fungerer. 1 RGB LED1 Microcontroller1 Standard rød LED1 1k ohm modstand1 Fotoresistor (ændrer modstand afhængigt af mængden af lys, der lyste på den) Nogle ledningerJeg har kun brug for mikrokontrolleren og RGB LED for at have et bredt udvalg af farvedetektorer, men hvis du kun ønsker et kredsløb, der opdager en farve, du behøver ikke en mikrokontroller - du har kun brug for en lys lysdiode af den farve, du vil registrere. Standard rød LED er "indikator LED" - den lyser, når den rigtige farve registreres.

Trin 2: Byg kredsløbet

Byg kredsløbet
Byg kredsløbet
Byg kredsløbet
Byg kredsløbet

Skematikken er ret enkel og er generelt vist nedenfor. RGB LED'en drives eksternt af et PWM -signal. Jeg lægger elektrisk tape rundt om fotoresistoren, så omgivende lys ikke kommer ind - kun lyset direkte over det vil blive detekteret.

Trin 3: Koden

Denne kode blev skrevet til en Microchip PIC 16F887, men forhåbentlig kan du få den generelle idé. Jeg brugte det indbyggede potentiometer på mit udviklingsbord til at variere farvespektret på RGB LED (og det går ikke igennem hele spektret, fordi jeg ikke har 3 PWM-moduler, men det er godt nok) Kommentarer inkluderet. #include #include #include "delay.c" #include #include #use delay (clock = 4000000) #FUSES INTRC, NOWDT, NOPUT, NOMCLR, NOPROTECT, NOCPD, NOBROWNOUT, NOIESO, NOFCMEN, NOLVP #byte CCP1CON = 0x17 # byte CCP2CON = 0x1D#byte PWM1CON = 0x9Bint værdi = 128; int p1 = 0; int p2 = 0; void my_setup_ccp1 (int8 værdi) {output_low (PIN_C2); CCP1CON = værdi; PWM1CON = 0;} void my_setup_cc2 {output_low (PIN_C1); CCP2CON = værdi;} // ================================================================================= () {// A4 = strømkilde til fotodiodeoutput_high (PIN_A4); output_high (PIN_B1); setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (0); setup_adc_ports (sAN0); // Timer/Interrupt setupenable_interrupts (INT_TIM_2) my_setup_ccp2 (CCP_PWM); setup_timer_2 (T2_DIV_BY_1, 128, 1); // setup_compare (2, COMPARE_PWM | COMPARE_TIMER2); mens (1) {// Forhindre PIC i at gå i dvale.//SET PWM DUTY CYCLE output_high (PIN_A); // Pin A3 er fotodiodeforbindelsen, hvis (input (PIN_A3) == 1) output_high (PIN_A4); ellers output_low (PIN_A4); // Læs værdi af potentiometer for at ændre farve på LED -værdi = read_adc (); switch (værdi) {case 0: p1 = værdi; output_low (PIN_C0); p2 = værdi; pause; sag 50: p1 = værdi; output_high (PIN_C0); p2 = værdi; pause; sag 100: p1 = værdi; output_high (PIN_C0); p2 = værdi; pause; sag 150: output_high (PIN_C0); pl = 50; p2 = værdi; pause; sag 200: output_low (PIN_C0); p1 = 0; p2 = værdi; pause; sag 250: p1 = 0; p2 = værdi; output_low (PIN_C0); pause; } p1 = værdi; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

Trin 4: Ansøgninger

Ansøgninger!
Ansøgninger!

En simpel farvedetektor som denne kan bruges i robotteknologi eller til fede projekter som at adskille legoer efter farve, sortere M & M eller som et hjælpemiddel til farveblindhed. Forhåbentlig var denne instruktive nyttig til at forbedre et projekt, du havde i tankerne!:) LED'er er gode til så mange ting ….

Anbefalede: