রানার, ক্রীড়াবিদ এবং ক্রীড়াবিদদের জন্য একটি স্বয়ংক্রিয় স্টপওয়াচ তৈরি করা

সমস্যাগুলি দূর করার জন্য আমাদের উপকরণটি ব্যবহার করে দেখুন





এই পোস্টে আমরা স্টপওয়াচটি তৈরি করতে যা যা স্বয়ংক্রিয়ভাবে টাইমার শুরু হয় যখন রানার চালানো শুরু করে এবং টাইমারটি স্টেপল যখন রানার শেষের দিকে পৌঁছে যায়। শুরু এবং শেষের পয়েন্টের মধ্যে অতিবাহিত সময়টি 16 x 2 এলসিডিতে প্রদর্শিত হয়।

প্রথমে কীভাবে একটি সহজ এবং অত্যন্ত নির্ভুল আরডুইনো স্টপ ওয়াচ সার্কিটটি কনফিগার করতে হয় তা শিখতে শুরু করি।



স্টপওয়াচ হ'ল একটি ম্যানুয়ালি নিয়ন্ত্রিত টাইম ক্লক ডিভাইস যা এটি সক্রিয় হওয়ার সময় নির্দিষ্ট সময় থেকে শুরু হয়ে যেতে পারে এবং এটি অবশেষে নিষ্ক্রিয় হয়ে যায় এমন সময় দৈর্ঘ্য পরিমাপের জন্য ডিজাইন করা হয়েছিল same একই ডিভাইসের বৃহত রূপটি বলা হয় স্টপ ক্লক যা দূর থেকে ক্রিয়া পর্যবেক্ষণ করার জন্য ব্যবহৃত হয় এবং সাধারণত স্পোর্টস স্টেডিয়ামে পাওয়া যায় ইত্যাদি

মেকানিকাল বনাম বৈদ্যুতিন স্টপওয়াচ

এর আগে traditionalতিহ্যবাহী মেকানিকাল হ্যান্ডহেল্ড স্টপওয়াচটি বেশি প্রচলিত ছিল এবং এটি সবার জন্য ব্যবহৃত হয়েছিল।



যান্ত্রিক সিস্টেমে আমাদের স্টপ ওয়াচ ফাংশনগুলি সম্পাদন করার জন্য দুটি প্রেস বোতাম ছিল। একটি একবার চাপ দিয়ে স্টপ ক্লক শুরু করার জন্য, এবং সময়টি বন্ধ করার জন্য আবার সময় কাটানোর জন্য আবার সময় কাটানোর জন্য রেকর্ড করার জন্য .... দ্বিতীয় বোতামটি ঘড়িটি শূন্যে পুনরায় সেট করার জন্য ব্যবহৃত হয়েছিল।

মেকানিকাল স্টপ ক্লকটি মূলত বসন্ত বিদ্যুতের মাধ্যমে কাজ করেছিল, যার জন্য ঘড়ি ডিভাইসের শীর্ষে প্রদত্ত নুরল্ড নকটি ঘুরিয়ে দিয়ে ম্যানুয়ালি ওয়াইন্ডিং করা দরকার।

তবে আধুনিক ডিজিটাল স্টপ ঘড়ির তুলনায় যান্ত্রিক প্রকারগুলি মিলিসেকেন্ডের পরিসরে উল্লেখযোগ্যভাবে আদিম এবং অসম্পূর্ণ হিসাবে বিবেচিত হতে পারে।

একটি আরডুইনো ব্যবহার করা

এবং আজ মাইক্রোকন্ট্রোলারের আবির্ভাবের সাথে এই স্টপ ঘড়িগুলি মাইক্রোসেকেন্ড পরিসরে অত্যন্ত নির্ভুল এবং নির্ভরযোগ্য হয়ে উঠেছে।

এখানে উপস্থাপিত আরডুইনো স্টপ ওয়াচ সার্কিট হ'ল এই আধুনিক মাইক্রোকন্ট্রোলার চালিত ডিজাইনের মধ্যে একটি যা সবচেয়ে সঠিক যা বাণিজ্যিক আধুনিক স্টপ ওয়াচ গ্যাজেটের সাথে সমান হতে পারে বলে আশা করা যায়।

আসুন কীভাবে প্রস্তাবিত আরডিনো স্টপ ক্লক সার্কিট তৈরি করবেন তা শিখি:

আপনি নির্মাণের জন্য নিম্নলিখিত বিল উপকরণ প্রয়োজন হবে:

হার্ডওয়্যার প্রয়োজনীয়

একটি আরডুইনো এলসিডি কীপ্যাড শিল্ড (এসকিউ: ডিএফআর 10009)

একটি আরডুইনো এলসিডি কীপ্যাড শিল্ড (এসকিউ: ডিএফআর 10009)

একটি আরডুইনো ওয়ান বোর্ড

আরডুইনো ইউএনও

একটি আরডুইনো ইউএসবি তারের

আরডুইনো ইউএসবি কেবল

একবার আপনি উপরের উপাদানটি অর্জন করে একে অপরের সাথে জড়িয়ে ফেললে এটি কেবল আপনার আরডুইনো বোর্ডে নিম্নলিখিত প্রদত্ত স্কেচ কোডটি কনফিগার করার এবং স্টপ ক্লক ফাংশনের যাদু দেখার বিষয়।

কোড

/*
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 সেগমেন্টের এলইডি ডিসপ্লে এবং আরডুইনো ব্যবহার করে স্টপওয়াচ সার্কিট নির্মাণ সম্পর্কিত বিশদটি নিয়ে এগিয়ে চলুন। আমরা এই প্রকল্পটি বোঝার জন্য গুরুত্বপূর্ণ বাধা এবং ডিসপ্লে ড্রাইভার আইসি সম্পর্কিত ধারণাগুলি অনুসন্ধান করব। এই প্রকল্পটির প্রস্তাব মিঃ আবু-হাফস যিনি এই ওয়েবসাইটটির আগ্রহী পাঠকদের একজন।

যেমন আমরা ইতিমধ্যে জানি যে স্টপওয়াচ এমন একটি ডিভাইস যা কয়েক ঘন্টা থেকে মিলি সেকেন্ডের পরিসীমা (বেশিরভাগ ক্ষেত্রে) সংক্ষিপ্ত সময়ের ট্র্যাক করতে সহায়তা করে। স্টপওয়াচের কার্যকারিতা সহ সজ্জিত প্রায় সমস্ত সস্তা ডিজিটাল কব্জি ঘড়ি, তবে কোনও ঘড়িই আমাদের নিজের জন্য একটি তৈরি করার উত্সাহ দিতে পারে না এবং se সেগমেন্টের এলইডি ডিসপ্লে সহ স্টপ ওয়াচটি পাওয়া ব্যতিক্রমী।

মিঃ আবু-হাফস আমাদের 4 টি প্রদর্শন, একটি মিনিটের জন্য দুটি এবং সেকেন্ডের জন্য দুটি (এমএম: এসএস) কনফিগারেশনের স্টপওয়াচটি নকশা করার পরামর্শ দিয়েছিলেন। তবে আমাদের বেশিরভাগের পক্ষে এটি সম্ভবত একটি সম্ভাব্য নকশা নাও থাকতে পারে, তাই আমরা মিলিসেকেন্ড পরিসরের জন্য আরও দুটি প্রদর্শন যুক্ত করেছি তাই এখন প্রস্তাবিত নকশাটি এমএম: এসএস: এমএস কনফিগারেশনে থাকবে।

আপনার যদি কেবল কোনও কারণে এমএম: এসএস কনফিগারেশন প্রয়োজন হয় তবে আপনার মিলিসেকেন্ড পরিসীমা 7 বিভাগের প্রদর্শন এবং এর ড্রাইভার আইসি সংযোগ করার দরকার নেই, সার্কিটের পুরো কার্যকারিতা এখনও অকার্যকর থাকবে।

সার্কিট:

প্রস্তাবিত স্টপওয়াচটিতে ছয়টি আইসি 4026 রয়েছে যা সাতটি সেগমেন্ট ডিসপ্লে ড্রাইভার, ছয় 7 টি সেগমেন্টের এলইডি ডিসপ্লে, একটি আরডিনো বোর্ড, বেশ কয়েকটা পুশ বোতাম এবং 10 কে রেজিস্টার রয়েছে।

এখন আসুন আমরা বুঝতে পারি কীভাবে আইসি 4026 থেকে 7 বিভাগে প্রদর্শন করতে হবে।

7 বিভাগের প্রদর্শনটি যে কোনও রঙের কোনও সাধারণ ক্যাথোড প্রদর্শন হতে পারে। 7 বিভাগের প্রদর্শনটি 5 ভি সরবরাহ দ্বারা সহজেই মারা যেতে পারে, সুতরাং ডিসপ্লেটির প্রতিটি বিভাগে 330 ওহম প্রতিরোধক বাধ্যতামূলক।

এখন আসুন আইসি 4026 এর পিন ডায়াগ্রামটি দেখুন:

  • পিন # 1 হ'ল ক্লক ইনপুট।
  • পিন # 2 হ'ল ক্লক অক্ষম, এই পিনটি বেশি হলে এটি প্রদর্শনে গণনা অক্ষম করে।
  • পিন # 3 প্রদর্শন সক্ষম হয় যদি এই পিনটি কম থাকে তবে প্রদর্শনটি টিউন করা হবে এবং বিপরীতে।
  • পিন # 5 বহন করে, যা আইসি 10 এর গণনা করলে উচ্চ হয়ে যায়।
  • পিনগুলি 6, 7, 9, 10, 11, 12, 13 ডিসপ্লে আউটপুট।
  • পিন # 8 হ'ল জিএনডি।
  • পিন # 16 ভিসি।
  • পিন # 15 পুনরায় সেট করা হয়, যদি আমরা এই পিনটি উচ্চ করি তবে গণনাটি শূন্যে পরিণত হয়।
  • পিনগুলি # 4 এবং # 14 ব্যবহৃত হয় না।

সংযোগ চিত্রটি প্রদর্শন করুন:

এলসিডি ডিসপ্লে সংযোগ চিত্র:

7 টি সেগমেন্ট ডিসপ্লেতে যে কোনও একটি জিএনডি পিন স্থলভাগে সংযুক্ত হতে পারে। আইসি অবশ্যই 5 ভি সরবরাহ বা আরডুইনোর 5 ভি আউটপুট পিন থেকে চালিত হওয়া উচিত।

কেবলমাত্র একটি ডিসপ্লেতে উপরের স্কিম্যাটিক, অন্য পাঁচটি ডিসপ্লেতে একই পুনরাবৃত্তি করুন।

এখানে অন্যান্য স্কিম্যাটিকটি রয়েছে:

7 টি বিভাগের প্রদর্শন সহ আরডুইনো ব্যবহার করে স্টপওয়াচ

9V ব্যাটারি থেকে সার্কিট চালিত হতে পারে। দুটি সময় এখানে শুরু করার জন্য এবং অন্যটি থামার জন্য দেওয়া হয়েছে দুটি বোতাম। আরডুইনোতে রিসেট বোতাম টিপে, সময় গণনাটি শূন্যে প্রদর্শনে পুনরায় সেট করা হবে।

দুটি পুশ বোতামটি পিন # 2 এবং # 3 এর সাথে সংযুক্ত রয়েছে যা আরডুইনো / এটমেগ 328 পি মাইক্রোকন্ট্রোলারের হার্ডওয়্যার বিঘ্নিত।

বাধা কী তা বুঝতে দিন:

দুটি ধরণের বাধা রয়েছে: হার্ডওয়্যার বিঘ্নিত এবং সফ্টওয়্যার বিঘ্নিত। এখানে আমরা কেবলমাত্র হার্ডওয়্যার বিঘ্নিত ব্যবহার করছি।

একটি বাধা হ'ল মাইক্রোকন্ট্রোলারের একটি সংকেত, যা মাইক্রোকন্ট্রোলারকে কোনও ইভেন্টে তাত্ক্ষণিক প্রতিক্রিয়া দেখাবে।

এটিমেগা 328 পি মাইক্রোকন্ট্রোলার পিন # 2 এবং # 3 সহ আরডুইনো বোর্ডগুলিতে কেবলমাত্র দুটি হার্ডওয়্যার বিঘ্নিত পিন রয়েছে। আরডুইনো মেগায় দুটিরও বেশি হার্ডওয়্যার বিঘ্নিত পিন রয়েছে।

মাইক্রোকন্ট্রোলাররা একই সাথে দুটি ফাংশন করতে পারে না। উদাহরণস্বরূপ বোতাম টিপুন এবং গণনা নম্বর পরীক্ষা করা।

মাইক্রোকন্ট্রোলাররা একই সাথে দুটি ঘটনা সম্পাদন করতে পারে না, যদি আমরা বোতাম টিপুন এবং গণনা সংখ্যা পরীক্ষা করার জন্য একটি কোড লিখি তবে মাইক্রোকন্ট্রোলার কেবল তখনই কোডটির বোতাম টিপুন সনাক্তকরণ অংশটি পড়বে, বাকি সময়গুলি (সংখ্যা গণনা করে) বোতামটি কাজ করে না।

সুতরাং বোতাম টিপুন সনাক্ত করতে বিলম্ব হবে এবং কোনও কারণে যদি কোডটি অস্থায়ীভাবে বন্ধ হয়ে যায়, বোতাম টিপটি কখনই সনাক্ত করা যায় না। এ জাতীয় সমস্যা এড়ানোর জন্য বাধা প্রবর্তন করা হয়।

বিঘ্নিত সংকেতকে সর্বদা সর্বোচ্চ অগ্রাধিকার দেওয়া হয়, মূল ফাংশন (কোডের মূল লাইনগুলি) থামানো হবে এবং সেই নির্দিষ্ট বাধার জন্য নির্ধারিত (কোডের অন্য একটি অংশ) কার্য সম্পাদন করবে।

স্টপওয়াচ বা সুরক্ষা ব্যবস্থা ইত্যাদির মতো সমালোচনামূলক অ্যাপ্লিকেশনগুলির জন্য এটি অত্যন্ত গুরুত্বপূর্ণ, যেখানে কোনও ইভেন্টের প্রতিক্রিয়া হিসাবে প্রসেসরের তাত্ক্ষণিক পদক্ষেপ নেওয়া দরকার।

আরডুইনোতে আমরা হার্ডওয়্যার বিঘ্নিত হিসাবে নিযুক্ত করে:

সংযুক্তি আন্তঃবিযুক্ত (0, শুরু, উত্থাপন)

  • '০' এর অর্থ হ'ল বিঘ্নিত সংখ্যা শূন্য (মাইক্রোকন্ট্রোলারে সমস্ত কিছুই শূন্য থেকে শুরু হয়) যা পিন # 2।
  • 'স্টার্ট' হ'ল বাধা ফাংশনের নাম, আপনি এখানে যে কোনও নাম রাখতে পারেন।
  • 'উত্থাপন' যদি পিন # 2 (যা বিঘ্নিত শূন্য হয়) বেশি যায়, বাধা ফাংশনটি কার্যকর করে।

সংযুক্তি ইন্ট্যারাপ্ট (1, স্টপ, রিসিং)

  • '1' এর অর্থ হ'ল বিঘ্নিত এক নম্বর যা পিন # 3।
  • 'থামান' বাধা দেওয়ার নাম।

আমরা এখন 'ফলসিং' দিয়ে 'রাইজিং' প্রতিস্থাপন করতে পারি, যখন এখন বাধা পিনটি বাধা ফাংশনটি কম সঞ্চালিত হয়।

আমরা 'চেঞ্জ' দিয়ে 'রাইজিং' প্রতিস্থাপন করতে পারি, এখনই যখনই বাধা পিনটি উচ্চ থেকে নীচে বা নীচে যায়, বাধা ফাংশন কার্যকর করে।

বাধা ফাংশন নিম্নলিখিত হিসাবে বরাদ্দ করা যেতে পারে:

অকার্যকর সূচনা () // স্টার্ট বাধাদানের নাম।

{

// প্রোগ্রাম এখানে

}

বাধা ফাংশনটি যথাসম্ভব সংক্ষিপ্ত হতে হবে এবং বিলম্ব () ফাংশনটি ব্যবহার করা যাবে না।

এটি শেষ করেছে যে আরডুইনো সম্পর্কিত হার্ডওয়্যার বিঘ্নিত সফ্টওয়্যার বিঘ্নিত ভবিষ্যতের নিবন্ধে ব্যাখ্যা করা হবে।

এখন আপনি জানেন যে আমরা পিনগুলিকে বাধা দেওয়ার জন্য কেন স্টার্ট এবং পুশ বোতামগুলি সংযুক্ত করেছি।

সার্কিটের ডায়াগ্রাম অনুসারে সার্কিটটিকে সংযুক্ত করুন বাকী সার্কিট স্ব-বর্ণনামূলক।

কার্যক্রম:

//----------------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---------------//

এখন যে কোড শেষ।

অ্যাথলিটদের জন্য স্টপওয়াচ বিশেষভাবে বিকাশিত

পরিশেষে, আসুন শিখুন যে উপরোক্ত ধারণাগুলি ক্যাম আসলে কীভাবে এমন অ্যাথলিটদের জন্য আপগ্রেড করা হবে যারা প্রয়োজনীয় প্রারম্ভিকতার জন্য অন্যের উপর নির্ভর না করে তাদের চলমান দক্ষতা বিকাশ করতে চায় এবং টাইমার / স্টপওয়াচ বন্ধ করে দেয়। স্টপওয়াচটি শুরু / থামানোর চেয়ে কারও নিজের গতি সনাক্ত করে টাইমারটি স্বয়ংক্রিয়ভাবে শুরু করা ভাল, যা তাদের প্রতিক্রিয়ার সময়ও যুক্ত করতে পারে।

দ্রষ্টব্য: এই প্রকল্পটি একবারে এক ব্যবহারকারী দ্বারা আচ্ছাদিত বিন্দু ‘এ’ থেকে ‘বি’ পয়েন্টের মধ্যে সময় পরিমাপের জন্য ডিজাইন করা হয়েছে।

সেটআপটিতে দুটি লেজার থাকে যা শুরু করার সময় এবং শেষ পয়েন্টে রাখা হয়, দুটি এলডিআর দুটি লেজার মডিউলের বিপরীতেও স্থাপন করা হয়। ক্রীড়াবিদ যখন ‘স্টার্টিং’ লেজারকে বাধা দেয় তখন সময় গণনা শুরু হয় এবং অ্যাথলেট যখন পৌঁছায় তখন ‘শেষ’ লেজার এবং টাইমার থামিয়ে দেয় এবং দুটি পয়েন্টের মধ্যে বিচ্ছিন্ন সময়টি প্রদর্শন করে। প্রস্তাবিত ধারণায় অতিবাহিত সময় পরিমাপ করতে এই পদ্ধতিটি ব্যবহার করা হয়।

আসুন সার্কিটের প্রতিটি উপাদানকে বিশদে দেখি।

উপাদানগুলির কাজের বিবরণ

সার্কিটটি মোটামুটি সহজভাবে রাখা হয়েছে, এতে 16 x 2 এলসিডি মডিউল, কয়েকটি প্রতিরোধক, দুটি এলডিআর এবং একটি পুশ বোতাম রয়েছে।

এলসিডি এবং আরডুইনোর মধ্যে ইন্টারফেসটি স্ট্যান্ডার্ড, আমরা অন্যান্য অনেক এলসিডি ভিত্তিক প্রকল্পগুলিতে অনুরূপ সংযোগ খুঁজে পেতে পারি।

দুটি অ্যানালগ পিন A0 এবং A1 লেজার বাধা সনাক্ত করতে ব্যবহৃত হয়। অ্যানালগ পিন এ 2 টি পুশ বোতামের সাথে সংযুক্ত যা স্টপওয়াচটি আর্ম করার জন্য ব্যবহৃত হয়।

তিনটি প্রতিরোধক, দুটি 4.7 কে এবং একটি 10 ​​কে হ'ল টান ডাউন ডাউন প্রতিরোধক যা ইনপুট পিনগুলি কম রাখতে সহায়তা করে।

অনুকূল দৃশ্যমানতার জন্য 10 কে পেনটিওমিটার এলসিডি মডিউলে কনট্রাস্ট সামঞ্জস্য করার জন্য সরবরাহ করা হয়।

প্রস্তাবিত সার্কিট লেজারগুলির জন্য ত্রুটি সনাক্তকরণ ব্যবস্থার নকশা করেছে। যদি কোনও লেজারের ত্রুটি থাকে বা এলডিআরের সাথে সঠিকভাবে সংযুক্ত না হয় তবে এটি এলসিডি ডিসপ্লেতে একটি ত্রুটি বার্তা প্রদর্শন করে।

START স্টার্ট লেজারটি যদি কাজ না করে তবে এটি প্রদর্শিত হয় '' শুরু 'লেজারটি কাজ করছে না'

ST যদি স্টপ লেজারটি কাজ না করে তবে এটি '' থামান 'লেজারটি কাজ করছে না তা প্রদর্শন করে'

Both উভয় লেজারগুলি যদি কাজ করে না তবে এটি প্রদর্শিত হয় 'উভয় লেজারই কাজ করছে না'

Both যদি উভয় লেজারগুলি সঠিকভাবে কাজ করে তবে এটি 'উভয় লেজারগুলি ঠিকঠাক কাজ করছে' প্রদর্শন করে

লেজার মডিউল স্থির বা এলডিআর দ্বারা সঠিকভাবে সারিবদ্ধ না হওয়া পর্যন্ত ত্রুটি বার্তা উপস্থিত হয়।

এই পদক্ষেপটি সমস্যা মুক্ত হওয়ার পরে, সিস্টেমটি স্ট্যান্ডবাই মোডে চলে যায় এবং '-সিস্টেমে স্ট্যান্ডবাই-' প্রদর্শন করে। এই মুহুর্তে ব্যবহারকারী যেকোন সময় পুশ বোতাম টিপে সেটআপটি আর্ম করতে পারেন।

একটি টিপুন বোতাম টিপানো হয়েছে ব্যবহারকারী সিস্টেমের গতি সনাক্ত করতে সিস্টেম প্রস্তুত এবং 'সিস্টেম প্রস্তুত' প্রদর্শন করে।

রানার ‘স্টার্ট’ লেজার থেকে কয়েক ইঞ্চি দূরে থাকতে পারে।

যদি 'শুরু' লেজার ব্যাহত হয় তবে সময় গণনা শুরু হয় এবং প্রদর্শিত হয় 'সময় গণনা করা হচ্ছে .....' সময়টি পিছনের গ্রাউন্ডে গণনা করা হয়।

রানার 'স্টপ' লেজারে পৌঁছা / বাধা না দেওয়া অবধি সময় ব্যয় হবে না। এটি কারণ হ'ল এলসিডিতে প্রবাহিত সময়কে প্রথাগত স্টপওয়াচের মতো প্রদর্শন করার জন্য, মাইক্রোকন্ট্রোলারটিতে কার্যকর করার জন্য বেশ কয়েকটি অতিরিক্ত নির্দেশাবলীর প্রয়োজন হয়, যা সেটআপটির যথার্থতাটিকে উল্লেখযোগ্যভাবে হ্রাস করে।

দ্রষ্টব্য: রিডিংগুলি সাফ করতে আরডুইনোতে রিসেট বোতাম টিপুন।

চলমান ট্র্যাকটিতে কীভাবে সার্কিট সেট করবেন:

এলডিআর এবং আরডুইনো সার্কিটের মধ্যে সংযোগ স্থাপনের জন্য দয়া করে ঘন তারগুলি ব্যবহার করুন কারণ এই দুটির মধ্যে দূরত্ব কয়েক মিটার দূরে থাকতে পারে এবং ভোল্টেজ অবশ্যই উল্লেখযোগ্যভাবে কমবে না। এলডিআর 1 এবং এলডিআর 2 এর মধ্যে দূরত্ব কয়েকশ মিটার সর্বোচ্চ হতে পারে।

কিভাবে এলডিআর মাউন্ট করবেন:

এলডিআর অবশ্যই ফাঁকা অস্বচ্ছ টিউবের ভিতরে মাউন্ট করা উচিত এবং সামনের অংশটি অবশ্যই আবৃত করা উচিত এবং লেজার বিমটি প্রবেশ করতে দেওয়ার জন্য কয়েকটি মিলিমিটার ব্যাসযুক্ত একটি গর্ত কেবল তৈরি করা উচিত।

এলডিআর অবশ্যই সরাসরি সূর্যের আলো থেকে রক্ষা করা উচিত কারণ এটি লেজার মরীচি এবং আলোর অন্যান্য উত্স থেকে পৃথক করতে পারে না এবং ব্যবহারকারীর কাছ থেকে গতি নিবন্ধভুক্ত নাও করতে পারে।

প্রোগ্রাম কোড:

//-------- 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 টি এলডিআর যোগ করা ছাড়া বেশিরভাগ হার্ডওয়্যার অপরিবর্তিত রাখা হয়, তবে কোডটিতে বিশাল পরিবর্তন সাধিত হয়েছে।

স্কিম্যাটিক ডায়াগ্রাম বিভক্ত সময় দেখায়:

বিভক্ত সময়ের সাথে স্বয়ংক্রিয় স্টপওয়াচ

উপরের সার্কিটটিতে কয়েকটি উপাদান এবং শিক্ষানবিস বান্ধব রয়েছে। আর কোনও ব্যাখ্যার প্রয়োজন নেই, সার্কিট ডায়াগ্রাম অনুযায়ী কেবল তারের।

এলডিআরগুলি কীভাবে তারের করবেন:

উপরের চিত্রের মতো সমান্তরালে আরও 4 টি এলডিআর সংযুক্ত করে প্রধান সার্কিট ডায়াগ্রামে এলডিআর 2 দেখানো হয়েছে।

লেআউট ডায়াগ্রাম:

উপরেরটি কীভাবে লেজার স্থাপন করতে হবে তার প্রাথমিক ব্যবস্থা is দয়া করে মনে রাখবেন যে এলডিআরগুলির মধ্যে দূরত্বটি ট্র্যাক দৈর্ঘ্যের উপর নির্ভর করে ব্যবহারকারীর পছন্দ হতে পারে।

কার্যক্রম:

//------------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 সমস্ত লেজারগুলি যদি সঠিকভাবে এলডিআরগুলির সাথে একত্রিত হয় তবে ডিসপ্লে ত্রুটি বার্তাগুলির সাথে প্রম্পট করবে না। যদি কোনও হয় তবে দয়া করে তাদের সঠিকভাবে সারিবদ্ধ করুন।
The এখন সার্কিটটি 'সিস্টেমটি স্ট্যান্ডবাই' প্রদর্শন করে। এখন 'শুরু' বোতাম টিপুন এবং এটি প্রদর্শিত হবে 'সিস্টেম প্রস্তুত'।
This এই মুহুর্তে যখন একক প্লেয়ার এলডিআর 1 হালকা মরীচি বাধা দেয়, টাইমার শুরু হয় এবং এটি প্রদর্শিত হয় 'সময় গণনা করা হচ্ছে ...'।
Player প্লেয়ারটি শেষ পয়েন্টে অর্থাৎ এলডিআর 6 এ পৌঁছানোর সাথে সাথে টাইমারটি থেমে যায় এবং এটি সার্কিট দ্বারা রেকর্ডকৃত 5 বিভাজনের সময় প্রদর্শন করে।
Time ব্যবহারকারীকে টাইমার পুনরায় সেট করতে আরডুইনোতে রিসেট বোতাম টিপতে হবে।
এই স্বয়ংক্রিয় স্টপওয়াচটি কেন traditionalতিহ্যবাহী স্টপ ওয়াচের মতো প্রদর্শনটিতে লাইভ টাইমিং প্রদর্শন করতে পারে না (বরং এটি একটি স্ট্যাটিক পাঠ্য প্রদর্শন করে 'সময় গণনা করা হচ্ছে ...।')?
আসল সময়ে সময় প্রদর্শনের জন্য, আরডুইনোকে এলসিডি ডিসপ্লেতে অতিরিক্ত নির্দেশাবলী কার্যকর করতে হয়। এটি কোডের মূল সময়ের ট্র্যাকিংয়ের অংশকে কয়েক মিলিসেকেন্ডে বিলম্বিত করতে কয়েকটি মাইক্রোসেকেন্ড যুক্ত করবে, যা ভুল ফলাফলের দিকে নিয়ে যাবে।

আপনার যদি আরও কিছু প্রশ্ন থাকে তবে দয়া করে মন্তব্য বিভাগের মাধ্যমে প্রকাশ করুন।




পূর্ববর্তী: আরডুইনো এলসিডি কীপ্যাড শিল্ড (এসকিউ: ডিএফআর 10009) ডেটাশিট পরবর্তী: আরডুইনো র‌্যান্ডম আরজিবি লাইট জেনারেটর সার্কিট