Obsah:

Detekce barev pomocí RGB LED: 4 kroky
Detekce barev pomocí RGB LED: 4 kroky

Video: Detekce barev pomocí RGB LED: 4 kroky

Video: Detekce barev pomocí RGB LED: 4 kroky
Video: ovládání RGB Led pásku pomocí wifi 2024, Červenec
Anonim
Detekce barev pomocí RGB LED
Detekce barev pomocí RGB LED

Chtěli jste někdy automatizovaný způsob detekce barvy předmětu? Zářící světlo určité barvy na předmět a pohled na to, kolik světla se odráží zpět, můžete zjistit, jakou barvu má předmět. Pokud například na červený předmět posvítíte červeným světlem, bude se toto světlo odrážet zpět. Pokud na červený předmět posvítíte modrým světlem, předmět část tohoto světla pohltí a méně se odrazí zpět.

Krok 1: Potřebné součásti

Potřebné díly
Potřebné díly

Použil jsem mikrokontrolér PIC 16F887, ale téměř jakýkoli s možností modulace šířky pulzu bude fungovat. 2 RGB LED detekuje jednu barvu, nepotřebujete mikrokontrolér - potřebujete pouze jasnou LED barvu, kterou chcete detekovat. Standardní červená LED je „indikační LED“- rozsvítí se, když je detekována správná barva.

Krok 2: Vybudujte obvod

Vybudujte obvod
Vybudujte obvod
Vybudujte obvod
Vybudujte obvod

Schéma je poměrně jednoduché a v obecné formě je uvedeno níže. RGB LED je externě napájena signálem PWM. Okolo fotorezistoru jsem umístil elektrickou pásku, aby se dovnitř nedostalo okolní světlo - bude detekováno pouze světlo přímo nad ním.

Krok 3: Kód

Tento kód byl napsán pro Microchip PIC 16F887, ale doufejme, že získáte obecnou představu. Vestavěný potenciometr na mé vývojové desce měnil barevné spektrum RGB LED (a neprochází celým spektrem, protože nemám 3 PWM moduly, ale je to dost dobré) Včetně komentářů. #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 hodnota = 128; int p1 = 0; int p2 = 0; neplatné my_setup_ccp1 (hodnota int8) {output_low (PIN_C2); CCP1CON = hodnota; PWM1CON = 0;} neplatná moje_setup_ccp2 {output_low (PIN_C1); CCP2CON = hodnota;} // =================================================== () {// A4 = zdroj energie pro 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 (INT_TIM2) my_setup_ccp2 (CCP_PWM); setup_timer_2 (T2_DIV_BY_1, 128, 1); // setup_compare (2, COMPARE_PWM | COMPARE_TIMER2); while (1) {// Zabránění přechodu PIC do režimu spánku. //SET PWM DUTY CYCLE output_high (PIN) // Pin A3 je připojení fotodiody if (vstup (PIN_A3) == 1) output_high (PIN_A4); else output_low (PIN_A4); // Načtení hodnoty potenciometru pro změnu barvy hodnoty LED = read_adc (); přepínač (hodnota) {případ 0: p1 = hodnota; output_low (PIN_C0); p2 = hodnota; přestávka; případ 50: p1 = hodnota; output_high (PIN_C0); p2 = hodnota; přestávka; případ 100: p1 = hodnota; output_high (PIN_C0); p2 = hodnota; přestávka; případ 150: output_high (PIN_C0); p1 = 50; p2 = hodnota; přestávka; případ 200: output_low (PIN_C0); p1 = 0; p2 = hodnota; přestávka; případ 250: p1 = 0; p2 = hodnota; output_low (PIN_C0); přestávka; } p1 = hodnota; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

Krok 4: Aplikace

Aplikace!
Aplikace!

Jednoduchý detektor barev, jako je tento, lze použít v robotice nebo pro skvělé projekty, jako je oddělování lega podle barev, třídění M & M nebo jako pomůcka pro barvoslepost. Naštěstí tento návod pomohl vylepšit projekt, který jste měli na mysli!:) LED diody jsou dobré pro tolik věcí….

Doporučuje: