آموزش ساخت چراغ راهنمایی و رانندگی با آردوینو

با سلام و خسته نباشید خدمت همه شما دوستان عزیز و همراهان گرامی. امروز در خدمت شما هستیم با سری آموزش‌های آردوینو در زمینه‌ی ساخت یک چراغ راهنمایی و رانندگی ساده و همچنین ساخت یک چراغ راهنمایی و رانندگی دو جهته.

چراغ راهنمایی و رانندگیتاریخچه چراغ راهنمایی و رانندگی

چراغ‌های راهنمایی در سال ۱۸۶۸ پیش از اختراع اتومبیل و در زمانی که ترافیک شامل چهارپایان، واگن‌ها، کالسکه‌ها و عابران پیاده می‌شد، طراحی و در لندن نصب شد. این چراغ از دو فانوس گازی قرمز (به معنای توقف) و سبز (به معنای حرکت) توسط مهندس راه آهن، به نام  J P knight ساخته شده بودالبته یک سال بعد در ژانویه ۱۸۶۹ این چراغ راهنمایی گازی منفجر شد و مأمور پلیسی را که مشغول روشن کردن آن بود، به شدت مجروح کرداما اولین چراغ راهنمایی نسل جدید که به چراغ‌های راهنمایی امروزی شبیه‌تر است، بعد از اختراع اتومبیل و در شهر دیترویت و به همت یک مأمور پلیس راهنمایی و رانندگی ساخته شد. همه‌ی ما اهمیت وجود چراغ راهنمایی و رانندگی را درک می‌کنیم و می‌دانیم که مهم‌ترین وسیله برای کنترل ترافیک در تقاطع‌ها چراغ راهنمایی است. پس شروع به طراحی یک چراغ راهنمایی ساده خواهیم کرد اما در ابتدا باید با برخی از قطعات مورد نیاز آن آشنا شویم.

 

قطعات مورد نیاز

۱.     ال‌ای‌دی (LED)

ال‌ای‌دی (light emitting diode): دیود نورافشان یا دیود نورانی است که کاربرد وسیعی در مصارف خانگی و صنعتی دارد. LED  در مراجع گوناگون، دیود گسیل نور و دیود نوردهنده نیز نامیده می شود.

اجزای داخلی ال‌ای‌دیشماتیک ال‌ای‌دی

 

۲.     مقاومت (resistor)

به هر قطعه‌ای که در برابر عبور جریان از خود مخالفت نشان دهد مقاومت می‌گوییم. واحد مقاومت  اهم است. از مقاومت برای آسیب نرسیدن به ال‌ای‌دی  استفاده می‌شود.

مقاومت

3.     برد آردوینو

پیش از این به معرفی بردهای آردوینو پرداخته شده است.

arduino uno

۴.     بردبورد

بردبورد یک برد آماده‌ی آموزشی است که برای طرح‌های اولیه انجام می‌شود که نیازی به لحیم کاری نیز ندارد و اتصالات آن در درون خود برد به صورت نمایش داده شده در تصویر زیر به یکدیگر وصل شده است.

بردبورد

۵.  سیم جامپر

از سیم جامپر برای اتصالات استفاده می‌کنیم.

سیم جامپر

نحوه‌ی سیم بندی پروژه چراغ راهنمایی و رانندگی 

شماتیک مدار چراغ راهنمایی

در مدار بالا دقت کنید که پایه‌ مثبت ال‌ای‌دی‌ها به پایه‌های دیجیتال آردوینو وصل خواهند شد و پایه منفی ال‌ای‌دی‌ها به مقاومتی که به 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
}

امیدوارم از این بخش لذت برده باشید. با ما همراه باشید با پروژه‌های بهتر و جذاب‌تر.

موفق و پیروز باشید

کپی شد!

ارتباط با ما

اصفهان ، میدان استقلال ، خیابان آزادگان ، دانشگاه صنعتی اصفهان
info@mehsa.ir