آردوینو, پروژه آردوینو

راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو

راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو

سنسورهای تشخیص رنگ باعث می‌شوند تا سیستم‌های اتوماسیون بسیار دقیق‌تر فعالیت کنند. این سنسورها در صنایع مختلف از جمله خوراکی‌ها و نوشیدنی‌ها استفاده می‌شوند تا مواد، رنگ‌ها و . . . مشخص گردند. در این میان، اگرچه سنسورهای این‌چنینی که قیمت بیشتری دارند در صنایع به کار می‌روند ولی راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو بیشتر در پروژه‌های دانشجویی صورت می‌پذیرد پس برای یادگیری چگونگی انجام این کار، با بلاگ بهنام رباتیک همراه باشید.

فهرست مطالب

آشنایی با TCS230 قبل از شروع پروژه راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو

امروز قرار است ماژولی را به شما معرفی کنیم که می‌تواند به راحتی و با دقت قابل‌قبولی، رنگ‌ها را تشخیص دهد. این ماژول نسبتاً ارزان اما کاربردی، TCS230 می‌باشد. نحوه فعالیت این ماژول بدین گونه است که در هر پیکسل 3 فوتو دیود وجود دارد که هر یک از آنها سه رنگ قرمز، سبز و آبی را تشخیص می‌دهد.

جدول مقداردهی پین‌های S1 تا S4

انتخاب رنگ فوتو دیود

S4

S3

نسبت فرکانس سیگنال خروجی

S1

S0

قرمز

L

L

خاموش

L

L

آبی

H

L

2 درصد

H

L

بدون فیلتر

L

H

20 درصد

L

H

سبز

H

H

100 درصد

H

H

لوازم مورد نیاز برای پروژه راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو

آشنایی با پین‌های TCS230

  • GND: اتصال به زمین
  • پین خروجی فعال (OE). از این پین به ندرت استفاده می‌شود و معمولاً در بیشتر ماژول‌ها فعال است. چنان‌چه فعال نبود، آن را روی حالت LOW قرار دهید.
  • S0 و S1. جهت انتخاب بازه فرکانس
  • S2 و S3. جهت انتخاب آرایه رنگ
  • Out. جهت انتخاب سطح موج مربعی TTL
  • VCC: جهت تأمین انرژی. به پین 2.7 تا 5.5 ولت منبع تغذیه وصل می‌شود.

سیم‌کشی مدار راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو

وصل کردن ماژول TCS230 به آردوینو بسیار ساده است. تمامی پین‌ها به غیر از پین OE استفاده شده و ماژول انرژی مورد نیاز خود را از خروجی 5 ولت آردوینو دریافت می‌کند.

هیچ‌کدام از پین‌های استفاده شده در آردوینو نقش حیاتی ایفا نمی‌کنند زیرا خودِ ماژول هیچ ویژگی بخصوصی ندارد که به پین‌ها مربوط باشد. بر این اساس، اگر می‌خواهید از سایر پین‌ها استفاده کنید، امکان‌پذیر خواهد بود فقط مطمئن باشید که اعداد مربوط به پین‌ها را در کدنویسی تغییر دهید.

کدنویسی پروژه راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو

در ادامه کدهای مورد نیاز برای راه‌اندازی این پروژه را مشاهده می‌کنید. برای شفافیت بیشتر و فهم بهتر آنها، توضیحات لازم ارائه شده است.

در کدهای زیر مقدار خوانده شده از هر یک از سه فوتو دیود قرمز، سبز و آبی را در سریال مانیتور نشان می‌دهیم:

تعریف پایه‌های ماژول TCS230 برای آردوینو

				
					const int s0 = 5;
const int s1 = 4;
const int s2 = 7;
const int s3 = 6;
const int out = 8;
				
			

تعریف متغیرهای رنگ‌ها

				
					int red = 0;
int green = 0;
int blue = 0;
				
			

راه‌اندازی سریال

				
					void setup()
{ 
Serial.begin(9600);
				
			

تعریف پایه‌های S0 تا S4 به عنوان خروجی

				
					pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
				
			

با تعریف مقدار High برای دو پایه S0 و S1، فرکانس به نسبت 50 به 50 خروجی می‌دهد.

				
					digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);
				
			

سپس ابتدا پایه‌های S2 و S3 را روی مقدار Low می‌گذاریم تا بتوانیم فقط رنگ قرمز را تشخیص دهیم.

				
					}
void loop()  
{
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
				
			

با استفاده از تابع PulseIn، مقدار خروجی را می‌خوانیم و متغیر رنگ مربوطه که در اینجا قرمز است را مقداردهی می‌کنیم. توجه داشته باشید که آرگمان دوم شرطی را بررسی خواهیم کرد تا اگر مقدار خروجی برابر با High بود، مقدار Low به تابع نامبرده داده شود و در غیر این صورت، مقدار High گردد.

				
					red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
				
			

اینک مقدار پایه S3 را High می‌کنیم تا بتوانیم رنگ آبی را بررسی کنیم.

				
					digitalWrite(s3, HIGH);
				
			

با استفاده از تابع PulseIn، مقدار خروجی را می‌خوانیم و متغیر رنگ مربوطه که در اینجا آبی است را مقداردهی می‌کنیم. توجه داشته باشید که آرگمان دوم شرطی را بررسی خواهیم کرد تا اگر مقدار خروجی برابر با High بود، مقدار Low به تابع نامبرده داده شود و در غیر این صورت، مقدار High گردد.

				
					blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
				
			

این‌بار مقدار پایه S2 را High می‌کنیم تا بتوانیم رنگ سبز را بررسی کنیم.

				
					digitalWrite(s2, HIGH);
				
			

با استفاده از تابع PulseIn، مقدار خروجی را می‌خوانیم و متغیر رنگ مربوطه که در اینجا سبز است را مقداردهی می‌کنیم. توجه داشته باشید که آرگمان دوم شرطی را بررسی خواهیم کرد تا اگر مقدار خروجی برابر با High بود، مقدار Low به تابع نامبرده داده شود و در غیر این صورت، مقدار High گردد.

				
					green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
				
			

حالا مقادیر به دست آمده را چاپ می‌کنیم.

				
					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()
				
			

در انتها نیز میزان تأخیر را روی 300 میلی‌ثانیه تنظیم می‌کنیم. لازم به ذکر است که امکان تغییر این تأخیر وجود دارد.

				
					delay(300);
				
			

خروجی کد، سه متغیر رنگ می‌دهد که بین 0 تا 255 عددی را ارائه خواهد کرد تا با استفاده از آن رنگ‌ها را تشخیص دهیم. برای مثال، اگر متغیر 255 و سایر متغیرها تقریباً 0 بودند، رنگ قرمز خواهد بود. همچنین، با ترکیب این سه رنگ می‌توانید هر رنگی که دوست دارید را دریافت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *