পাঠ ২৪/৩১: স্মার্ট কার পার্ট ২: সামনে, পেছনে, বাম এবং ডানে চলা এবং গাড়ির গতি নিয়ন্ত্রণ
এই পাঠটি আপনার স্মার্ট গাড়ি তৈরির দ্বিতীয় ধাপের উপর কেন্দ্রীভূত: Arduino কোড ব্যবহার করে এর চলাচল নিয়ন্ত্রণ করা। প্রথম প্রকল্পটি হয়তো গাড়িটিকে একটি মৌলিক উপায়ে চলতে সক্ষম করেছিল, কিন্তু এই গাইড আপনাকে শেখায় কীভাবে গাড়িটিকে সামনে, পিছনে, বামে, ডানে এবং নির্ভুলভাবে থামানোর নির্দেশ দিতে হয়। আপনি এর গতি নিয়ন্ত্রণ করতেও শিখবেন, যা মসৃণ ত্বরণ এবং মন্দন সম্ভব করে। এটি যেকোনো রোবোটিক্স প্রকল্পের জন্য একটি মৌলিক ধাপ, কারণ এটি আপনাকে আরও জটিল স্বায়ত্তশাসিত আচরণ তৈরি করার জন্য ভিত্তিগত যুক্তি প্রদান করে।
এই চলাচল নিয়ন্ত্রণে দক্ষতা অর্জন সম্ভাবনার একটি জগৎ খুলে দেয়। এই জ্ঞানের জন্য এখানে কয়েকটি ব্যবহারিক প্রয়োগ রয়েছে:
- লাইন-অনুসরণকারী রোবট: একটি রোবটকে ট্র্যাকে রাখতে বাম এবং ডান বাঁক ফাংশন ব্যবহার করুন।
- বাধা-এড়ানো যানবাহন: গাড়িটিকে প্রোগ্রাম করুন যাতে এটি সামনে চলে, থামে এবং যখন তার পথে কোনো বস্তু শনাক্ত করে তখন ঘুরে যায়।
- রিমোট-নিয়ন্ত্রিত অনুসন্ধান: এই কমান্ডগুলিকে একটি ওয়্যারলেস মডিউলের সাথে একত্রিত করে আপনার বাড়ি বা উঠোনের চারপাশে গাড়িটি চালান।
- স্বয়ংক্রিয় ডেলিভারি সিস্টেম: একটি ছোট আকারের রোবট তৈরি করুন যা নির্ধারিত পয়েন্টগুলির মধ্যে চলতে পারে, প্রয়োজন অনুযায়ী থামে এবং শুরু করে।
হার্ডওয়্যার এবং উপাদান
এই প্রকল্পটি SunFounder 3-in-1 Arduino কিটের উপর ভিত্তি করে তৈরি। মৌলিক কিটের বাইরে কোনো অতিরিক্ত উপাদানের প্রয়োজন নেই, তবে মোটর ড্রাইভার নিয়ন্ত্রণ করতে আপনাকে Arduino-তে চারটি অতিরিক্ত তার সংযোগ করতে হবে। প্রয়োজনীয় উপাদানগুলি হল:
- Arduino Uno (বা সামঞ্জস্যপূর্ণ বোর্ড)
- মোটর সহ SunFounder স্মার্ট কার চ্যাসিস
- মোটর ড্রাইভার বোর্ড (কিটে অন্তর্ভুক্ত)
- জাম্পার তার
- গাড়ির জন্য ব্যাটারি প্যাক
- প্রোগ্রামিংয়ের জন্য USB কেবল
ওয়্যারিং গাইড
এই প্রকল্পের ওয়্যারিং প্রতিটি মোটরের দিক নিয়ন্ত্রণের জন্য অত্যন্ত গুরুত্বপূর্ণ। ভিডিওটি ব্যাখ্যা করে যে ড্রাইভার বোর্ডের চারটি মোটর নিয়ন্ত্রণ তার Arduino পিন 5, 6, 9 এবং 10-এর সাথে সংযুক্ত। এই পিনগুলি বিশেষ কারণ তারা পালস উইডথ মডুলেশন (PWM) সমর্থন করে, যা গতি নিয়ন্ত্রণের জন্য অপরিহার্য।
ভিডিওতে, প্রশিক্ষক নীচের চিত্রে দেখানো হিসাবে হলুদ এবং নীল তার ব্যবহার করে একটি নির্দিষ্ট ক্রমে সেগুলি সংযোগ করেন।
ভিডিওতে উল্লিখিত একটি গুরুত্বপূর্ণ নিরাপত্তা নোট হল USB-এর মাধ্যমে Arduino প্রোগ্রাম করার সময় গাড়ির ব্যাটারি পাওয়ার (5V-তে লাল তার এবং GND-তে কালো তার) সংযোগ বিচ্ছিন্ন করা। এটি USB পোর্টকে ওভারলোড হওয়া এবং সম্ভাব্যভাবে বন্ধ হয়ে যাওয়া থেকে রক্ষা করে।
কোড ব্যাখ্যা
এই পাঠের কোডটি সহজে পরিবর্তন এবং বোঝার জন্য কাঠামোবদ্ধ। গাড়ি নিয়ন্ত্রণের চাবিকাঠি স্কেচের শীর্ষে পিন সংজ্ঞাগুলির মধ্যে রয়েছে। আপনি যদি আপনার Arduino-তে ভিন্ন পিন ব্যবহার করার সিদ্ধান্ত নেন তবে আপনি সেগুলি পরিবর্তন করতে পারেন।
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
এই লাইনগুলি মোটর ড্রাইভারের ইনপুটগুলির সাথে সংযুক্ত Arduino পিনগুলিকে সংজ্ঞায়িত করে। in1 এবং in2 একটি মোটর নিয়ন্ত্রণ করে, যখন in3 এবং in4 অন্যটি নিয়ন্ত্রণ করে। এই পিনগুলিকে HIGH বা LOW সেট করে, আপনি প্রতিটি মোটরের ঘূর্ণনের দিক নিয়ন্ত্রণ করেন।
গাড়ির গতি নিয়ন্ত্রণ করতে, কোডটি দুটি কাস্টম ফাংশন ব্যবহার করে: moveForward(int speed) এবং moveBackwards(int speed)। এই ফাংশনগুলি আর্গুমেন্ট হিসাবে 0 থেকে 255 এর মধ্যে একটি পূর্ণসংখ্যা মান নেয়। 0 মান মোটর থামায়, যখন 255 সর্বোচ্চ গতি। উদাহরণস্বরূপ, গাড়িটিকে পূর্ণ গতিতে সামনে সরাতে, আপনি moveForward(255) কল করবেন। এটিকে ধীরে ধীরে পিছনে সরাতে, আপনি moveBackwards(100) ব্যবহার করবেন।
ভিডিওটি for লুপ ব্যবহার করে একটি "গতি বাড়ানো" এবং "গতি কমানোর" ক্রমও প্রদর্শন করে। এটি মসৃণ ত্বরণের জন্য একটি শক্তিশালী কৌশল।
for(int i=0;i<=255;i+=5){
moveForward(i);
delay(100);
}
এই লুপটি i 0 থেকে শুরু করে এবং 255-এ পৌঁছানো পর্যন্ত প্রতিটি পাসে এটি 5 করে বৃদ্ধি করে। প্রতিবার, এটি moveForward(i) কল করে, ধীরে ধীরে গাড়ির গতি বাড়ায়। delay(100) প্রতিটি গতি ধাপে 100-মিলিসেকেন্ড বিরতি প্রদান করে, যা ত্বরণকে দৃশ্যমান করে। গাড়িটি ধীর করতে i-এর মান হ্রাসকারী একটি অনুরূপ লুপ ব্যবহার করা হয়।
লাইভ প্রকল্প প্রদর্শন
ভিডিওতে, প্রশিক্ষক দুটি প্রধান পর্যায়ে প্রকল্পটি প্রদর্শন করেন। প্রথমে, তিনি গাড়ির মৌলিক চলাচল দেখান। "move" কোড লোড করার মাধ্যমে, গাড়িটি একটি পূর্ব-প্রোগ্রাম করা ক্রম সম্পাদন করে: দুই সেকেন্ড সামনে চলা, থামা, দুই সেকেন্ড পিছনে চলা, থামা, বামে বাঁক নেওয়া এবং তারপর ডানে বাঁক নেওয়া। এটি দৃশ্যত নিশ্চিত করে যে ওয়্যারিং এবং যুক্তি সঠিক।
দ্বিতীয় প্রদর্শনটি গতি নিয়ন্ত্রণের উপর কেন্দ্রীভূত। প্রশিক্ষক "স্পিড আপ" কোড লোড করেন, যা ধীরে ধীরে গাড়িটিকে সামনের দিকে ত্বরান্বিত করে যতক্ষণ না এটি সর্বোচ্চ গতিতে পৌঁছায় এবং তারপর মসৃণভাবে থামার জন্য ধীর হয়ে যায়। এরপর তিনি একটি নির্দিষ্ট গতির সংস্করণ দেখান, যেখানে গাড়িটি 255 গতিতে সামনের দিকে চলে, থামে, এবং তারপর 100 এর ধীর গতিতে পিছনের দিকে যায়, মানগুলি সিরিয়াল মনিটরে যাচাইয়ের জন্য প্রিন্ট করা হয়।
অধ্যায়সমূহ
- [00:00] গাড়ির চলাচল নিয়ন্ত্রণের ভূমিকা
- [01:44] কোড নিয়ন্ত্রণের জন্য ওয়্যারিং সেটআপ
- [02:07] সামনে এবং পিছনের চলাচল প্রদর্শন
- [03:18] বাম এবং ডান বাঁক প্রদর্শন
- [05:05] আরডুইনো পিনে তার সংযোগ
- [07:00] দিক নিয়ন্ত্রণের জন্য কোড ব্যাখ্যা
- [11:44] গতি নিয়ন্ত্রণের ভূমিকা
- [12:16] গতি বৃদ্ধির জন্য কোড ব্যাখ্যা
- [14:45] ডিবাগিংয়ের জন্য সিরিয়াল মনিটর ব্যবহার
- [17:10] গতি নিয়ন্ত্রণের লাইভ প্রদর্শন
- [19:45] চূড়ান্ত বহিরঙ্গন পরীক্ষা এবং উপসংহার
/*
Lesson 24/31: Smart code speeds up
Get this code and watch video Download and resource page https://robojax.com/RJT607
YouTube video https://www.youtube.com/watch?v=QzcUig2L3dM
*/
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
Serial.begin(9600);
Serial.println("SunFounder Arduino Course");
Serial.println("Lesson 3: Speed up");
Serial.println("www.Robojax.com");
}
void loop() {
moveForward(255);
Serial.print("Forward at: ");
Serial.println(255);
delay(5000);//for 5 seconds
Serial.println("Stopped ");
moveForward(0);//stop the car
delay(2000);//for 2 seconds
moveBackwards(100);
Serial.print("Reverse at: ");
Serial.println(100);
delay(5000);//for 5 seconds
Serial.println("Stopped ");
moveForward(0);//stop the car
delay(2000);//for 2 seconds
}
void moveForward(int speed) {
analogWrite(in1, 0);
analogWrite(in2, speed);
analogWrite(in3, speed);
analogWrite(in4, 0);
}
void moveBackwards(int speed) {
analogWrite(in1, speed);
analogWrite(in2, 0);
analogWrite(in3, 0);
analogWrite(in4, speed);
}
/*
Lesson 24/31: Smart code speeds up (custom code)
Get this code and watch video Download and resource page https://robojax.com/RJT607
YouTube video https://www.youtube.com/watch?v=QzcUig2L3dM
*/
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
Serial.begin(9600);
Serial.println("SunFounder Arduino Course");
Serial.println("Lesson 3: Speed up");
Serial.println("www.Robojax.com");
}
void loop() {
Serial.println("Loop 1: Speeding Up");
for(int i=0;i<=255;i+=5){
moveForward(i);
Serial.print("i= ");
Serial.println(i);
delay(100);
}
Serial.println("Loop 2: Slowing down ");
for(int i=255;i>=0;i-=5){
moveForward(i);
Serial.print("i= ");
Serial.println(i);
delay(100);
}
}
void moveForward(int speed) {
analogWrite(in1, 0);
analogWrite(in2, speed);
analogWrite(in3, speed);
analogWrite(in4, 0);
}
Common Course Links
Common Course Files
আপনাকে যা প্রয়োজন হতে পারে
-
অ্যামাজন5V DC motor on Amazonamzn.to
-
অ্যামাজন5V DC motor on eBayebay.us
-
অ্যামাজনSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
অ্যামাজন
-
অ্যামাজন
-
অ্যামাজন
-
অ্যামাজন
-
অলি এক্সপ্রেস5V DC motor on AliExpresss.click.aliexpress.com
সম্পদ ও রেফারেন্সসমূহ
-
ডকুমেন্টেশনDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
বাহ্যিকPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
ফাইলসমূহ📁
আর্ডুইনো লাইব্রেরি (জিপ)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB