آشکار ساز رنگ RGB با استفاده از سنسور تشخیص رنگ TCS3200 و برد آردوینو یک پروژه فوق العاده برای کسانی است که می خواهند با رنگ های مختلف سرگرم شوند. در این پروژه ما برای طراحی یک آشکارساز رنگ از یک سنسور TCS3200 و آردوینو استفاده می کنیم. تنظیمات به خصوصی برای تشخیص فرکانس رنگ RGB توسط پنل LCD وجود دارد تا بتواند این فرکانس را که ترکیبی از تمام رنگ ها است را به راحتی و وضوح کامل نشان دهد.
جهت انجام پروژه آشکار ساز رنگ RGB با استفاده از سنسور تشخیص رنگ TCS3200 و برد آردوینو، به تجهیزات زیر احتیاج داریم.
لیست قطعات مورد نیاز
برد آردوینو Arduino UNO R3 مدل DIP | 1 عدد |
سنسور تشخیص رنگ TCS3200 | 1 عدد |
LCD کاراکتری مدل 16×2 با Backlighting آبی | 1 عدد |
لامپ LED قرمز سایز 5mm میلی متر مدل مات | 1 عدد |
لامپ LED سبز سایز 5mm میلی متر مدل مات | 1 عدد |
لامپ LED زرد سایز 5mm میلی متر مدل مات | 1 عدد |
برد بورد (پروجکت برد) مدل GL | 1 عدد |
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی) | 1 عدد |
:: چند تیکه کاغذ به رنگ های متفاوت ( ترجیحا، قرمز، آبی و سبز)
شرح تجهیزات به کار رفته در پروژه
1. سنسور تشخیص رنگ TCS3200
از سنسور تشخیص رنگ TCS3200 و آردوینو می توان به عنوان یک آشکار ساز استفاده کرد. این سنسور از یک تراشه TCS3200 و 4 تا ال. ای. دی سفید ساخته شده است. TCS3200 توانایی تشخیص، مشاهده و اندازه گیری نامحدودی از رنگ های موجود در اطراف خود را دارد. همچنین این قطعه توانایی های فوق العاده ای از جمله خواندن، تست کردن، کالیبره کردن، مرتب کردن انواع رنگ ها و تطبیق دادن آن ها به یکدیگر را دارد.
سنسور تشخیص رنگ TCS3200 و آردوینو مجموعه ای از آشکارسازها که هر کدام با یک فیلتر قرمز، سبز، آبی و یا حتی بدون رنگ هستند که این فیلترها هر کدام به طور یکنواخت در آرایه ها توزیع می شوند تا بتوانند جایگزین رنگ های دیگر شوند. سنسور با توجه به شدت رنگ دریافتی، یک موج مربعی شکل با فرکانس متناسب آن رنگ به خروجی ارسال میکند.
2. ویژگی های سنسور تشخیص رنگ TCS3200
1. ولتاژ کاری بین 2.7 ولت تا 5.5 ولت
2. تبدیل شدت نور به فرکانس
3. رزولوشن بالا
4. قابلیت تنظیم خروجی رنگ و محدوده ی خروجی آن
5. توان مصرفی پایین
6. ارتباط مستقیم به میکروکنترلر
7. S0 و S1 ورودی های مقیاس فرکانس خروجی
8. S2 و S3 ورودی های انواع فتودیودها
9. OUT Pin: فرکانس خروجی
10. OE Pin: پایه فعال ساز
11. اندازه (طول * عرض): 28.4mm * 28.4mm
3. مشخصات و جزئیات پین ها
نقشه شماتیک پروژه آشکار ساز رنگ
با توجه به شماتیک پروژه که در زیر آمده است، اقدام به اتصال تجهیزات پروژه آشکار ساز رنگ RGB با سنسور تشخیص رنگ TCS3200 و آردوینو کنید. ماژول تشخیص رنگ TCS3200، تعداد ۸ پایه دارد که در جدول فوق تمامی موارد آن را شرح دادیم و بیان کردیم که سنسور با توجه به شدت رنگ دریافتی، یک موج مربعی شکل که فرکانسی متناسب همان رنگ به خروجی ارسال میکند.
در مورد نحوه عملکرد سنسور TCS3200 در پروژه قبلی به طور مفصل توضیحات داده شده است.
برنامه نوسی پروژه آشکار ساز رنگ
بعد از اتصال قطعات به یکدیگر طبق شماتیکی که در بالا آمده است، کدهای زیر را در نرم افزار آردوینو کپی نموده سپس به برد آردوینو آپلود کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
#include <LiquidCrystal.h> LiquidCrystal lcd(7, 6, 5, 4, 3, 2);//RS,EN,D4,D5,D6,D7 const int s0 = 8; const int s1 = 9; const int s2 = 10; const int s3 = 11; const int out = 12; // LED pins connected to Arduino int redLed = 16; int greenLed = 15; int blueLed = 14; // Variables int red = 0; int green = 0; int blue = 0; void setup() { Serial.begin(9600); lcd.begin(16, 2); pinMode(s0, OUTPUT); pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); pinMode(out, INPUT); pinMode(redLed, OUTPUT); pinMode(greenLed, OUTPUT); pinMode(blueLed, OUTPUT); digitalWrite(s0, HIGH); digitalWrite(s1, HIGH); } void loop() { lcd.setCursor(0, 0); lcd.print(" Color Detected ");//printing name color(); Serial.print("R Intensity:"); Serial.print(red, DEC); Serial.print(" G Intensity: "); Serial.print(green, DEC); Serial.print(" B Intensity : "); Serial.print(blue, DEC); //Serial.println(); if (red < blue && red < green && red < 20) { Serial.println(" - (Red Color)"); lcd.setCursor(0, 1); lcd.print(" RED Color "); delay(500); digitalWrite(redLed, HIGH); // Turn RED LED ON digitalWrite(greenLed, LOW); digitalWrite(blueLed, LOW); } else if (blue < red && blue < green) { Serial.println(" - (Blue Color)"); lcd.setCursor(0, 1); lcd.print(" Blue Color ") ; delay(500); digitalWrite(redLed, LOW); digitalWrite(greenLed, LOW); digitalWrite(blueLed, HIGH); // Turn BLUE LED ON } else if (green < red && green < blue) { Serial.println(" - (Green Color)"); lcd.setCursor(0, 1); lcd.print(" Green Color "); delay(500); digitalWrite(redLed, LOW); digitalWrite(greenLed, HIGH); // Turn GREEN LED ON digitalWrite(blueLed, LOW); } else{ Serial.println(); lcd.setCursor(0, 1); lcd.print(" Can't Identify"); delay (500); } digitalWrite(redLed, LOW); digitalWrite(greenLed, LOW); digitalWrite(blueLed, LOW); } void color() { digitalWrite(s2, LOW); digitalWrite(s3, LOW); //count OUT, pRed, RED red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s3, HIGH); //count OUT, pBLUE, BLUE blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s2, HIGH); //count OUT, pGreen, GREEN green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); } |
سلام.
من طبق نقشه شماتیک مدار رو بستم و کد ها رو در آردوینو آپلود کردم.چراغ های ledسنسور روشن شد و در lcd هیچ چیزی نمایش داده نشد.
در واقع یا مدار یا کدی که نوشته شده اشتباهه!
لطفا راهنمایی کنید.
ممنون
سلام دوست عزیز
در صورتیکه اتصالات نمایشگر شما به برد آردوینو صحیح باشد، حتی در صورت عدم اتصال سنسور تشخیص رنگ، باز هم باید پیغام ثابت “Color Detected” بر روی نمایشگر ظاهر شود. لطفا اتصالات مربوط به نمایشگر خود را بررسی کنید.
ممنون از راهنماییتون