فهرست مطالب:

تشخیص رنگ با استفاده از LED RGB: 4 مرحله
تشخیص رنگ با استفاده از LED RGB: 4 مرحله

تصویری: تشخیص رنگ با استفاده از LED RGB: 4 مرحله

تصویری: تشخیص رنگ با استفاده از LED RGB: 4 مرحله
تصویری: چطور نوار RGB برنامه پذیر راه اندازی کنیم؟ [با نوار WS2811 و آردوینو] 2024, جولای
Anonim
تشخیص رنگ با استفاده از LED RGB
تشخیص رنگ با استفاده از LED RGB

آیا تا به حال به دنبال راهی خودکار برای تشخیص رنگ یک شی هستید؟ با تاباندن نور یک رنگ خاص به جسم و مشاهده میزان بازتاب نور به عقب ، می توانید تشخیص دهید که جسم چه رنگی است. به عنوان مثال ، اگر نور قرمز را بر روی یک شیء قرمز بتابانید ، آن نور به عقب منعکس می شود. اگر یک نور آبی را بر روی یک جسم قرمز بتابانید ، جسم مقداری از آن نور را جذب می کند و کمتر از آن به عقب بازتاب می شود.

مرحله 1: قطعات مورد نیاز

قطعات مورد نیاز
قطعات مورد نیاز

من از میکروکنترلر PIC 16F887 استفاده کردم ، اما تقریباً هر دستگاهی با قابلیت تعدیل پالس کار می کند. 1 RGB LED1 میکروکنترلر 1 استاندارد LED قرمز 1k اهم مقاومت 1 Photoresistor (بسته به میزان تابش نور بر روی آن مقاومت را تغییر می دهد) برخی از سیمها من فقط به میکروکنترلر و LED RGB نیاز دارم تا طیف وسیعی از آشکارسازهای رنگی داشته باشند ، اما اگر فقط مدار می خواهید تشخیص یک رنگ ، شما نیازی به میکروکنترلر ندارید - شما فقط به یک LED روشن از رنگی که می خواهید تشخیص دهید نیاز دارید. LED قرمز استاندارد "LED نشانگر" است - با تشخیص رنگ مناسب روشن می شود.

مرحله 2: ساختن مدار

ساختن مدار
ساختن مدار
ساختن مدار
ساختن مدار

طرح کلی نسبتاً ساده است و در شکل کلی ، در زیر نشان داده شده است. LED RGB از خارج توسط یک سیگنال PWM تغذیه می شود. من نوار برقی را در اطراف مقاومت نوری قرار می دهم تا نور محیط وارد نشود - فقط نور مستقیم بالای آن تشخیص داده می شود.

مرحله 3: کد

این کد برای Microchip PIC 16F887 نوشته شده است ، اما امیدوارم بتوانید ایده کلی را بدست آورید. من از پتانسیومتر داخلی روی صفحه توسعه خود برای تغییر طیف رنگی LED RGB استفاده کردم (و چون از 3 ماژول PWM برخوردار نیستم ، اما به اندازه کافی خوب است ، از کل طیف عبور نمی کند). #شامل #شامل #شامل #تاخیر.ج #شامل #شامل #استفاده از تاخیر (ساعت = 4000000) #FUSES INTRC، NOWDT، NOPUT، NOMCLR، NOPROTECT، NOCPD، NOBROWNOUT، NOIESO، NOFCMEN، NOLVP #byte CCP بایت CCP2CON = 0x1D#بایت 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_setup8 {output_low (PIN_C1) ؛ CCP2CON = مقدار ؛} // =================================== خالی اصلی () {// A4 = منبع تغذیه برای photodiodeoutput_high (PIN_A4)؛ خروجی_بالا (PIN_B1)؛ setup_adc (ADC_CLOCK_INTERNAL)؛ set_adc_channel (0)؛ setup_adc_ports (sAN0)؛ // Timer/Interrupt setupenable_interset_Point (Intercunter) my_setup_ccp2 (CCP_PWM) ؛ setup_timer_2 (T2_DIV_BY_1 ، 128 ، 1) ؛ // setup_compare (2 ، COMPARE_PWM | COMPARE_TIMER2) ؛ در حالی که (1) {// از خوابیدن PIC جلوگیری کنید.//SET PWM DUTYY // پین A3 اتصال فتودیود است اگر (ورودی (PIN_A3) == 1) خروجی_بالا (PIN_A4) ؛ else output_low (PIN_A4) ؛ // خواندن مقدار پتانسیومتر برای تغییر رنگ مقدار LED = read_adc () ؛ سوئیچ (مقدار) {case 0: p1 = value؛ خروجی_کم (PIN_C0) ؛ p2 = مقدار ؛ زنگ تفريح؛ مورد 50: p1 = مقدار ؛ خروجی_بالا (PIN_C0) ؛ p2 = مقدار ؛ زنگ تفريح؛ مورد 100: p1 = مقدار ؛ خروجی_بالا (PIN_C0) ؛ p2 = مقدار ؛ زنگ تفريح؛ مورد 150: خروجی_بالا (PIN_C0) ؛ p1 = 50 ؛ p2 = مقدار ؛ زنگ تفريح؛ مورد 200: output_low (PIN_C0) ؛ p1 = 0 ؛ p2 = مقدار ؛ زنگ تفريح؛ مورد 250: p1 = 0؛ p2 = مقدار ؛ خروجی_کم (PIN_C0) ؛ زنگ تفريح؛ } p1 = مقدار ؛ p2 = 128 - p1 ؛ set_pwm1_duty (p1)؛ set_pwm2_duty (p2)؛}}

مرحله 4: برنامه ها

برنامه های کاربردی!
برنامه های کاربردی!

از یک آشکارساز رنگ ساده مانند این می توان در رباتیک یا برای پروژه های جالب مانند جداسازی لگوها با رنگ ، مرتب سازی M & M یا به عنوان کمکی برای کوررنگی استفاده کرد. امیدوارم این دستورالعمل در ارتقاء پروژه ای که در ذهن داشتید مفید بوده باشد!:) LED ها برای خیلی چیزها خوب هستند….

توصیه شده: