رنرز ، ایتھلیٹس اور سپورٹرز کے لئے خودکار اسٹاپواچ بنانا

مسائل کو ختم کرنے کے لئے ہمارے آلے کو آزمائیں





اس پوسٹ میں ہم اسٹاپواچ تعمیر کرنے جارہے ہیں جو رنر چلنے لگے تو ٹائمر خود بخود شروع ہوجاتا ہے اور رنر اختتام کو پہنچنے پر ٹائمر رک جاتا ہے۔ نقطہ آغاز اور اختتامی نقطہ کے درمیان گزر جانے والا وقت 16 x 2 LCD پر ظاہر ہوتا ہے۔

پہلے آئیے ایک آسان اور انتہائی درست ارودوینو اسٹاپ واچ واچ سرکٹ کو تشکیل دینے کا طریقہ سیکھ کر شروع کریں۔



اسٹاپواچ ایک دستی طور پر کنٹرول ٹائم کلاک ڈیوائس ہے جو وقت کی لمبائی کی پیمائش کے ل designed تیار کیا گیا ہے جو اس کے چالو ہونے کے بعد کسی خاص وقت سے شروع ہوچکا ہے ، اور اس وقت تک جب اسے غیر فعال کردیا گیا تھا۔ اسی ڈیوائس کا ایک بڑا فرق کہا جاتا ہے اسٹاپ کلاک جو دور سے کارروائی کی نگرانی کے لئے استعمال ہوتی ہے اور عام طور پر اسپورٹس اسٹیڈیم وغیرہ میں پائی جاتی ہے۔

مکینیکل بمقابلہ الیکٹرانک اسٹاپواچ

اس سے قبل روایتی مکینیکل ہینڈ ہیلڈ اسٹاپواچ زیادہ عام تھا ، اور سبھی اس مقصد کے لئے استعمال کرتے ہیں۔



مکینیکل سسٹم میں ہمارے پاس اسٹاپ واچ کاموں کو انجام دینے کے لئے دو پریس بٹن تھے۔ ایک بار دبانے سے اسٹاپ کلاک شروع کرنے کے ل and ، اور اسی وقت بٹن دبانے کے لئے ایک بار پھر اسی بٹن کو دبائے ہوئے گزرے وقت کو ریکارڈ کرنے کے لئے .... دوسرا بٹن گھڑی کو صفر پر دوبارہ ترتیب دینے کے لئے استعمال کیا گیا تھا۔

مکینیکل اسٹاپ کلاک نے بنیادی طور پر موسم بہار کی طاقت سے کام کیا ، جس میں گھڑی کے آلے کے اوپری حصے میں دیئے جانے والی گھبری ہوئی نوب کو موڑ کر دستی طور پر سمیٹنے کی ضرورت ہوتی تھی۔

تاہم ، جدید ڈیجیٹل اسٹاپ گھڑیاں کے مقابلے میں ، مکینیکل اقسام کو ملی سیکنڈ کی حد میں نمایاں طور پر قدیم اور غلط سمجھا جاسکتا ہے۔

ایک ارڈینو کا استعمال کرتے ہوئے

اور آج مائکروکنٹرولر کی آمد کے ساتھ ، یہ اسٹاپ گھڑیاں مائیکرو سیکنڈ رینج کے لئے انتہائی درست اور قابل اعتماد ہوگئیں۔

اردوینو اسٹاپ واچ واچ سرکٹ جو یہاں پیش کیا گیا ہے ان میں سے ایک مائکرو قابو پذیر طاقت سے چلنے والا ڈیزائن ہے جو انتہائی درست ہے جس کی امید توقع کی جاسکتی ہے کہ یہ تجارتی جدید اسٹاپ واچ گیجٹ کے مترادف ہے۔

آئیے جانیں کہ مجوزہ ارڈینوو اسٹاپ کلاک سرکٹ کو کیسے بنایا جائے:

تعمیر کے لئے آپ کو مندرجہ ذیل بل سامان کی ضرورت ہوگی۔

ہارڈ ویئر کی ضرورت ہے

ایک ارڈینو ایل سی ڈی کی پیڈ شیلڈ (SKU: DFR0009)

ایک ارڈینو ایل سی ڈی کی پیڈ شیلڈ (SKU: DFR0009)

ایک ارڈینو ون بورڈ

اردوینو یو این او

ایک ارڈینو یو ایس بی کیبل

آرڈوینو USB کیبل

ایک بار جب آپ مذکورہ بالا مواد حاصل کرلیں اور انہیں ایک دوسرے کے ساتھ جوڑ دیں ، تو یہ صرف مندرجہ ذیل دیئے گئے اسکیچ کوڈ کو اپنے اردوینو بورڈ میں تشکیل دینے اور اسٹاپ کلاک افعال کا جادو دیکھنے کے بارے میں ہے۔

کوڈ

/*
Standalone Arduino StopWatch
By Conor M - 11/05/15
Modified by Elac - 12/05/15
*/
// call the necessary libraries
#include
#include
// these are the pins used on the shield for this sketch
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7)
// variables used on more than 1 function need to be declared here
unsigned long start, finished, elapsed
boolean r = false
// Variables for button debounce time
long lastButtonPressTime = 0 // the last time the button was pressed
long debounceDelay = 50 // the debounce time keep this as low as possible
void setup()
{
lcd.begin(16, 2) // inicialize the lcd (16 chars, 2 lines)
// a little introduction :)
lcd.setCursor(4, 0) // set the cursor to first character on line 1 - NOT needed (it sets automatically on lcd.begin()
lcd.print('Arduino')
lcd.setCursor(3, 1) // set the cursor to 4th character on line 2
lcd.print('StopWatch')
delay(2000) // wait 2 seconds
lcd.clear() // clear the display
lcd.print('Press select for')
lcd.setCursor(2, 1) // set the cursor to 3rd character on line 2
lcd.print('Start & Stop')
}
void loop()
{
CheckStartStop()
DisplayResult()
}
void CheckStartStop()
{
int x = analogRead (0) // assign 'x' to the Arduino's AnalogueInputs (Shield's buttons)
if (x 600 ) // if the button is SELECT
{
if ((millis() - lastButtonPressTime) > debounceDelay)
{
if (r == false)
{
lcd.clear()
lcd.setCursor(2, 0) // needed
lcd.print('Elapsed Time')
start = millis() // saves start time to calculate the elapsed time
}
else if (r == true)
{
lcd.setCursor(2, 0) // needed
lcd.print(' Final Time ')
}
r = !r
}
lastButtonPressTime = millis()
}
}
void DisplayResult()
{
if (r == true)
{
finished = millis() // saves stop time to calculate the elapsed time
// declare variables
float h, m, s, ms
unsigned long over
// MATH time!!!
elapsed = finished - start
h = int(elapsed / 3600000)
over = elapsed % 3600000
m = int(over / 60000)
over = over % 60000
s = int(over / 1000)
ms = over % 1000
// display the results
lcd.setCursor(0, 1)
lcd.print(h, 0) // display variable 'h' - the 0 after it is the
number of algorithms after a comma (ex: lcd.print(h, 2) would print
0,00
lcd.print('h ') // and the letter 'h' after it
lcd.print(m, 0)
lcd.print('m ')
lcd.print(s, 0)
lcd.print('s ')
if (h <10)
{
lcd.print(ms, 0)
lcd.print('ms ')
}
}
}

7 طبقہ ڈسپلے شامل کرنا

اب آئیے 7 سیگمنٹ ایل ای ڈی ڈسپلے اور اردوینو استعمال کرتے ہوئے اسٹاپ واچ سرکٹ کی تعمیر سے متعلق تفصیلات کے ساتھ آگے بڑھیں۔ ہم رکاوٹوں اور ڈسپلے ڈرائیور آئی سی سے متعلق تصورات کی تلاش کریں گے جو اس منصوبے کو سمجھنے کے لئے انتہائی ضروری ہیں۔ اس پروجیکٹ کی تجویز مسٹر ابوحفس نے کی تھی جو اس ویب سائٹ کے شوقین لوگوں میں سے ایک ہے۔

جیسا کہ ہم پہلے ہی جانتے ہیں کہ اسٹاپواچ ایک ایسا آلہ ہے جو گھنٹوں سے لیکر ملی سیکنڈ کی حد تک (زیادہ تر) مختصر وقت کا پتہ لگانے میں مدد کرتا ہے۔ تقریبا تمام سستے ڈیجیٹل کلائی گھڑیاں اسٹاپ واچ فعالیت سے لیس ہیں ، لیکن کوئی بھی گھڑیاں اپنے نفس کے لئے ایک بنانے کا حوصلہ نہیں دے سکتی اور 7 سیگمنٹ ایل ای ڈی ڈسپلے کے ساتھ اسٹاپ واچ بھی تلاش کرنا غیر معمولی ہے۔

مسٹر ابوحفس نے ہمیں 4 ڈسپلے ، دو منٹ اور دو سیکنڈ (ایم ایم: ایس ایس) کی تشکیل کے ساتھ اسٹاپواچ ڈیزائن کرنے کا مشورہ دیا۔ لیکن ہم میں سے اکثر کے لئے یہ ممکنہ ڈیزائن نہیں ہوسکتا ہے ، لہذا ہم نے ملی سیکنڈ رینج کے لئے مزید دو ڈسپلے شامل کیے لہذا اب مجوزہ ڈیزائن ایم ایم: ایس ایس: ایم ایس کنفیگریشن میں ہوگا۔

اگر آپ کو صرف ایم ایم کی ضرورت ہے: کسی وجہ سے ایس ایس کنفیگریشن ، آپ کو ملی سیکنڈ رینج 7 سیگمنٹ ڈسپلے اور اس کے ڈرائیور آئی سی کو مربوط کرنے کی ضرورت نہیں ہے ، سرکٹ کی پوری فعالیت ابھی بھی متاثر نہیں ہوگی۔

سرکٹ:

مجوزہ اسٹاپواچ میں چھ آئی سی 4026 پر مشتمل ہے جو سات سیگمنٹ ڈسپلے ڈرائیور ، چھ 7 سیگمنٹ ایل ای ڈی ڈسپلے ، ایک ارڈینو بورڈ ، پش بٹنوں کا ایک جوڑا اور 10K ریسٹرز کی جوڑی ہے۔

آئیے اب سمجھیں کہ آئی سی 4026 سے 7 سیگمنٹ ڈسپلے کو کس طرح جوڑیں۔

7 طبقہ ڈسپلے کسی بھی رنگ کا کوئی عام کیتھوڈ ڈسپلے ہوسکتا ہے۔ 7 طبقہ ڈسپلے 5 وی سپلائی سے آسانی سے ہلاک ہوسکتا ہے ، لہذا ڈسپلے کے ہر طبقے پر 330 اوم مزاحم کار لازمی ہے۔

اب آئی سی 4026 کا پن ڈایاگرام دیکھتے ہیں:

  • پن # 1 گھڑی کا ان پٹ ہے۔
  • پن # 2 گھڑی غیر فعال ہے ، اگر یہ پن زیادہ ہے تو وہ ڈسپلے پر موجود گنتی کو غیر فعال کردیتا ہے۔
  • پن # 3 ڈسپلے کے قابل ہے اگر یہ پن کم ہے تو ڈسپلے بند ہوجائے گا اور اس کے برعکس ہوگا۔
  • پن # 5 کیری آؤٹ ہوتا ہے ، جو آایسی 10 کی گنتی میں ہوتا ہے۔
  • پنوں 6 ، 7 ، 9 ، 10 ، 11 ، 12 ، 13 ڈسپلے آؤٹ پٹس ہیں۔
  • پن # 8 GND ہے۔
  • پن # 16 Vcc ہے۔
  • پن # 15 دوبارہ ترتیب دیا گیا ہے ، اگر ہم اس پن کو بلند کرتے ہیں تو گنتی صفر ہوجاتی ہے۔
  • پنوں # 4 اور # 14 استعمال نہیں ہیں۔

ڈسپلے کنکشن آریگرام:

LCD ڈسپلے کنکشن آریھ:

7 سیگمنٹ ڈسپلے کے کسی بھی GND پن کو زمین سے منسلک کیا جاسکتا ہے۔ آئی سی کو 5V سپلائی یا ارڈینو کے 5 وی آؤٹ پٹ پن سے چلنا چاہئے۔

صرف ایک ڈسپلے کے لئے مذکورہ بالا تدبیر ، پانچ دیگر ڈسپلے میں بھی اسی کو دہرائیں۔

باقی اسکیمیٹک یہ ہے:

اسٹاپواچ 7 سیگمنٹ ڈسپلے کے ساتھ ایردوینو کا استعمال کرتے ہوئے

سرکٹ 9V بیٹری سے چلائی جا سکتی ہے۔ یہاں دو بٹن فراہم کیے گئے ہیں ایک وقت شروع کرنے کے لئے اور دوسرا رکنے کے لئے۔ اردوینو پر ری سیٹ کے بٹن کو دبانے سے ، وقت کی گنتی کو ڈسپلے پر صفر پر دوبارہ ترتیب دیا جائے گا۔

دو پش بٹن پن # 2 اور # 3 سے جڑے ہوئے ہیں جو آریڈینو / ایٹمیگا 328 پی مائکروکنٹرولر کا ہارڈ ویئر رکاوٹ ہیں۔

آئیے سمجھیں کہ مداخلت کیا ہے:

مداخلت کی دو اقسام ہیں: ہارڈ ویئر میں خلل اور سافٹ ویئر مداخلت۔ یہاں ہم صرف ہارڈ ویئر میں مداخلت کا استعمال کررہے ہیں۔

ایک رکاوٹ مائکرو قابو کرنے والے کے لئے ایک اشارہ ہے ، جو مائکرو قابو پانے والے کو کسی واقعہ پر فوری طور پر جواب دینے میں کامیاب ہوجائے گا۔

اے ڈی میگا 328 پی مائکروقانونی پن # 2 اور # 3 کے ساتھ اردوینو بورڈ میں صرف دو ہارڈ ویئر مداخلت پن ہیں۔ ارڈینو میگا میں دو سے زیادہ ہارڈ ویئر کی مداخلت کی پن ہے۔

مائکروکونٹر ایک ہی وقت میں دو کام نہیں کرسکتے ہیں۔ مثال کے طور پر بٹن دبانے اور گنتی کے نمبروں کی جانچ کرنا۔

مائکروکانٹرولرز ایک ساتھ دو واقعات کو انجام نہیں دے سکتے ہیں ، اگر ہم بٹن پریس اور گنتی کی تعداد کو چیک کرنے کے لئے کوڈ لکھتے ہیں تو ، بٹن پریس کا پتہ تب ہی پائے گا جب مائکروکانٹرلر بٹن پریس کا پتہ لگانے والے کوڈ کا پتہ لگائے گا ، باقی وقت (نمبروں کو شمار کرتا ہے) بٹن کام نہیں کرتا ہے۔

لہذا بٹن پریس کی کھوج میں تاخیر ہوگی اور کسی وجہ سے اگر کوڈ عارضی طور پر رک گیا تو بٹن پریس کا پتہ کبھی نہیں چل سکتا ہے۔ اس طرح کے معاملات سے بچنے کے لئے مداخلت متعارف کروائی جاتی ہے۔

رکاوٹ سگنل کو ہمیشہ اعلی ترجیح دی جاتی ہے ، مرکزی فنکشن (کوڈ کی اہم لائنیں) رک جائیں گے اور اس خاص رکاوٹ کے لئے تفویض کردہ (کوڈ کا ایک اور ٹکڑا) فنکشن انجام دیں گے۔

اسٹاک واچ یا سیکیورٹی سسٹم وغیرہ جیسے نازک ایپلی کیشنز کے ل This یہ بہت ضروری ہے جہاں پروسیسر کو کسی واقعے کے جواب میں فوری کارروائی کرنے کی ضرورت ہوتی ہے۔

ارڈینو میں ہم ہارڈ ویئر کی مداخلت کو بطور تفویض کرتے ہیں:

منسلک متنازعہ (0 ، شروع ، اٹھنا)

  • '0' کا مطلب ہے کہ خلل ڈالنے والی صفر (مائکروکانٹرولرز میں ہر چیز صفر سے شروع ہوتی ہے) جو پن # 2 ہے۔
  • 'اسٹارٹ' رکاوٹ تقریب کا نام ہے ، آپ کسی بھی چیز کا نام لے سکتے ہیں۔
  • 'بڑھتی ہوئی' اگر پن # 2 (جس میں خلل صفر ہوتا ہے) اونچائی جاتا ہے تو ، رکاوٹ کا کام انجام دیتا ہے۔

منسلک متنازعہ (1 ، اسٹاپ ، اٹھنا)

  • '1' کا مطلب ہے کہ انٹراپٹ نمبر ایک جو پن # 3 ہے۔
  • 'سٹاپ' رکاوٹ کا نام ہے۔

ہم اب 'RISING' کو 'FALLING' سے بھی تبدیل کرسکتے ہیں ، جب اب جب رکاوٹ پن کم ہوتا ہے تو مداخلت کا عمل ختم ہوجاتا ہے۔

ہم “RISING” کو “CHANGE” سے بھی تبدیل کرسکتے ہیں ، اب جب بھی رکاوٹ پن اونچی یا نیچے سے نیچے جاتا ہے تو ، رکاوٹ کا عمل سرانجام دیتا ہے۔

رکاوٹ تقریب کو مندرجہ ذیل تفویض کیا جاسکتا ہے:

باطل شروع () // اسٹارٹ رکاوٹ کا نام ہے۔

{

// پروگرام یہاں

}

مداخلت کی تقریب ممکن طور پر مختصر ہونا ضروری ہے اور تاخیر () فنکشن استعمال نہیں کی جاسکتی ہے۔

اس سے یہ نتیجہ اخذ ہوتا ہے کہ اارڈوینو سے متعلق ہارڈ ویئر میں خلل ڈالنے والے سافٹ ویئر کی مداخلت کو آئندہ مضمون میں بیان کیا جائے گا۔

اب آپ جانتے ہیں کہ پنوں میں خلل ڈالنے کیلئے ہم نے اسٹارٹ اور پش بٹن کو کیوں جوڑا۔

سرکٹ کو مربوط کریں جیسے آریگرام باقی سرکٹ خود وضاحتی ہے۔

پروگرام:

//----------------Program Developed by R.GIRISH---------------//
int vmin = 0
int vsec = 0
int vms = 0
boolean Run = false
const int Min = 7
const int sec = 6
const int ms = 5
const int reset_pin = 4
void setup()
{
pinMode(Min, OUTPUT)
pinMode(sec, OUTPUT)
pinMode(ms, OUTPUT)
pinMode(reset_pin, OUTPUT)
digitalWrite(Min, LOW)
digitalWrite(sec, LOW)
digitalWrite(ms, LOW)
digitalWrite(reset_pin, HIGH)
digitalWrite(reset_pin, LOW)
attachInterrupt(0, start, RISING)
attachInterrupt(1, Stop, RISING)
}
void loop()
{
if (Run)
{
vms = vms + 1
digitalWrite(ms, HIGH)
delay(5)
digitalWrite(ms, LOW)
delay(5)
if (vms == 100)
{
vsec = vsec + 1
digitalWrite(sec, HIGH)
digitalWrite(sec, LOW)
vms = 0
}
if (vsec == 60)
{
vmin = vmin + 1
digitalWrite(Min, HIGH)
digitalWrite(Min, LOW)
digitalWrite(reset_pin, HIGH)
digitalWrite(reset_pin, LOW)
vsec = 0
}
}
}
void start()
{
Run = true
}
void Stop()
{
Run = false
}
//----------------Program Developed by R.GIRISH---------------//

اب یہ ضابطہ اخذ کرتا ہے۔

اسٹاپ واچ خاص طور پر ایتھلیٹوں کے لئے تیار کیا گیا

آخر میں ، آئیے سیکھیں کہ مذکورہ تصورات کیم کو اصل میں ان ایتھلیٹوں کے لئے کس طرح اپ گریڈ کیا جائے جو دوسروں پر انحصار کیے بغیر اپنی دوڑ کی مہارت کو تیار کرنا چاہتے ہیں اور ٹائمر / اسٹاپ واچ کو روکیں۔ اسٹاپ واچ کو شروع کرنے یا روکنے سے کہیں بہتر ہے کہ اپنی تحریک کا پتہ لگاکر ٹائمر کا خود بخود آغاز کریں ، جس سے ان کے رد عمل کا وقت بھی شامل ہوسکتا ہے۔

نوٹ: یہ پروجیکٹ ایک وقت میں ایک صارف کے ذریعہ احاطہ کرتا ہوا نقطہ ‘A’ سے 'B' کے درمیان وقت کی پیمائش کے لئے ڈیزائن کیا گیا ہے۔

سیٹ اپ میں دو لیزرز پر مشتمل ہوتا ہے جس کو نقطہ آغاز اور اختتامی نقطہ پر رکھا جاتا ہے ، دو ایل ڈی آر بھی دو لیزر ماڈیول کے مخالف رکھے جاتے ہیں۔ جب کھلاڑی ‘شروع’ لیزر میں رکاوٹ ڈالتا ہے تو اس کا حساب کتاب شروع ہونا شروع ہوتا ہے اور جب ایتھلیٹ اختتام کو پہنچتا ہے تو ، ’’ اختتامی ‘‘ لیزر اور ٹائمر رک جاتا ہے اور گذشتہ وقت کو دو پوائنٹس کے درمیان ظاہر کرتا ہے۔ یہ وہ طریقہ ہے جو مجوزہ خیال میں گزرے ہوئے وقت کی پیمائش کرنے کے لئے استعمال ہوتا ہے۔

آئیے سرکٹ کے ہر ایک جز کو تفصیل سے دیکھتے ہیں۔

اجزاء کام کرنے کی تفصیلات

سرکٹ کافی آسان رکھا گیا ہے ، اس میں 16 x 2 LCD ماڈیول ، کچھ ریزٹرز ، دو LDRs اور ایک پش بٹن ہوتا ہے۔

LCD اور ارڈوینو کے مابین انٹرفیس معیاری ہے کہ ہم LCD پر مبنی بہت سے دوسرے پروجیکٹس میں بھی اسی طرح کا رابطہ پاسکتے ہیں۔

لیزر رکاوٹوں کا پتہ لگانے کے لئے دو ینالاگ پن A0 اور A1 استعمال کیے جاتے ہیں۔ ینالاگ پن A2 پش بٹن کے ساتھ جڑا ہوا ہے جو اسٹاپ واچ کو بازو بنانے کے لئے استعمال ہوتا ہے۔

تین ریزسٹرس ، دو 4.7K اور ایک 10K پل ڈاون ریزسٹر ہیں جو ان پٹ کو کم رہنے میں مدد کرتا ہے۔

10K پوٹینومیٹر زیادہ سے زیادہ مرئیت کے ل L LCD ماڈیول میں اس کے برعکس ایڈجسٹ کرنے کے لئے فراہم کیا گیا ہے۔

مجوزہ سرکٹ نے لیزرز کے لئے غلطی کا پتہ لگانے کے طریقہ کار کے ساتھ ڈیزائن کیا ہے۔ اگر لیزر میں سے کوئی بھی غلطی ہے یا LDR کے ساتھ صحیح طریقے سے منسلک نہیں ہے تو ، یہ LCD ڈسپلے پر ایک خامی پیغام دکھاتا ہے۔

START اگر اسٹارٹ لیزر کام نہیں کررہا ہے تو ، یہ '' شروع 'لیزر کام نہیں کررہا ہے' دکھاتا ہے۔

ST اگر اسٹاپ لیزر کام نہیں کررہا ہے تو ، یہ '' اسٹاپ 'لیزر کام نہیں کررہا ہے' دکھاتا ہے۔

· اگر دونوں لیزر کام نہیں کررہے ہیں تو ، اس میں 'دونوں لیزرز کام نہیں کررہے ہیں' دکھاتا ہے۔

· اگر دونوں لیزرز ٹھیک طرح سے کام کر رہے ہیں تو ، اس سے ظاہر ہوتا ہے کہ 'دونوں لیزرز ٹھیک کام کر رہے ہیں'

غلطی کا پیغام اس وقت تک ظاہر ہوتا ہے جب تک کہ ایل ڈی آر کے ساتھ لیزر ماڈیول فکس یا سیدھ درست طریقے سے نہ ہوجائے۔

ایک بار جب یہ مرحلہ کسی مسئلے سے پاک ہو جائے تو ، نظام اسٹینڈ بائی موڈ میں چلا جاتا ہے اور 'سسٹم اسٹینڈ بائی' دکھاتا ہے۔ اس وقت صارف کسی بھی وقت پش بٹن دباکر سیٹ اپ کو بازوستعمال کرسکتا ہے۔

ایک پش بٹن دبایا جاتا ہے جس سے صارف صارف سے حرکت کا پتہ لگانے کے لئے تیار ہے اور دکھاتا ہے 'سسٹم تیار ہے'۔

رنر ’شروع‘ لیزر سے کچھ انچ کا فاصلہ اختیار کرسکتا ہے۔

اگر 'اسٹارٹ' لیزر میں خلل پڑتا ہے تو وقت گننا شروع ہوتا ہے اور دکھاتا ہے ”وقت کا حساب لگایا جا رہا ہے ……” وقت کا حساب بیک گراؤنڈ میں کیا جاتا ہے۔

گزرے ہوئے وقت کو اس وقت تک ظاہر نہیں کیا جائے گا جب تک رنر 'اسٹاپ' لیزر تک نہیں پہنچتا / مداخلت کرتا ہے۔ اس کی وجہ یہ ہے کہ ایل سی ڈی پر گذرتے وقت کو روایتی اسٹاپواچ کی طرح ظاہر کرنا ، مائکروکانٹرولر میں عمل درآمد کے ل several کئی اضافی ہدایات کی ضرورت ہوتی ہے ، جو سیٹ اپ کی درستگی کو نمایاں طور پر خراب کرتی ہے۔

نوٹ: ریڈنگز کو صاف کرنے کے لئے آرڈوینو پر ری سیٹ بٹن دبائیں۔

چلنے والی پٹری پر سرکٹ کیسے طے کریں:

براہ کرم ایل ڈی آر اور آرڈوینو سرکٹ کے مابین جڑنے کے ل thick موٹی تاروں کا استعمال کریں کیونکہ ان دونوں کے مابین کئی میٹر کا فاصلہ ہوسکتا ہے ، اور ولٹیج میں نمایاں طور پر کمی نہیں آسکتی ہے۔ LDR1 اور LDR2 کے درمیان فاصلہ کچھ سو میٹر زیادہ سے زیادہ ہوسکتا ہے۔

ایل ڈی آر کو کیسے ماؤنٹ کریں:

ایل ڈی آر کو کھوکھلی مبہم ٹیوب کے اندر لگایا جانا چاہئے اور سامنے کا حصہ بھی ڈھانپنا چاہئے اور لیزر بیم کو اندر جانے کی اجازت دینے کے لئے صرف چند ہی ملی میٹر قطر والا سوراخ بنایا گیا ہے۔

ایل ڈی آر کو براہ راست سورج کی روشنی سے بچانا ضروری ہے کیونکہ وہ لیزر بیم اور روشنی کے دیگر ذرائع سے مختلف نہیں ہوسکتا ہے اور صارف سے حرکت رجسٹر نہیں کرسکتا ہے۔

پروگرام کا کوڈ:

//-------- Program developed by R.GIRISH-------//
#include
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()
}
//-------- Program developed by R.GIRISH-------//

مصنف کی پروٹو ٹائپ:

سپلٹ ٹائمر کی سہولت کے ساتھ اپ گریڈ کرنا

اسپلٹ ٹائمر والا مجوزہ خودکار اسٹاپواچ سرکٹ خودکار اسٹاپواچ سرکٹ کا توسیع ہے ، جہاں اسٹاپواچ خود بخود وقت پر نظر رکھتا ہے جیسے ہی سولو رنر اسٹارٹ پوائنٹ چھوڑ دیتا ہے اور ٹائمر رک جاتا ہے اور گذشتہ وقت کو دکھاتا ہے جیسے رنر اختتامی نقطہ تک پہنچ جاتا ہے۔

تعارف

اس منصوبے کی تجویز اس ویب سائٹ کے ایک مسرور قارئین مسٹر اینڈریو واکر نے کی تھی۔

اس پروجیکٹ میں ہم سولو رنر کے الگ الگ وقت کی پیمائش کے لئے 4 مزید ایل ڈی آر متعارف کروا رہے ہیں۔ مجموعی طور پر ان میں 6 ایل ڈی آر موجود ہیں جن کو دونوں کے درمیان یکساں فاصلے کے ساتھ یا حالات اور صارف کی پسند پر منحصر ہے۔

4 LDRs کے اضافے کے علاوہ زیادہ تر ہارڈ ویئر میں کوئی تبدیلی نہیں کی جاتی ہے ، لیکن اس کوڈ میں زبردست ترمیم ہوچکی ہے۔

اسکیمٹک ڈایاگرام سپلٹ ٹائم دکھا رہا ہے:

سپلٹ ٹائم کے ساتھ خودکار اسٹاپواچ

مذکورہ بالا سرکٹ کچھ اجزاء اور ابتدائی دوستانہ پر مشتمل ہے۔ مزید وضاحت کی ضرورت نہیں ہے ، سرکٹ آریگرام کے مطابق صرف تار۔

ایل ڈی آر کو کس طرح تار لگائیں:

LDR 2 مین سرکٹ ڈایاگرام پر متوازی طور پر 4 مزید LDRs متصل پر دکھایا گیا ہے جیسا کہ مذکورہ خاکہ میں دکھایا گیا ہے۔

لے آؤٹ ڈایاگرام:

مندرجہ بالا لیزر رکھنے کے لئے بنیادی انتظام ہے۔ براہ کرم نوٹ کریں کہ ایل ڈی آر کے درمیان فاصلہ ٹریک کی لمبائی کے لحاظ سے صارف کا انتخاب ہوسکتا ہے۔

پروگرام:

//------------Developed By R.Girish-------//
#include
LiquidCrystal lcd(12,11,5,4,3,2)
const int start = A2
const int strt = A0
const int END = A1
boolean y = true
boolean x = true
unsigned int s1 = 0
unsigned int s2 = 0
unsigned int s3 = 0
unsigned int s4 = 0
unsigned int s5 = 0
unsigned int m1 = 0
unsigned int m2 = 0
unsigned int m3 = 0
unsigned int m4 = 0
unsigned int m5 = 0
unsigned int ms1 = 0
unsigned int ms2 = 0
unsigned int ms3 = 0
unsigned int ms4 = 0
unsigned int ms5 = 0
unsigned int S = 0
unsigned int M = 0
unsigned int mS = 0
unsigned int count = 0
void setup()
{
lcd.begin(16,2)
pinMode(start, INPUT)
pinMode(strt, INPUT)
pinMode(END, INPUT)
if(digitalRead(strt) == LOW)
{
while(true)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Start Laser is')
lcd.setCursor(0,1)
lcd.print(' not working')
delay(2500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Please align the')
lcd.setCursor(0,1)
lcd.print('lasers properly')
delay(2500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('and press reset.')
delay(2500)
}
}
if(digitalRead(END) == LOW)
{
while(true)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('All 5 lasers')
lcd.setCursor(0,1)
lcd.print('are misaligned')
delay(2500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Please align the')
lcd.setCursor(0,1)
lcd.print('lasers properly')
delay(2500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('and press reset.')
delay(2500)
}
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('-System Standby-')
lcd.setCursor(0,1)
lcd.print('Press Start btn')
if(digitalRead(start) == LOW)
{
while(x)
{
if(digitalRead(start) == HIGH)
{
x = false
}
}
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('System is ready')
lcd.setCursor(0,1)
lcd.print('----------------')
while(y)
{
if(digitalRead(strt) == LOW)
{
y = false
}
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Time is being')
lcd.setCursor(0,1)
lcd.print('Calculated....')
mS = 12
}
void loop()
{
delay(1)
mS = mS + 1
if(mS==1000)
{
mS=0
S = S+1
}
if(S==60)
{
S=0
M = M+1
}
if(digitalRead(END) == LOW)
{
count = count + 1
if(count == 1)
{
ms1 = mS
s1 = S
m1 = M
delay(500)
}
if(count == 2)
{
ms2 = mS
s2 = S
m2 = M
delay(500)
}
if(count == 3)
{
ms3 = mS
s3 = S
m3 = M
delay(500)
}
if(count == 4)
{
ms4 = mS
s4 = S
m4 = M
delay(500)
}
if(count == 5)
{
ms5 = mS
s5 = S
m5 = M
Display()
}
}
}
void Display()
{
ms1 = ms1 + 500
ms2 = ms2 + 500
ms3 = ms3 + 500
ms4 = ms4 + 500
ms5 = ms5 + 500
if(ms1 >= 1000)
{
ms1 = ms1 - 1000
s1 = s1 + 1
if(s1 >= 60)
{
m1 = m1 + 1
}
}
if(ms2 >= 1000)
{
ms2 = ms2 - 1000
s2 = s2 + 1
if(s2 >= 60)
{
m2 = m2 + 1
}
}
if(ms3 >= 1000)
{
ms3 = ms3 - 1000
s3 = s3 + 1
if(s3 >= 60)
{
m3 = m3 + 1
}
}
if(ms4 >= 1000)
{
ms4 = ms4 - 1000
s4 = s4 + 1
if(s4 >= 60)
{
m4 = m4 + 1
}
}
if(ms5 >= 1000)
{
ms5 = ms5 - 1000
s5 = s5 + 1
if(s5 >= 60)
{
m5 = m5 + 1
}
}
while(true)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Spilt 1)')
lcd.print(m1)
lcd.print(':')
lcd.print(s1)
lcd.print(':')
lcd.print(ms1)
lcd.setCursor(0,1)
lcd.print('Split 2)')
lcd.print(m2)
lcd.print(':')
lcd.print(s2)
lcd.print(':')
lcd.print(ms2)
delay(2500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Split 3)')
lcd.print(m3)
lcd.print(':')
lcd.print(s3)
lcd.print(':')
lcd.print(ms3)
lcd.setCursor(0,1)
lcd.print('Split 4)')
lcd.print(m4)
lcd.print(':')
lcd.print(s4)
lcd.print(':')
lcd.print(ms4)
delay(2500)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Split 5)')
lcd.print(m5)
lcd.print(':')
lcd.print(s5)
lcd.print(':')
lcd.print(ms5)
lcd.setCursor(0,1)
lcd.print('---Press Reset--')
delay(2500)
}
}
//------------Developed By R.Girish-------//

اس خودکار اسٹاپواچ کو کیسے چلائیں:

completed مکمل سیٹ اپ کے ساتھ ، پہلے لیزرز کو پاور کریں اور پھر اگلے میں اردوینو سرکٹ آن کریں۔
all اگر تمام لیزر LDRs کے ساتھ مناسب طریقے سے منسلک ہیں تو ، ڈسپلے میں غلطی والے پیغامات کے ساتھ اشارہ نہیں کیا جائے گا۔ اگر کوئی ہے تو ، براہ کرم انہیں صحیح طریقے سے سیدھ کریں۔
• اب سرکٹ 'سسٹم اسٹینڈ بائی ہے' دکھاتا ہے۔ اب 'اسٹارٹ' بٹن دبائیں اور اس میں 'سسٹم تیار ہے' دکھائے گا۔
this اس مرحلے پر جب سولو پلیئر ایل ڈی آر 1 لائٹ بیم کو روکتا ہے تو ، ٹائمر شروع ہوتا ہے اور یہ دکھاتا ہے کہ 'وقت کا حساب لگایا جارہا ہے۔'
as جیسے ہی کھلاڑی اختتامی نقطہ یعنی ایل ڈی آر 6 تک پہنچتا ہے ، ٹائمر رک جاتا ہے اور یہ سرکٹ کے ذریعہ ریکارڈ کردہ 5 تقسیم وقت کو ظاہر کرتا ہے۔
• صارف کو ٹائمر کو دوبارہ ترتیب دینے کے لئے ارڈوینو پر ری سیٹ والے بٹن کو دبانا ہوگا۔
روایتی اسٹاپواچ کی طرح یہ خودکار اسٹاپواچ ڈسپلے پر براہ راست وقت کیوں نہیں دکھاسکتا (بلکہ اس سے ایک مستحکم متن دکھاتا ہے '' وقت کا حساب لگایا جارہا ہے…. ')؟
وقت کو اصل وقت میں ظاہر کرنے کے لئے ، ارڈینو کو LCD ڈسپلے کیلئے اضافی ہدایات پر عمل درآمد کرنا پڑتا ہے۔ اس سے کوڈ کے اہم وقت سے باخبر رہنے کے کچھ ملی سیکنڈ میں تاخیر سے کچھ مائیکرو سیکنڈز شامل ہوجائیں گے ، جس سے غلط نتائج برآمد ہوں گے۔

اگر آپ کے پاس مزید کوئی سوالات ہیں تو ، براہ کرم تبصرہ سیکشن کے ذریعے اظہار کریں۔




پچھلا: آرڈینوو LCD کی پیڈ شیلڈ (SKU: DFR0009) ڈیٹا شیٹ اگلا: ارڈینوو بے ترتیب آرجیبی لائٹ جنریٹر سرکٹ