من همیشه یک علامت راهنمایی و رانندگی قدیمی می خواستم و بالاخره اخیراً آن را دریافت کردم. با این حال، سیم کشی آن بسیار ساده بود به طوری که همه چراغ ها روشن بودند. این چه سرگرمی است؟ من همچنین میخواستم یک کنترلکننده آردوینو را امتحان کنم و فکر کردم که این یک پروژه ساده و زیبا برای گنجاندن آن در آن است.
این دستورالعمل به شما نشان می دهد که چگونه یک سیگنال ترافیک قدیمی را با یک کنترلر آردوینو سیم کشی کنید تا مانند یک چراغ راهنمایی واقعی عمل کند. من از یک برنامه بسیار ساده و کنترل استفاده کردم. با توجه به قدرت کنترلر آردوینو، راه های زیادی برای شخصی سازی آن وجود دارد.
مرحله 2: طرح
در زیر یک نمودار سیم کشی برای علائم راهنمایی و رانندگی آمده است. امیدوارم این کاملاً واضح باشد که چه چیزی به چه چیزی متصل می شود.
عکسی از Arduino Uno و ماژول رله با سیمکشی بین این دو وصل شده است. من فقط جامپرهای نر به نر داشتم، بنابراین از کانکتور Molex و مهارت های لحیم کاری دیوانه ام برای ساختن کانکتور استفاده کردم (عکس دوم). احتمالاً استفاده از جامپرهای نر به ماده برای اتصال همه چیز یا یافتن جامپر 6 پین برای استفاده آسان تر است. آردوینو دارای تمام سوکت های مادگی و ماژول رله دارای تمام پایه های نر است.
اگر قبلا از آردوینو استفاده نکردهاید، به این دستورالعمل توسط randofo مراجعه کنید: http://www.instructables.com/id/Intro-to-Arduino/
اگر قبلاً نرم افزار برنامه نویسی آردوینو را دانلود نکرده اید، آن را دانلود و راه اندازی کنید. آردوینو را با کابل USB B به کامپیوتر خود وصل کنید.
کد زیر را کپی کرده و در آردوینو آپلود کنید. یکی از کدهای آپلود شده باید بلافاصله در آردوینو اجرا شود. شما باید روشن و خاموش شدن چراغ های نشانگر را روی واحد رله ببینید و صدای خاموش شدن سوئیچ های رله را بشنوید.
اگر بخواهید می توانید این کار را ساده تر یا پیچیده تر کنید. من آن را طوری تنظیم کردهام که 25 چرخه معمولی را طی کند، چند دقیقه به رنگ قرمز چشمک زن تغییر دهد، 25 چرخه عادی دیگر را انجام دهد، چند دقیقه به رنگ زرد چشمک بزند و سپس تکرار کند.
//کد کنترل کننده ترافیک Fzumrk
// پین های خود را نامگذاری کنید:
int red = 12;
int yellow = 11;
int green = 10;
// روال تنظیم یک بار با فشار دادن reset اجرا می شود:
void setup() {
// مقداردهی اولیه پین دیجیتال را به عنوان خروجی.
pinMode (قرمز، OUTPUT)؛
pinMode (زرد، OUTPUT)؛
pinMode (سبز، OUTPUT)؛
}
int var = 0; //مقدار اولیه را برای متغیرهای مورد استفاده در زیر
int var1 = 0 تعریف و تنظیم می کند. //مقدار اولیه را برای متغیرهای استفاده شده در زیر تعریف و تنظیم می کند
// روال حلقه بارها و بارها برای همیشه اجرا می شود:
void loop() {
// مقدار اولیه را برای پین ها تنظیم می کند تا چراغ ها به صورت خاموش شروع شوند
DigitalWrite (سبز، HIGH).
DigitalWrite (زرد، HIGH)؛
digitalWrite (قرمز، HIGH)؛
while(var < 25){
// چرخه عادی را 25 بار
DigitalWrite (سبز، LOW) تکرار می کند. // چراغ سبز را روی
تاخیر روشن می کند(20000); // چراغ سبز را به مدت 20 ثانیه روشن نگه می دارد
DigitalWrite(سبز، HIGH); // چراغ سبز را خاموش می کند
delay(600); // مکث جزئی بین چراغ ها
DigitalWrite (زرد، LOW); //چراغ زرد را روی
تاخیر روشن می کند(4000); //چراغ زرد را به مدت 4 ثانیه نگه می دارد (مراقب آن دوربین با نور قرمز باشید!)
digitalWrite(زرد، HIGH); // چراغ زرد را با
تاخیر خاموش می کند(600); //مکث جزئی بین چراغها
DigitalWrite(قرمز، LOW); //چراغ قرمز را روی
تاخیر روشن می کند(20000); //چراغ قرمز را به مدت 20 ثانیه روشن نگه می دارد
digitalWrite (قرمز، HIGH)؛ // چراغ قرمز را با
تاخیر خاموش می کند(600); //مکث جزئی بین نورها
var++;} //برای تعداد تکرار 1 به متغیر "var" اضافه می کند
// پس از 25 چرخه بالا، چراغ به "حالت قطع برق" تغییر می کند، با
تاخیر قرمز چشمک می زند(600). //تأخیر اندک
var1=0; // متغیر "var1" را به 0 بازنشانی می کند
while(var1 < 120) {
// چرخه قطع برق را 120 بار تکرار می کند – 2 دقیقه
DigitalWrite(قرمز، LOW);
تاخیر(600);
digitalWrite (قرمز، HIGH)؛
تاخیر(400);
var1++;}
var = 0;