Índice:

Detecção de cores usando RGB LED: 4 etapas
Detecção de cores usando RGB LED: 4 etapas

Vídeo: Detecção de cores usando RGB LED: 4 etapas

Vídeo: Detecção de cores usando RGB LED: 4 etapas
Vídeo: Sensor de Cores e LED RGB 2024, Novembro
Anonim
Detecção de cores usando LED RGB
Detecção de cores usando LED RGB

Você sempre quis uma maneira automatizada de detectar a cor de um objeto? Ao iluminar o objeto com luz de uma determinada cor e observar quanta luz é refletida de volta, você pode dizer de que cor o objeto é. Por exemplo, se você iluminar um objeto vermelho com uma luz vermelha, essa luz será refletida de volta. Se você iluminar um objeto vermelho com uma luz azul, o objeto irá absorver parte dessa luz e menos dela será refletida de volta.

Etapa 1: peças necessárias

Peças necessárias
Peças necessárias

Eu usei um microcontrolador PIC 16F887, mas quase qualquer um com capacidade de modulação por largura de pulso funcionará. 1 RGB LED1 Microcontrolador1 LED vermelho padrão1 1k ohm resistor1 Fotoresistor (muda a resistência dependendo da quantidade de luz que brilha) Alguns fios, eu só preciso do microcontrolador e do LED RGB para ter uma ampla gama de detectores de cores, mas se você quiser apenas um circuito que detecta uma cor, você não precisa de um microcontrolador - você só precisa de um LED brilhante da cor que deseja detectar. O LED vermelho padrão é o "LED indicador" - ele acende quando a cor certa é detectada.

Etapa 2: construir o circuito

Construa o Circuito
Construa o Circuito
Construa o Circuito
Construa o Circuito

O esquema é bastante simples e, de forma geral, é mostrado abaixo. O LED RGB é alimentado externamente por um sinal PWM. Eu coloquei fita isolante ao redor do fotorresistor para que a luz ambiente não entre - apenas a luz diretamente acima dele será detectada.

Etapa 3: O Código

Este código foi escrito para um Microchip PIC 16F887, mas espero que você possa ter uma idéia geral. Usei o potenciômetro embutido na minha placa de desenvolvimento para variar o espectro de cores do LED RGB (e ele não passa por todo o espectro porque não tenho 3 módulos PWM, mas é bom o suficiente). Comentários incluídos. #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 value = 128; int p1 = 0; int p2 = 0; void my_setup_ccp1 (int8 value) {output_low (PIN_C2); CCP1CON = value; PWM1CON = 0;} void my_setup_ccp2 (int8 value) {output_low (PIN_C1); CCP2CON = value;} // ======================================= void main () {// A4 = fonte de alimentação para photodiodeoutput_high (PIN_A4); output_high (PIN_B1); setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (0); setup_adc_ports (sAN0); // Timer / Interrupção setupenable_interrupts_TIP2 (CCP2); my_setup_ccp2 (CCP_PWM); setup_timer_2 (T2_DIV_BY_1, 128, 1); // setup_compare (2, COMPARE_PWM | COMPARE_TIMER2); while (1) {// Evita que o PIC entre no modo de hibernação.//SET PWM DUTY CYCLE output_high (PIN_A5) // Pino A3 é a conexão do fotodiodo if (input (PIN_A3) == 1) output_high (PIN_A4); else output_low (PIN_A4); // Lê o valor do potenciômetro para mudar a cor do LED value = read_adc (); switch (valor) {caso 0: p1 = valor; output_low (PIN_C0); p2 = valor; pausa; caso 50: p1 = valor; output_high (PIN_C0); p2 = valor; pausa; caso 100: p1 = valor; output_high (PIN_C0); p2 = valor; pausa; case 150: output_high (PIN_C0); p1 = 50; p2 = valor; pausa; caso 200: output_low (PIN_C0); p1 = 0; p2 = valor; pausa; caso 250: p1 = 0; p2 = valor; output_low (PIN_C0); pausa; } p1 = valor; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

Etapa 4: Aplicativos

Formulários!
Formulários!

Um detector de cores simples como este pode ser usado em robótica ou para projetos interessantes, como separar legos por cor, classificar M & Ms ou como auxílio para daltonismo. Esperançosamente, este instrutível foi útil para aprimorar um projeto que você tinha em mente!:) LEDs são bons para tantas coisas….

Recomendado: