สารบัญ:

การตรวจจับสีโดยใช้ RGB LED: 4 ขั้นตอน
การตรวจจับสีโดยใช้ RGB LED: 4 ขั้นตอน

วีดีโอ: การตรวจจับสีโดยใช้ RGB LED: 4 ขั้นตอน

วีดีโอ: การตรวจจับสีโดยใช้ RGB LED: 4 ขั้นตอน
วีดีโอ: RGB Color Sensor Color Detection ตรวจจับสี เเสดงผ่าน LCD ด้วย RGB Color Sensor LCD (Arduino EP.32) 2024, กรกฎาคม
Anonim
การตรวจจับสีโดยใช้ RGB LED
การตรวจจับสีโดยใช้ RGB LED

คุณเคยต้องการวิธีอัตโนมัติในการตรวจจับสีของวัตถุหรือไม่? เมื่อส่องแสงสีบางสีบนวัตถุและดูว่าแสงสะท้อนกลับมามากน้อยเพียงใด คุณจะสามารถบอกได้ว่าวัตถุนั้นเป็นสีอะไร ตัวอย่างเช่น หากคุณส่องแสงสีแดงบนวัตถุสีแดง แสงนั้นจะถูกสะท้อนกลับ หากคุณฉายแสงสีน้ำเงินบนวัตถุสีแดง วัตถุนั้นจะดูดซับแสงนั้นบางส่วนและจะสะท้อนกลับน้อยลง

ขั้นตอนที่ 1: อะไหล่ที่จำเป็น

อะไหล่ที่จำเป็น
อะไหล่ที่จำเป็น

ฉันใช้ไมโครคอนโทรลเลอร์ PIC 16F887 แต่แทบทุกชนิดที่มีความสามารถในการมอดูเลตความกว้างพัลส์ก็ใช้ได้ 1 RGB LED1 ไมโครคอนโทรลเลอร์ 1 LED สีแดงมาตรฐาน 1 ตัวต้านทานโอห์ม 1k ตัวต้านทาน 1 โฟโตรีซีสเตอร์ (ความต้านทานจะเปลี่ยนไปตามปริมาณของแสงที่ส่อง) สายไฟบางเส้นฉันต้องการเพียงไมโครคอนโทรลเลอร์และ RGB LED เพื่อให้มีเครื่องตรวจจับสีได้หลากหลาย แต่ถ้าคุณต้องการเพียงวงจรที่ ตรวจจับสีได้เพียงสีเดียว คุณไม่จำเป็นต้องมีไมโครคอนโทรลเลอร์ คุณเพียงต้องการไฟ LED สว่างของสีที่คุณต้องการตรวจจับเท่านั้น ไฟ LED สีแดงมาตรฐานคือ "ไฟ LED แสดงสถานะ" ซึ่งจะสว่างขึ้นเมื่อตรวจพบสีที่ถูกต้อง

ขั้นตอนที่ 2: สร้างวงจร

สร้างวงจร
สร้างวงจร
สร้างวงจร
สร้างวงจร

แผนผังค่อนข้างเรียบง่ายและโดยทั่วไปจะแสดงอยู่ด้านล่าง RGB LED ใช้พลังงานจากภายนอกโดยสัญญาณ PWM ฉันติดเทปพันสายไฟไว้รอบๆ โฟโตรีซีสเตอร์เพื่อไม่ให้แสงรอบข้างเข้ามา - เฉพาะแสงที่อยู่ด้านบนเท่านั้นที่จะตรวจจับได้

ขั้นตอนที่ 3: รหัส

รหัสนี้เขียนขึ้นสำหรับ Microchip PIC 16F887 แต่หวังว่าคุณจะได้แนวคิดทั่วไป ฉันใช้โพเทนชิออมิเตอร์ในตัวบนบอร์ดพัฒนาของฉันเพื่อเปลี่ยนสเปกตรัมสีของไฟ LED RGB (และมันไม่ผ่านสเปกตรัมทั้งหมดเพราะฉันไม่มีโมดูล PWM 3 โมดูล แต่ก็ดีพอ) รวมความคิดเห็น #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# ไบต์ CCP2CON = 0x1D#ไบต์ PWM1CON = 0x9Bint value = 128;int p1 = 0;int p2 = 0;void my_setup_ccp1(int8){output_low(PIN_C2);CCP1CON = value;PWM1CON = 0;}void my_setup_ccp2(int8) {output_low(PIN_C1);CCP2CON = value;}//=================================== เป็นโมฆะหลัก (){//A4 = แหล่งพลังงานสำหรับ 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(INTM_TIMER_P_P_1);my my_setup_ccp2(CCP_PWM);setup_timer_2(T2_DIV_BY_1, 128, 1);//setup_compare(2, COMPARE_PWM|COMPARE_TIMER2);while(1){ // ป้องกันไม่ให้ PIC เข้าสู่โหมดสลีป // SET PWM DUTY CYCLE output_high (PIN_A5); //ขา A3 คือการเชื่อมต่อโฟโตไดโอด if(input(PIN_A3) == 1) output_high(PIN_A4); อื่น output_low(PIN_A4); // อ่านค่าของโพเทนชิออมิเตอร์เพื่อเปลี่ยนสีของค่า LED = read_adc(); สวิตช์ (ค่า) { กรณี 0: p1 = ค่า; output_low(PIN_C0); p2 = ค่า; หยุดพัก; กรณีที่ 50: p1 = ค่า; output_high(PIN_C0); p2 = ค่า; หยุดพัก; กรณีที่ 100: p1 = ค่า; output_high(PIN_C0); p2 = ค่า; หยุดพัก; กรณีที่ 150: output_high(PIN_C0); p1 = 50; p2 = ค่า; หยุดพัก; กรณีที่ 200: output_low(PIN_C0); p1 = 0; p2 = ค่า; หยุดพัก; กรณี 250: p1 = 0; p2 = ค่า; output_low(PIN_C0); หยุดพัก; } p1 = ค่า; p2 = 128 - p1; set_pwm1_duty(p1); set_pwm2_duty(p2);}}

ขั้นตอนที่ 4: การสมัคร

แอปพลิเคชั่น!
แอปพลิเคชั่น!

เครื่องตรวจจับสีแบบธรรมดาเช่นนี้สามารถใช้กับหุ่นยนต์ หรือสำหรับโครงการเจ๋งๆ เช่น การแยกเลโก้ตามสี การจัดเรียง M&M หรือช่วยตาบอดสี หวังว่าคำแนะนำนี้จะเป็นประโยชน์ในการปรับปรุงโครงการที่คุณมีอยู่ในใจ!:) ไฟ LED นั้นดีสำหรับหลาย ๆ อย่าง….

แนะนำ: