Turinys:

Spalvų aptikimas naudojant RGB šviesos diodą: 4 žingsniai
Spalvų aptikimas naudojant RGB šviesos diodą: 4 žingsniai

Video: Spalvų aptikimas naudojant RGB šviesos diodą: 4 žingsniai

Video: Spalvų aptikimas naudojant RGB šviesos diodą: 4 žingsniai
Video: LED juostų naudojimas interjere: RGB ir paprastos baltos spalvos variantai. 2024, Liepa
Anonim
Spalvų aptikimas naudojant RGB LED
Spalvų aptikimas naudojant RGB LED

Ar kada nors norėjote automatinio būdo aptikti objekto spalvą? Šviesdami tam tikros spalvos šviesą ant objekto ir žiūrėdami, kiek šviesos atsispindi atgal, galite pasakyti, kokios spalvos objektas yra. Pavyzdžiui, jei raudoną šviesą apšviesite raudoną objektą, ši šviesa atsispindės atgal. Jei raudoną objektą apšviesite mėlyna šviesa, objektas sugers dalį šios šviesos ir mažiau jos atsispindės.

1 žingsnis: reikalingos dalys

Reikalingos dalys
Reikalingos dalys

Aš naudojau PIC 16F887 mikrovaldiklį, tačiau beveik visi, turintys impulsų pločio moduliavimo galimybę, veiks. 1 RGB šviesos diodas1 mikrokontroleris1 standartinis raudonas šviesos diodas1 1 k ohm rezistorius aptinka vieną spalvą, jums nereikia mikrovaldiklio - jums reikia tik ryškios norimos aptikti spalvos šviesos diodo. Standartinis raudonas šviesos diodas yra „indikatorius“- jis užsidega, kai aptinkama tinkama spalva.

2 žingsnis: sukurkite grandinę

Sukurkite grandinę
Sukurkite grandinę
Sukurkite grandinę
Sukurkite grandinę

Schema yra gana paprasta ir paprastai pateikiama žemiau. RGB šviesos diodas iš išorės maitinamas PWM signalu. Aplink fotorezistorių uždėjau elektros juostą, kad nepatektų aplinkos šviesa - bus aptikta tik tiesiai virš jos esanti šviesa.

3 žingsnis: Kodas

Šis kodas buvo parašytas „Microchip PIC 16F887“, bet tikiuosi, kad jūs suprasite bendrą idėją. Naudojau integruotą potenciometrą savo kūrimo plokštėje, kad pakeisčiau RGB šviesos diodų spalvų spektrą (ir jis neapima viso spektro, nes neturiu 3 PWM modulių, bet tai pakankamai gerai). #include #include #include "delay.c" #include #include #use delay (laikrodis = 4000000) #FUSES INTRC, NOWDT, NOPUT, NOMCLR, NOPROTECT, NOCPD, NOBROWNOUT, NOIESO, NOFCMEN, NOLVP #baitas CCP1CON = 0x17 baitas CCP2CON = 0x1D#baitas PWM1CON = 0x9Bint reikšmė = 128; int p1 = 0; int p2 = 0; void my_setup_ccp1 (int8 vertė) {output_low (PIN_C2); CCP1CON = vertė; PWM1CON = 0;} void my_setup_cc2) {output_low (PIN_C1); CCP2CON = vertė;} // =================================== void main () {// A4 = fotodiodo išvesties_aukštojo maitinimo šaltinis (PIN_A4); output_high (PIN_B1); setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (0); setup_adc_ports (sAN0); // Laikmatis/pertraukimo sąranka_įtraukta_įvesties_įvestinė my_setup_ccp2 (CCP_PWM); setup_timer_2 (T2_DIV_BY_1, 128, 1); // setup_compare (2, COMPARE_PWM | COMPARE_TIMER2); o (1) {// Neleisti PIC užmigti. // A3 kaištis yra fotodiodinis ryšys, jei (įvestis (PIN_A3) == 1) output_high (PIN_A4); else output_low (PIN_A4); // Skaitykite potenciometro reikšmę, kad pakeistumėte LED vertės spalvą = read_adc (); jungiklis (vertė) {atvejis 0: p1 = vertė; output_low (PIN_C0); p2 = vertė; pertrauka; 50 atvejis: p1 = vertė; output_high (PIN_C0); p2 = vertė; pertrauka; 100 atvejis: p1 = vertė; output_high (PIN_C0); p2 = vertė; pertrauka; atvejis 150: output_high (PIN_C0); p1 = 50; p2 = vertė; pertrauka; atvejis 200: output_low (PIN_C0); p1 = 0; p2 = vertė; pertrauka; 250 atvejis: p1 = 0; p2 = vertė; output_low (PIN_C0); pertrauka; } p1 = vertė; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

4 žingsnis: programos

Programos!
Programos!

Tokį paprastą spalvų detektorių galima naudoti robotikoje arba šauniuose projektuose, pvz., Atskiriant „lego“pagal spalvą, rūšiuojant „M & M“arba kaip pagalbą aklumui. Tikimės, kad ši pamoka padėjo patobulinti jūsų turimą projektą!:) Šviesos diodai tinka daugeliui dalykų….

Rekomenduojamas: