در برخی از خودروها سیستم فاصله سنجی وجود دارد که هنگام عقب رفتن خودرو فعال می شود که در زبان عامیانه به آن سنسور دنده عقب خودرو می گویند. این سیستم زمانیکه خودرو به سمت عقب در حال حرکت است اگر جسمی در نزدیکی آن باشد آلارم می کشد و راننده را از وجود جسمی که در حال نزدیک شدن به آن است مطلع می کند.
عملکرد سنسور دنده عقب خودرو به این صورت است که چند سنسور التراسونیک در قسمت پشتی خودرو معمولا بر روی سپر عقب ماشین نصب می شود تا فاصله ماشین تا مانع را مدام اندازه گیری کند، تا در صورت نزدیک شدن به مانع سیستم مرکزی خودرو شروع به کشیدن آلارم کند، این سنسور به صورت اتوماتیک زمانیکه راننده وضعیت دنده خودرو را بر روی دنده عقب تنظیم می کند فعال می شود.
در این پروژه ما قصد داریم تا توسط ماژول آلتراسونیک سنجش مسافت SRF05 میزان مسافت را اندازه گیری کنیم و به واسطه برد آردوینو Arduino و ماژول نمایگشر سون سگمنت TM1637 مقدار فاصله تا جسم مورد نظر را نشان دهیم. پس بدون اتلاف زمان و توضیح اضافی به سراغ ساخت مدار می رویم.
لیست قطعات مورد نیاز
برد آردوینو Arduino UNO R3 مدل DIP | 1 عدد |
ماژول آلتراسونیک SRF05 مناسب اندازه گیری فاصله | 1 عدد |
بازر 5 ولتی با اسیلاتور داخلی | 1 عدد |
تک سوئیچ 2 پایه DIP سایز 6x6x5 میلیمتر | 1 عدد |
سیم جامپر برد بوردی مدل یک سر نری - مادگی (سری 40تایی) | 1 عدد |
آداپتور 12V ولت 2A آمپر مدل بین راهی ساخت ایران | 1 عدد |
مرحله اول : اتصال ماژول اولتراسونیک SRF05 به برد آردوینو
1- پایه VCC ماژول فاصله سنج SRF05 را به پایه 5V یا همان VCC بر روی برد آردوینو متصل کنید.
2- پایه Trig ماژول فاصله سنج SRF05 را به پایه دیجیتال شماره 2 برد آردوینو متصل کنید.
3- پایه Echo ماژول فاصله سنج SRF05 را به پایه شماره 3 برد آردوینو متصل کنید.
4- پایه GND ماژول فاصله سنج SRF05 را به پایه GND بر روی برد آردوینو متصل کنید.
مرحله دوم : اتصال کلید به برد آردوینو
در این پروژه شما می توانید یک فاصله مشخص برای سنسور اندازه گیری فاصله تعیین کنید تا زمانیکه ماژول فاصله سنج SRF05 از آن فاصله بیشتر به جسم و یا اجسام مقابل خود نزدیک شد، برد آردوینو با استفاده از بازر تعبیه شده در مدار پروژه شروع به بوق زدن به صورت ضربانی می کند، حال هر چقدر فاصله با جسم کمتر شود صدای بوق یا ضربان ها به صورت سریعتر پخش خواهد شد، درست همانند سنسورهای دنده عقب که بر روی خودروها نصب می شود. به همین جهت از این کلید برای ورود به منوی تنظیمات و تنظیم مقدار فاصله دلخواه برحسب سانتی متر استفاده می شود. که می توانید آنرا طبق توضیحات و نقشه شماتیک زیر به برد آردوینو متصل کنید.
1- یکی از پایه های تک سوئیچ را به پایه GND بر روی برد آردوینو متصل کنید.
2- پایه دیگر تک سوئیچ را به پایه دیجیتال شماره 12 بر روی برد آردوینو متصل کنید.
مرحله سوم : اتصال ماژول نمایگشر سون سگمنت TM1637
1- پایه GND ماژول سون سگمنت TM1637 را به پایه GND بر روی برد آردوینو متصل کنید.
2- پایه VCC ماژول سون سگمنت TM1637را به پایه 3.3V بر روی برد آردوینو متصل کنید.
3- پایه DIO ماژول سون سگمنت TM1637 را به پایه آنالوگ شماره A4 برد آردوینو متصل کنید.
4- پایه CLK ماژول سون سگمنت TM1637 را به پایه آنالوگ شماره A5 برد آردوینو متصل کنید.
مرحله چهارم : اتصال بازر Buzzer به برد آردوینو
1- پایه منفی بازر را به پایه دیجیتال شماره 9 برد آردوینو متصل کنید. همچنین می توانید این پایه را به پایه GND بر روی برد آردوینو نیز متصل کنید.
2- پایه مثبت بازر را به پایه دیجیتال شماره 8 برد آردوینو متصل کنید.
مرحله پنجم : نصب کتابخانه TM1637.h در نرم افزار آردوینو
1- نرم افزار آردوینو را بر روی سیستم خود اجرا کنید، اگر بار اول است که با برد Arduino کار می کنید و این نرم افزار را بر روی سیستم خود ندارید، می توانید نرم افزار آردوینو و نحوه نصب آن را از اینجا دریافت نمائید.
2- کتابخانه TM1637.h را از اینجا دانلود کنید.
3- مسیر زیر را از طریق منوی نوار ابزار در نرم افزار آردوینو طی کنید و سپس در پنجره نهایی فایل کتابخانه Grove_4-Digit_Display را که دانلود کرده اید، جهت افزودن انتخاب کنید.
Sketch > Include Library > Add .ZIP Library…
مرحله ششم : پروگرام کردن برنامه بر روی برد آردوینو
1- برد آردوینو را از طریق کابل USB به کامپیوتر متصل کنید.
2- نرم افزار آردوینو را بر روی سیستم خود اجرا کنید، اگر بار اول است که با برد Arduino کار می کنید و این نرم افزار را بر روی سیستم خود ندارید، می توانید نرم افزار آردوینو و نحوه نصب آن را از اینجا دریافت نمائید.
3- پس از اجرای نرم افزار آردوینو، از طریق منوی File بر روی گزینه New کلیک کنید.
4- تمامی کدهای زیر را کپی کنید و در پنجره جدید باز شده بچسبانید (Paste).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
#include <TM1637.h> //*************************Config Pin Display #define CLK A5 #define DIO A4 TM1637 Display1(CLK, DIO); int8_t Digitos[] = {8, 8, 8, 8}; int8_t Digit3; int8_t Digit2; int8_t Digit1; int8_t Digit0; //*************************Config Pin Buzzer const int Buzzer = 8; const int BuzzerGND = 9; //*************************Config Pin SRF05 const int Echo = 3; const int Trig = 2; //*************************Config Pin Switch const int PinSW = 12; //*************************Config Value int DurationSettings = 25; String DistanceEnd; int duration; int distance; int TimeDisplay; String Value; boolean Key; int TimeSW; void setup() { Display1.set(7); Display1.init(); Display1.display(Digitos); pinMode(Buzzer, OUTPUT); pinMode(BuzzerGND, OUTPUT); pinMode(Trig, OUTPUT); pinMode(Echo, INPUT); pinMode(PinSW, INPUT_PULLUP); delay(2000); Display1.point(POINT_OFF); Digitos[3] = 16; Digitos[2] = 16; Digitos[1] = 16; Digitos[0] = 16; } void loop() { delayMicroseconds(2); digitalWrite(Trig , LOW ); delayMicroseconds(10); digitalWrite(Trig , HIGH); duration = pulseIn(Echo , HIGH); distance = (duration / (58)); DistanceEnd = String(distance); switch (DistanceEnd.length()) { case 1: Digit3 = 16; Digit2 = 16; Digit1 = 16; Value = DistanceEnd.substring(0, 1); Digit0 = Value.toInt(); break; case 2: Digit3 = 16; Digit2 = 16; Value = DistanceEnd.substring(1, 2); Digit1 = Value.toInt(); Value = DistanceEnd.substring(0, 1); Digit0 = Value.toInt(); break; case 3: Digit3 = 16; Value = DistanceEnd.substring(2, 3); Digit2 = Value.toInt(); Value = DistanceEnd.substring(1, 2); Digit1 = Value.toInt(); Value = DistanceEnd.substring(0, 1); Digit0 = Value.toInt(); break; case 4: Value = DistanceEnd.substring(3, 4); Digit3 = Value.toInt(); Value = DistanceEnd.substring(2, 3); Digit2 = Value.toInt(); Value = DistanceEnd.substring(1, 2); Digit1 = Value.toInt(); Value = DistanceEnd.substring(0, 1); Digit0 = Value.toInt(); break; default: Digit3 = 16; Digit2 = 16; Digit1 = 16; Digit0 = 16; break; } Digitos[3] = Digit3; Digitos[2] = Digit2; Digitos[1] = Digit1; Digitos[0] = Digit0; Display1.display(Digitos); int timer = 0; int BuzzerTime = 0; while (true) { timer++; delay (1); if (digitalRead(PinSW) == 0) { TimeSW++; } else { TimeSW = 0; } if (TimeSW >= 1500) Settings(); if (timer > 500) break; if (distance < DurationSettings ) { BuzzerTime++; if (BuzzerTime < distance * 4) { digitalWrite(Buzzer , LOW ); } else { digitalWrite(Buzzer , HIGH ); if (BuzzerTime > distance * 4 + 80) { BuzzerTime = 0; digitalWrite(Buzzer , LOW ); } } } else { digitalWrite(Buzzer , LOW ); BuzzerTime = 0; } } } void Settings() { digitalWrite(Buzzer , LOW ); TimeSW = 0; Key = 1; while (true) { TimeSW++; TimeDisplay++; Digit2 = DurationSettings % 10 ; Digit1 = (DurationSettings % 100) / 10 ; if (TimeDisplay < 100) { Digitos[2] = Digit2 ; Digitos[1] = Digit1 ; } else { Digitos[2] = 16 ; Digitos[1] = 16 ; } Digitos[3] = 16 ; Digitos[0] = 16 ; if (TimeDisplay > 200) TimeDisplay = 0; Display1.display(Digitos); if (digitalRead(PinSW) == 0 && Key == 0) { Key = 1; TimeSW = 0; DurationSettings++; if (DurationSettings > 99 ) DurationSettings = 5; } if (digitalRead(PinSW) == 1 && Key == 1)Key = 0; if (TimeSW >= 1500) break; delay(1); } TimeSW = 0; } |
5- حال از طریق منوی File گزینه Save را انتخاب کنید و برنامه را در محل دلخواه خود ذخیره کنید.
6- پس از ذخیره برنامه از طریق منوی Tools به زیر منوی Board رفته و از لیست کشویی باز شده آیتم Arduino/Genuino Uno را انتخاب کنید.
7- دوباره از طریق همان منوی Tools به زیر منوی Port رفته و از لیست کشویی باز شده شماره پورت USB که از طریق آن برد آردینو به کامپیوتر متصل شده است را انتخاب کنید.
8- در پایان برای انتقال برنامه به برد آردوینو کافیست تا بر روی آیکون در نرم افزار برنامه نویسی آردوینو کلیک کنید.
مرحله هفتم : راه اندازی پروژه
1- برد آردوینو را به صورت کامل از کامپیوتر جدا کنید.
2- توسط یک آداپتور 12 ولت DC با حداقل جریان 200 میلی آمپر برد آردوینو را راه اندازی کنید.
3- در صورتیکه در هنگام ساخت پروژه، تمامی مراحل قبل را به درستی انجام داده باشید باید مقدار فاصله ماژول SRF05 با جسم یا اجسام مقابل آنرا بر حسب سانتی متر بر روی نمایشگر سون سگمنت مشاهده کنید.
4- در حالت پیش فرض مقدار فاصله اعلام خطر بر روی عدد 25 سانتی متر تنظیم شده است. این به این معنا است که اگر فاصله ماژول التراسونیک SRF05 با جسمی کمتر از 25 سانتی متر شود، بازر موجود در پروژه فعال می شود و شروع به پخش صدای بوق به صورت ضربانی می کند.
مرحله هشتم : تغییر مقدار فاصله اعلام خطر
1- کلید فشاری را به مدت 3 ثانیه نگه دارید، تا زمانیکه عدد فاصله فعلی که به صورت پیش فرض 25 سانتی متر تنظیم شده است به صورت چشمک زن بر روی نمایشگر سون سگمنت ظاهر شود.
2- حال می توانید با هر بار فشار کلید، مقدار فاصله مورد نظر خود را انتخاب کنید.
3- پس از انتخاب فاصله مورد نظر برای ذخیره و اعمال تنظیم، تنها کافی است به مدت حداقل 3 ثانیه به کلید دست نزنید.
با سلام و احترام
خیر – موجود نیست.
خیلی عالی بود فقط اون ۰۳۲۴ که بعضی وقت ها نشون میده چیه ؟؟؟؟
no matching function for call to ‘TM1637::display(int8_t [4])’
به من این ارور رو میده