به نام خدا
پروژه ی ساخت کرنومتر خودکار با استفاده از آردوینو
در این پست قصد داریم تا یک کرنومتر کاملا هوشمند برای دونده ها بسازیم. از ویژگی های این کرنومتر این است که همگامی دونده شروع به دویدن کند کرنومتر شروع به کار می کند و وقتی به نقطه ی مورد نظر رسید کرنومتر کار خود را پایان می دهد.
این تایمر به طور مخصوص برای ورزشکارانی ساخته شده است که قصد ندارند در بین راه به صورت دقیق کرنومتر را فعال یا غیر فعال کنند به عنوان مثال برای مسابقات دو و میدانی که زمان اهمیت دارد. بهتر است که برای شرایطی که زمان بسیار مهم است کرنومتر با حرکت بدن خود ما شمارشش را شروع کند تا اینکه شخصی دیگر آن را شروع کند. در این صورت خطای ناشی از سرعت عملکرد شخصی که کرنومتر را راه اندازی می کند حذف می شود و دقت اندازه گیری بالا می رود. این پروژه برای اندازه گیری زمان طی شده بین نقاط A و B است که فقط برای یک کاربر قابل استفاده است.
نحوه ی کار این سیستم به این صورت است که دو عدد لیزر یکی درابتدای مسیر و دیگری در انتهای مسیر قرار داده می شود. دو ال دی آر (مقاومت حساس به نور) نیز نقاط روبه روی این لیز ها قرار می گیرند. هنگامی که دونده از اولین لیزر عبور کرد ، کرنومتر شروع به شمردن می کند. و هنگامی که به انتهای خط رسید و لیزر دوم را نیز رد کرد ، کرنومتر شمارش را متوقف می کند. سپس آردوینو زمان طی شده را روی ال سی دی نمایش می دهد.
در شکل می توانید شماتیک مدار را ملاحظه کنید
نحوه ی اتصال مدار
توصیه می شود برای اتصال بین ال دی آر ها و آردوینو از سیم های ضخیم و قطور استفاده کنید زیرا طول آن ها زیاد است و به این ترتیب مقاومتشان کاهش پیدا می کند. بهتر است که فاصله ی بین ال دی آر یک و دو از چند صد متر بیشتر نشود.
نحوه ی قرار دادن ال دی آر:
مطابق شکل ال دی آر را درون یک استوانه ی کدر قرار دهید. دهانه ی سوراخ آن باید در حد چند میلیمتر باشد. همچین ال دی آر باید از تابش مستقیم نور خورشید بدور باشد در غیر این صورت اثر لیز را تشخیص نمی دهد.
دانلود کد برنامه:
دانلود فایل
#include <LiquidCrystal.h> LiquidCrystal lcd(12,11,5,4,3,2); int strt = A0; int stp = A1; int btn = A2; int M = 0; int S = 0; int mS = 0; float dly = 10.0; void setup() { lcd.begin(16,2); pinMode(strt,INPUT); pinMode(stp,INPUT); pinMode(btn,INPUT); } void loop() { if(digitalRead(strt)==HIGH && digitalRead(stp)==HIGH) { lcd.setCursor(0,0); lcd.print("Both lasers are"); lcd.setCursor(0,1); lcd.print(" working fine"); delay(4000); { while(digitalRead(btn)==LOW) { lcd.clear(); lcd.print("-System Standby-"); lcd.setCursor(0,1); lcd.print("Press Start btn"); delay(100); } lcd.clear(); lcd.setCursor(0,0); lcd.print("System is ready"); lcd.setCursor(0,1); lcd.print("----------------"); while(digitalRead(strt)==HIGH) { delay(1); } lcd.clear(); lcd.setCursor(0,0); lcd.print("Time is being"); lcd.setCursor(0,1); lcd.print("Calculated......"); while(digitalRead(stp)==HIGH) { delay(dly); mS = mS+1; if(mS==100) { mS=0; S = S+1; } if(S==60) { S=0; M = M+1; } } while(true) { lcd.clear(); lcd.setCursor(0,0); lcd.print(M); lcd.print(":"); lcd.print(S); lcd.print(":"); lcd.print(mS); lcd.print(" (M:S:mS)"); lcd.setCursor(0,1); lcd.print("Press Reset"); delay(1000); } } } if(digitalRead(strt)==HIGH && digitalRead(stp)==LOW) { lcd.setCursor(0,0); lcd.print("'Stop' laser is"); lcd.setCursor(0,1); lcd.print(" not working"); delay(100); } if(digitalRead(strt)==LOW && digitalRead(stp)==HIGH) { lcd.setCursor(0,0); lcd.print("'Start' laser is"); lcd.setCursor(0,1); lcd.print(" not working"); delay(100); } if(digitalRead(strt)==LOW && digitalRead(stp)==LOW) { lcd.setCursor(0,0); lcd.print("Both lasers are"); lcd.setCursor(0,1); lcd.print(" not working"); delay(100); } lcd.clear(); }
سلام خسته نباشید مدار ساخت این نمونه کرنومتر رو دارید برای فروش؟؟
سلام.
در حال حاضر نه ولی محصولش رو آماده میکنیم
من بستم همه چی درست بود فقط پیغام ریست میده فقط از روی آردوینو ریست میشه نمیشه کلید بزارم فشار بدم ریست بشه؟
باید خودتون برنامه رو تغییر بدید