Tartalomjegyzék:

Színészlelés az RGB LED használatával: 4 lépés
Színészlelés az RGB LED használatával: 4 lépés
Anonim
Színészlelés az RGB LED segítségével
Színészlelés az RGB LED segítségével

Szerettél volna valaha automatizált módon felismerni egy tárgy színét? Ha egy adott színű fényt rávilágít a tárgyra, és megnézi, mennyi fény tükröződik vissza, akkor meg tudja határozni, hogy milyen színű az objektum. Például, ha vörös fényt világít egy vörös tárgyra, akkor ez a fény visszaverődik. Ha kék fényt világít egy vörös tárgyra, a tárgy elnyeli a fény egy részét, és kevesebbet visszavert.

1. lépés: Szükséges alkatrészek

Szükséges alkatrészek
Szükséges alkatrészek

PIC 16F887 mikrokontrollert használtam, de szinte minden, amely impulzusszélesség-modulációs képességgel rendelkezik, működni fog. 1 RGB LED1 mikrokontroller1 normál piros LED1 1k ohmos ellenállás1 fotorezisztor (az ellenállást a rávilágított fény mennyiségétől függően változtatja meg) Egyes vezetékek egy színt észlel, nincs szüksége mikrokontrollerre - csak az érzékelni kívánt színű fényes LED -re van szüksége. A szabványos piros LED az "indikátor LED" - akkor világít, ha a megfelelő színt észleli.

2. lépés: Építse fel az áramkört

Építsd meg az áramkört
Építsd meg az áramkört
Építsd meg az áramkört
Építsd meg az áramkört

A vázlat meglehetősen egyszerű, és általános formában az alábbiakban látható. Az RGB LED külső tápellátását PWM jel táplálja. Elektromos szalagot helyezek a fotorezisztor köré, hogy a környezeti fény ne kerüljön be - csak a közvetlenül felette lévő fényt fogja észlelni.

3. lépés: A kód

Ezt a kódot egy Microchip PIC 16F887 -hez írták, de remélhetőleg megkapja az általános ötletet. A beépített potenciométert használtam a fejlesztőlapomon az RGB LED színspektrumának variálására (és nem megy át a teljes spektrumon, mert nincs 3 PWM modulom, de elég jó). #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 bájt CCP2CON = 0x1D#bájt PWM1CON = 0x9Bint érték = 128; int p1 = 0; int p2 = 0; void my_setup_ccp1 (int8 érték) {output_low (PIN_C2); CCP1CON = érték; PWM1CON = 0;} void my_setup_ccp) {output_low (PIN_C1); CCP2CON = érték;} // =================================== void main () {// A4 = tápforrás fotodióda -kimenet_magas (PIN_A4); output_high (PIN_B1); setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (0); setup_adc_ports (sAN0); // Időzítő/megszakítás setupenable_interrupts_PP my_setup_ccp2 (CCP_PWM); setup_timer_2 (T2_DIV_BY_1, 128, 1); // setup_compare (2, COMPARE_PWM | COMPARE_TIMER2); while (1) {// Megakadályozza, hogy a PIC elaludjon.//SET PWM DUTY CYCLE output_5; // Az A3 érintkező a fotodióda kapcsolat, ha (bemenet (PIN_A3) == 1) output_high (PIN_A4); else output_low (PIN_A4); // Olvassa el a potenciométer értékét a LED színének megváltoztatásához = read_adc (); kapcsoló (érték) {eset 0: p1 = érték; output_low (PIN_C0); p2 = érték; szünet; 50. eset: p1 = érték; output_high (PIN_C0); p2 = érték; szünet; 100. eset: p1 = érték; output_high (PIN_C0); p2 = érték; szünet; 150. eset: output_high (PIN_C0); p1 = 50; p2 = érték; szünet; 200. eset: output_low (PIN_C0); p1 = 0; p2 = érték; szünet; 250. eset: p1 = 0; p2 = érték; output_low (PIN_C0); szünet; } p1 = érték; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

4. lépés: Alkalmazások

Alkalmazások!
Alkalmazások!

Egy ilyen egyszerű színérzékelő használható a robotikában, vagy olyan hűvös projektekben, mint a legók szín szerinti elkülönítése, az M & M -ek válogatása, vagy a színvakság segítőjeként. Remélhetőleg ez az oktatóanyag hasznos volt az Ön által tervezett projekt fejlesztésében!:) A LED -ek sok mindenre jók….

Ajánlott: