تشخیص رنگ با استفاده از Arduino Uno
تشخیص رنگ با استفاده از Arduino Uno در این پروژه ما قصد داریم حسگر رنگ TCS3200 را با Arduino UNO واسط کنیم.
TCS3200 یک سنسور رنگی است که می تواند با برنامه ریزی صحیح هر تعداد رنگ را تشخیص دهد.
TCS3200 شامل آرایه های RGB (قرمز سبز آبی) است.
همانطور که در شکل در سطح میکروسکوپی نشان داده شده است ، می توان جعبه های مربع شکل داخل حسگر چشم را مشاهده کرد.
این جعبه های مربعی آرایه هایی از ماتریس RGB هستند.
هر یک از این جعبه ها دارای سه سنسور است ، یکی برای سنجش شدت نور RED ، یکی برای سنجش شدت نور GREEN و آخرین مورد برای سنجش شدت نور BLUE.
بخوانید : پروگرام آردوینو با بلوتوث
هر یک از آرایه های حسگر در این سه آرایه بسته به نیاز جداگانه انتخاب می شوند.
از این رو به عنوان سنسور قابل برنامه ریزی شناخته می شود.
ماژول می تواند رنگ خاص را حس کند و دیگران را ترک کند.
این فیلترها برای آن منظور انتخاب شده است.
حالت چهارم وجود دارد که حالت فیلتر ندارد.
بدون حالت فیلتر سنسور نور سفید را تشخیص می دهد.
لوازم مورد نیاز
سخت افزار
- برد آردوینو UNO
- سنسور یا ماژول تشخیص رنگ
- منبع تغذیه
- LED
- برد برد
نرم افزار
- ARDUINO IDE
بخوانید : کنترل ماتریس 8×8 با آردوینو
نمودار مدار و توضیحات کار
در LCD 16×2 بک لایت 16 پین وجود دارد ، در صورت عدم وجود چراغ عقب 14 پین وجود دارد.
می توان پایه های نور پشت را تأمین یا ترک کرد.
اکنون در 14 پایه 8 پایه داده 7-14 یا D0-D7 ، 2 پایه منبع تغذیه 1 و 2 یا VSS و VDD یا GND و + 5v ، پایه 3 برای کنترل کنتراست وجود دارد (VEE کنترل می کند که شخصیت ها چقدر ضخیم نشان داده شوند ، و 3 پایه کنترل (RS & RW & E)
بخوانید : ساخت رسیور IR با استفاده از آردوینو
در مدار می توانید مشاهده کنید که من فقط دو پایه کنترل گرفته ام.
از بیت کنتراست و READ / WRITE اغلب استفاده نمی شود تا بتوان آنها را کوتاه کرد.
این LCD را در بالاترین حالت کنتراست و خواندن قرار می دهد.
ما فقط باید پین های ENABLE و RS را کنترل کنیم تا متناسب با آن کاراکتر و داده ارسال کنیم.
اتصالات انجام شده برای LCD در زیر آورده شده است
PIN1 or VSS to ground
PIN2 or VDD or VCC to +5v power
PIN3 or VEE to ground (gives maximum contrast best for a beginner)
PIN4 or RS (Register Selection) to PIN8 of ARDUINO UNO
PIN5 or RW (Read/Write) to ground (puts LCD in read mode eases the communication for user)
PIN6 or E (Enable) toPIN9 of ARDUINO UNO
PIN11 or D4 to PIN7 of ARDUINO UNO
PIN12 or D5 to PIN11 of ARDUINO UNO
PIN13 or D6 to PIN12 of ARDUINO UNO
PIN14 or D7 to PIN13 of ARDUINO UNO
The connections which are done for color sensor are given below:
VDD to +5V
GND to GROUND
OE (output Enable) to GND
S0 to UNO pin 2
S1 to UNO pin 3
S2 to UNO pin 4
S3 to UNO pin 5
OUT to UNO pin 10
بخوانید : کنترل موتور سروو با استفاده از آردوینو
رنگی که باید توسط سنسور رنگ حس شود با دو پایه S2 و S3 انتخاب می شود.
با استفاده از این کنترل منطقی دو پایه می توانیم به سنسور بگوییم که شدت نور رنگ کدام اندازه گیری می شود.
بگویید ما باید شدت رنگ RED را حس کنیم که باید هر دو پایه را روی LOW قرار دهیم.
پس از انجام این سنسور شدت را تشخیص داده و مقدار آن را به سیستم کنترل داخل ماژول می فرستد.
سیستم کنترل داخل ماژول در شکل نشان داده شده است.
شدت نور اندازه گیری شده توسط آرایه به مبدل جریان به فرکانس ارسال می شود.
کاری که انجام می شود این است که یک موج مربعی را بیرون می آورد که فرکانس آن نسبت به جریان ارسالی توسط ARRAY است.
بنابراین ما سیستمی داریم که یک موج مربعی را می فرستد که فرکانس آن به شدت نور رنگی که توسط S2 و S3 انتخاب می شود بستگی دارد.
فرکانس سیگنال ارسالی توسط ماژول بسته به نوع استفاده قابل تنظیم است.
می توانیم پهنای باند فرکانس سیگنال خروجی را تغییر دهیم.
بخوانید : آشکارساز حرکت با استفاده از سنسور PIR
مقیاس گذاری
مقیاس گذاری فرکانس توسط دو بیت S0 و S1 انجام می شود.
برای راحتی کار ، ما مقیاس بندی فرکانس را به 20٪ محدود می کنیم.
این کار با تنظیم S0 روی بالا و S1 روی LOW انجام می شود.
این ویژگی زمانی به کار می آید که ما از ماژول روی سیستم با ساعت کم استفاده می کنیم.
حساسیت آرایه به رنگ در شکل زیر نشان داده شده است.
اگرچه رنگهای مختلف حساسیت متفاوتی دارند ، اما برای استفاده معمول تفاوت چندانی نخواهد داشت.
UNO در اینجا سیگنال را به ماژول می فرستد تا رنگ ها را تشخیص دهد و داده های دریافت شده توسط ماژول در LCD 16 * 2 متصل به آن نشان داده می شود.
سه شدت رنگ را جداگانه تشخیص می دهد و آنها را بر روی LCD نشان می دهد.
Uno می تواند مدت زمان پالس سیگنال را تشخیص دهد که می تواند فرکانس موج مربع ارسال شده توسط ماژول را بدست آورد.
با فرکانس موجود می توانیم آن را با حسگر رنگ مطابقت دهیم
همانطور که با شرایط فوق ، UNO مدت زمان پالس را روی 10 پین UNO می خواند و مقدار آن را در عدد صحیح “فرکانس” ذخیره می کند.
ما قصد داریم این کار را برای هر سه رنگ برای تشخیص رنگ انجام دهیم.
هر سه شدت رنگ توسط فرکانس ها در LCD 16×2 نشان داده می شود.
بخوانید : کنترل آردوینو با رزبری پای pyFirmata
کد برنامه : تشخیص رنگ با استفاده از Arduino Uno
int OutPut= 10;//naming pin10 of uno as output
unsigned int frequency = 0;
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 7, 11, 12, 13);//RS,EN,D4,D5,D6,D7
void setup()
{
// set up the LCD’s number of columns and rows
lcd.begin(16, 2);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);//PINS 2, 3,4,5 as OUTPUT
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(10, INPUT);//PIN 10 as input
digitalWrite(2,HIGH);
digitalWrite(3,LOW);//setting frequency selection to 20%
}
void loop()
{
lcd.print(“R=”);//printing name
digitalWrite(4,LOW);
digitalWrite(5,LOW);//setting for RED color sensor
frequency = pulseIn(OutPut, LOW);//reading frequency
lcd.print(frequency);//printing RED color frequency
lcd.print(” “);
lcd.setCursor(7, 0);//moving courser to position 7
delay(500);
lcd.print(“B=”);// printing name
digitalWrite(4,LOW);
digitalWrite(5,HIGH);// setting for BLUE color sensor
frequency = pulseIn(OutPut, LOW);// reading frequency
lcd.print(frequency);// printing BLUE color frequency
lcd.print(” “);
lcd.setCursor(0, 1);
delay(500);
lcd.print(“G=”);// printing name
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);// setting for GREEN color sensor
frequency = pulseIn(OutPut, LOW);// reading frequency
lcd.print(frequency);// printing GREEN color frequency
lcd.print(” “);
lcd.setCursor(0, 0);
delay(500);
}
این پروژه توسط گروه وی تات انجام شده wetat.ir
کپی با دکر منبع بلامانع است