תוכן עניינים:

זיהוי צבעים באמצעות LED RGB: 4 שלבים
זיהוי צבעים באמצעות LED RGB: 4 שלבים

וִידֵאוֹ: זיהוי צבעים באמצעות LED RGB: 4 שלבים

וִידֵאוֹ: זיהוי צבעים באמצעות LED RGB: 4 שלבים
וִידֵאוֹ: דיודה RGB LED קלטת BIOM + לבן LED Premium סקירה וחיבור 2024, יולי
Anonim
זיהוי צבעים באמצעות LED RGB
זיהוי צבעים באמצעות LED RGB

האם אי פעם רצית דרך אוטומטית לזהות את הצבע של אובייקט? על ידי הארת אור של צבע מסוים על האובייקט והתבוננות בכמה אור מוחזר לאחור, אתה יכול לדעת באיזה צבע האובייקט. לדוגמה, אם אתה מאיר אור אדום על אובייקט אדום, האור הזה יוחזר לאחור. אם אתה מאיר אור כחול על אובייקט אדום, האובייקט יספוג חלק מהאור הזה ופחות ממנו יוחזר לאחור.

שלב 1: יש צורך בחלקים

דרושים חלקים
דרושים חלקים

השתמשתי במיקרו-בקר PIC 16F887, אך כמעט כל בעל יכולת אפנון רוחב-דופק יעבוד. 1 RGB LED 1 מיקרו בקר 1 LED אדום סטנדרטי 1 נגד אוהם 1k 1 פוטורסיסטור (משנה התנגדות בהתאם לכמות האור שזרקה עליו) כמה חוטים אני צריך רק את המיקרו -בקר ואת ה- RGB LED כדי לקבל מגוון רחב של גלאי צבע, אבל אם אתה רק רוצה מעגל זה מזהה צבע אחד, אתה לא צריך מיקרו -בקר - אתה צריך רק LED בהיר של הצבע שאתה רוצה לזהות. הנורית האדומה הסטנדרטית היא "נורית החיווי" - היא נדלקת כאשר מתגלה הצבע הנכון.

שלב 2: בנה את המעגל

בנה את המעגל
בנה את המעגל
בנה את המעגל
בנה את המעגל

הסכימה פשוטה למדי, ובאופן כללי מוצגת להלן. נורית ה- RGB מופעלת חיצונית באמצעות אות PWM. שמתי קלטת חשמל מסביב לפוטורזיסטור כך שאור הסביבה לא ייכנס - רק האור ישירות מעליו יזוהה.

שלב 3: הקוד

הקוד הזה נכתב עבור מיקרו -שבב PIC 16F887, אך אני מקווה שתוכל לקבל את הרעיון הכללי. השתמשתי בפוטנטיומטר המובנה בלוח הפיתוח שלי כדי לשנות את ספקטרום הצבעים של ה- RGB LED (וזה לא עובר את כל הספקטרום כי אין לי 3 מודולי PWM, אבל זה מספיק טוב) הערות כלולות. #include #include #include "delay.c" #include #include #use עיכוב (שעון = 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 value) {output_low (PIN_C2); CCP1CON = value; PWM1CON = 0;} void my_setup_ccp {output_low (PIN_C1); CCP2CON = ערך;} // =================================== void main () {// A4 = מקור חשמל לפלט דיודיו_פלט (PIN_A4); פלט_גבוה (PIN_B1); setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (0); setup_adc_ports (sAN0); // Timer/Interrupt setupenable_interrupts (INT_TIMER); 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 DUTY CYCLE output_high (PIN_5;) // סיכה A3 היא חיבור הפוטודיודה אם (קלט (PIN_A3) == 1) פלט_גבוה (PIN_A4); אחרת output_low (PIN_A4); // קריאת ערך פוטנציומטר לשינוי צבע ערך LED = read_adc (); מתג (ערך) {מקרה 0: p1 = ערך; output_low (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 = ערך; output_low (PIN_C0); לשבור; } p1 = ערך; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

שלב 4: יישומים

יישומים!
יישומים!

גלאי צבע פשוט כזה יכול לשמש ברובוטיקה, או לפרויקטים מגניבים כמו הפרדת לגו לפי צבע, מיון M & M, או כעזר לעיוורון צבעים. יש לקוות שהמדריך הזה היה מועיל בשיפור פרויקט שעולה לך בראש!:) נוריות טובות לכל כך הרבה דברים….

מוּמלָץ: