Innehållsförteckning:

Färgdetektering med RGB LED: 4 steg
Färgdetektering med RGB LED: 4 steg

Video: Färgdetektering med RGB LED: 4 steg

Video: Färgdetektering med RGB LED: 4 steg
Video: Anil Seth: Neurovetenskap om medvetande och jag 2024, Juli
Anonim
Färgdetektering med RGB LED
Färgdetektering med RGB LED

Har du någonsin velat ha ett automatiserat sätt att upptäcka färgen på ett objekt? Genom att lysa med en viss färg på objektet och titta på hur mycket ljus som reflekteras tillbaka kan du se vilken färg objektet har. Till exempel, om du lyser ett rött ljus på ett rött föremål, reflekteras det ljuset tillbaka. Om du lyser ett blått ljus på ett rött föremål, kommer objektet att absorbera en del av det ljuset och mindre av det kommer att reflekteras tillbaka.

Steg 1: Delar som behövs

Delar som behövs
Delar som behövs

Jag använde en PIC 16F887 mikrokontroller, men nästan alla med pulsbreddsmodulering fungerar. 1 RGB LED1 Microcontroller1 Standard röd LED1 1k ohm motstånd 1 Fotoresistor (ändrar motstånd beroende på mängden ljus som sken på den) Vissa ledningar Jag behöver bara mikrokontrollern och RGB LED för att ha ett brett utbud av färgdetektorer, men om du bara vill ha en krets som upptäcker en färg, du behöver inte en mikrokontroller - du behöver bara en ljus lysdiod för den färg du vill upptäcka. Den vanliga röda lysdioden är "indikator -LED" - den tänds när rätt färg upptäcks.

Steg 2: Bygg kretsen

Bygg kretsen
Bygg kretsen
Bygg kretsen
Bygg kretsen

Schemat är ganska enkelt och i allmän form visas nedan. RGB -lysdioden drivs externt av en PWM -signal. Jag sätter elektrisk tejp runt fotoresistorn så att omgivande ljus inte kommer in - bara ljuset direkt ovanför det detekteras.

Steg 3: Koden

Denna kod skrevs för en Microchip PIC 16F887, men förhoppningsvis kan du få den allmänna idén. Jag använde den inbyggda potentiometern på min utvecklingskort för att variera färgspektrumet på RGB-lysdioden (och det går inte igenom hela spektrumet eftersom jag inte har 3 PWM-moduler, men det är tillräckligt bra) Kommentarer ingår. #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ärde = 128; int p1 = 0; int p2 = 0; void my_setup_ccp1 (int8 värde) {output_low (PIN_C2); CCP1CON = värde; PWM1CON = 0;} void my_setup_cc2 {output_low (PIN_C1); CCP2CON = värde;} // ==================================== () {// A4 = strömkälla för 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_TIM_2;) my_setup_ccp2 (CCP_PWM); setup_timer_2 (T2_DIV_BY_1, 128, 1); // setup_compare (2, COMPARE_PWM | COMPARE_TIMER2); medan (1) {// Förhindra PIC från att somna.//SET PWM DUTY CYCLE output_high (PIN_5;) // Pin A3 är fotodiodanslutningen om (input (PIN_A3) == 1) output_high (PIN_A4); annars output_low (PIN_A4); // Läs värde av potentiometer för att ändra färg på LED -värde = read_adc (); switch (värde) {case 0: p1 = värde; output_low (PIN_C0); p2 = värde; ha sönder; fall 50: p1 = värde; output_high (PIN_C0); p2 = värde; ha sönder; fall 100: p1 = värde; output_high (PIN_C0); p2 = värde; ha sönder; fall 150: output_high (PIN_C0); pl = 50; p2 = värde; ha sönder; fall 200: output_low (PIN_C0); pl = 0; p2 = värde; ha sönder; fall 250: p1 = 0; p2 = värde; output_low (PIN_C0); ha sönder; } p1 = värde; p2 = 128 - pl; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

Steg 4: Ansökningar

Ansökningar!
Ansökningar!

En enkel färgdetektor som denna kan användas i robotik eller för coola projekt som att skilja legos efter färg, sortera M & M eller som ett hjälpmedel för färgblindhet. Förhoppningsvis var detta instruerbart till hjälp för att förbättra ett projekt du hade i åtanke!:) Lysdioder är bra för så många saker….

Rekommenderad: