با سلام و خسته نباشید خدمت همه شما دوستان عزیز و همراهان گرامی. امروز در خدمت شما هستیم با سری آموزشهای آردوینو در زمینهی ساخت یک چراغ راهنمایی و رانندگی ساده و همچنین ساخت یک چراغ راهنمایی و رانندگی دو جهته.
تاریخچه چراغ راهنمایی و رانندگی
چراغهای راهنمایی در سال ۱۸۶۸ پیش از اختراع اتومبیل و در زمانی که ترافیک شامل چهارپایان، واگنها، کالسکهها و عابران پیاده میشد، طراحی و در لندن نصب شد. این چراغ از دو فانوس گازی قرمز (به معنای توقف) و سبز (به معنای حرکت) توسط مهندس راه آهن، به نام J P knight ساخته شده بود. البته یک سال بعد در ژانویه ۱۸۶۹ این چراغ راهنمایی گازی منفجر شد و مأمور پلیسی را که مشغول روشن کردن آن بود، به شدت مجروح کرد. اما اولین چراغ راهنمایی نسل جدید که به چراغهای راهنمایی امروزی شبیهتر است، بعد از اختراع اتومبیل و در شهر دیترویت و به همت یک مأمور پلیس راهنمایی و رانندگی ساخته شد. همهی ما اهمیت وجود چراغ راهنمایی و رانندگی را درک میکنیم و میدانیم که مهمترین وسیله برای کنترل ترافیک در تقاطعها چراغ راهنمایی است. پس شروع به طراحی یک چراغ راهنمایی ساده خواهیم کرد اما در ابتدا باید با برخی از قطعات مورد نیاز آن آشنا شویم.
قطعات مورد نیاز
۱. الایدی (LED)
الایدی (light emitting diode): دیود نورافشان یا دیود نورانی است که کاربرد وسیعی در مصارف خانگی و صنعتی دارد. LED در مراجع گوناگون، دیود گسیل نور و دیود نوردهنده نیز نامیده می شود.
۲. مقاومت (resistor)
به هر قطعهای که در برابر عبور جریان از خود مخالفت نشان دهد مقاومت میگوییم. واحد مقاومت اهم است. از مقاومت برای آسیب نرسیدن به الایدی استفاده میشود.
3. برد آردوینو
پیش از این به معرفی بردهای آردوینو پرداخته شده است.
۴. بردبورد
بردبورد یک برد آمادهی آموزشی است که برای طرحهای اولیه انجام میشود که نیازی به لحیم کاری نیز ندارد و اتصالات آن در درون خود برد به صورت نمایش داده شده در تصویر زیر به یکدیگر وصل شده است.
۵. سیم جامپر
از سیم جامپر برای اتصالات استفاده میکنیم.
نحوهی سیم بندی پروژه چراغ راهنمایی و رانندگی
در مدار بالا دقت کنید که پایه مثبت الایدیها به پایههای دیجیتال آردوینو وصل خواهند شد و پایه منفی الایدیها به مقاومتی که به gnd وصل شده است، اتصال پیدا میکنند. برای آشنایی با محیط آردوینو میتوانید به پست مربوطه مراجعه کنید.
کد پروژه چراغ راهنمایی و رانندگی
int green = 13; //green led in pin 13
int yellow = 12; //yellow led in pin 12
int red = 11; //red led in pin 11
void setup() {
pinMode(green, OUTPUT); //set pin 13 as OUTPUT
pinMode(yellow, OUTPUT); //set pin 12 as OUTPUT
pinMode(red, OUTPUT); //set pin 11 as OUTPUT
}
void loop() {
digitalWrite(green, 1); // turn on green led
digitalWrite(red, 0); //turn off red led
delay(2000); //wait for 2 sec
digitalWrite(yellow, 1); // turn on yellow led
digitalWrite(green, 0); //turn off green led
delay(500); //wait for 0.5 sec
digitalWrite(yellow, 0); //turn off yellow led
digitalWrite(red, 1); // turn on red led
delay(2000); //wait for 2 sec
}
در واقعیت رنگ قرمز و سبز چراغ راهنمایی حدود ۶۰ ثانیه و رنگ زرد ۵ ثانیه است. با توجه به این که ما درحال شبیهسازی هستیم از یک بازهی زمانی دیگر استفاده میکنیم که در اینصورت چراغ سبز و قرمز ۲ ثانیه و چراغ زرد ۰.۵ ثانیه روشن خواهد بود.
حال سر یک چهارراه را در نظر بگیرید که شامل دو نوع عدد چراغ راهنمایی و رانندگی است، با توجه به شکل زیر یک نوع (دو عدد) در راستای عمودی و نوع دیگر (دو عدد) در راستای افقی قرار خواهد داشت. این دو نوع چراغ باید در زمان مناسب شروع به تغییر کنند تا بتوانند به صورت دقیق ترافیک را کنترل نمایند.
مدار شماتیک این پروژه
کد نویسی پروژه
int green1 = 13; //green1 led in pin 13
int yellow1 = 12; //yellow1 led in pin 12
int red1 = 11; //red1 led in pin 11
int green2 = 7; //green2 led in pin 7
int yellow2 = 6; //yellow2 led in pin 6
int red2 = 5; //red2 led in pin 5
void setup() {
pinMode(green1, OUTPUT); //set pin 13 as OUTPUT
pinMode(yellow1, OUTPUT); //set pin 12 as OUTPUT
pinMode(red1, OUTPUT); //set pin 11 as OUTPUT
pinMode(green2, OUTPUT); //set pin 7 as OUTPUT
pinMode(yellow2, OUTPUT); //set pin 6 as OUTPUT
pinMode(red2, OUTPUT); //set pin 5 as OUTPUT
}
void loop() {
digitalWrite(green1, 1); // turn on green1 led
digitalWrite(red1, 0); //turn off red1 led
digitalWrite(red2, 1); //turn on red2 led
digitalWrite(yellow2, 0); //turn off yellow2 led
delay(2000); //wait for 2 sec
digitalWrite(yellow1, 1); // turn on yellow1 led
digitalWrite(green1, 0); //turn off green1 led
delay(500); //wait for 0.5 sec
digitalWrite(yellow1, 0); //turn off yellow1 led
digitalWrite(red1, 1); // turn on red1 led
digitalWrite(green2, 1); // turn on green2 led
digitalWrite(red2, 0); //turn off red2 led
delay(2000); //wait for 2 sec
digitalWrite(yellow2, 1); // turn on yellow2 led
digitalWrite(green2, 0); //turn off green2 led
delay(500); //wait for 0.5 sec
}
امیدوارم از این بخش لذت برده باشید. با ما همراه باشید با پروژههای بهتر و جذابتر.
موفق و پیروز باشید