Sisällysluettelo:

Värin tunnistus RGB -LED -valolla: 4 vaihetta
Värin tunnistus RGB -LED -valolla: 4 vaihetta

Video: Värin tunnistus RGB -LED -valolla: 4 vaihetta

Video: Värin tunnistus RGB -LED -valolla: 4 vaihetta
Video: КАК НАСТРОИТЬ L4D2 2024, Heinäkuu
Anonim
Värin tunnistus RGB -LEDillä
Värin tunnistus RGB -LEDillä

Oletko koskaan halunnut automaattisen tavan havaita esineen väri? Loistamalla tietyn värin valoa esineeseen ja katsomalla kuinka paljon valoa heijastuu takaisin, voit kertoa, minkä värinen kohde on. Jos esimerkiksi sytytät punaisen valon punaiseen esineeseen, se heijastuu takaisin. Jos loistat sinistä valoa punaiseen esineeseen, esine absorboi osan valosta ja vähemmän heijastuu takaisin.

Vaihe 1: Tarvittavat osat

Tarvittavat osat
Tarvittavat osat

Käytin PIC 16F887 -mikro-ohjainta, mutta melkein kaikki, joilla on pulssileveysmodulaatiokyky, toimivat. 1 RGB -LED1 Mikro -ohjain1 Vakio punainen LED1 1k ohmin vastus1 Valovastus (muuttaa vastusta riippuen siitä, kuinka paljon valoa siinä loistaa) Jotkut johdot Tarvitsen vain mikro -ohjaimen ja RGB -LEDin, jotta niissä olisi laaja valikoima värinilmaisimia, mutta jos haluat vain piirin, joka tunnistaa yhden värin, et tarvitse mikrokontrolleria - tarvitset vain kirkkaan LEDin sen värin kohdalla, jonka haluat havaita. Vakio punainen LED on "merkkivalo" - se syttyy, kun oikea väri havaitaan.

Vaihe 2: Rakenna piiri

Rakenna piiri
Rakenna piiri
Rakenna piiri
Rakenna piiri

Kaavio on melko yksinkertainen, ja yleisessä muodossa, on esitetty alla. RGB -LED saa ulkoisen virtalähteen PWM -signaalista. Laitan sähköteipin valoresistorin ympärille, jotta ympäristön valo ei pääse sisään - vain suoraan sen yläpuolella oleva valo havaitaan.

Vaihe 3: Koodi

Tämä koodi on kirjoitettu mikrosiru PIC 16F887: lle, mutta toivottavasti saat yleisen käsityksen. Käytin kehityskorttini sisäänrakennettua potentiometriä RGB-LEDin värispektrin vaihtamiseksi (eikä se mene läpi koko spektrin, koska minulla ei ole 3 PWM-moduulia, mutta se on tarpeeksi hyvä) Kommentit mukana. #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 tavu CCP2CON = 0x1D#tavu PWM1CON = 0x9Bint -arvo = 128; int p1 = 0; int p2 = 0; void my_setup_ccp1 (int8 -arvo) {output_low (PIN_C2); CCP1CON = arvo; PWM1CON = 0;} void my_setup_ccp) {output_low (PIN_C1); CCP2CON = arvo;} // =================================== void main () {// A4 = valonlähteen ulostulokorkeus (PIN_A4); output_high (PIN_B1); setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (0); setup_adc_ports (sAN0); // Ajastin/keskeytys setupenable_interrupts (INP) my_setup_ccp2 (CCP_PWM); setup_timer_2 (T2_DIV_BY_1, 128, 1); // setup_compare (2, COMPARE_PWM | COMPARE_TIMER2); while (1) {// Estä PIC: n nukkuminen. // Nasta A3 on fotodiodiyhteys, jos (input (PIN_A3) == 1) output_high (PIN_A4); else output_low (PIN_A4); // Lue potentiometrin arvo muuttaaksesi LED -arvon väriä = read_adc (); kytkin (arvo) {tapaus 0: p1 = arvo; output_low (PIN_C0); p2 = arvo; tauko; tapaus 50: p1 = arvo; output_high (PIN_C0); p2 = arvo; tauko; tapaus 100: p1 = arvo; output_high (PIN_C0); p2 = arvo; tauko; tapaus 150: output_high (PIN_C0); p1 = 50; p2 = arvo; tauko; tapaus 200: output_low (PIN_C0); p1 = 0; p2 = arvo; tauko; tapaus 250: p1 = 0; p2 = arvo; output_low (PIN_C0); tauko; } p1 = arvo; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

Vaihe 4: Sovellukset

Sovellukset!
Sovellukset!

Tällaista yksinkertaista värinilmaisinta voidaan käyttää robotiikassa tai viileissä projekteissa, kuten legojen erottamisessa värin mukaan, M & M -lajittelussa tai värisokeuden apuna. Toivottavasti tästä ohjeesta oli apua parantamassa ajateltavaa projektia!:) LEDit ovat hyviä moniin asioihin….

Suositeltava: