কোড অনুসন্ধান

পাঠ ৯২: প্রতিটি পটেনশিওমিটার দিয়ে একাধিক সার্ভো নিয়ন্ত্রণ | আরডুইনো ধাপে ধাপে কোর্স

পাঠ ৯২: প্রতিটি পটেনশিওমিটার দিয়ে একাধিক সার্ভো নিয়ন্ত্রণ | আরডুইনো ধাপে ধাপে কোর্স

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

sg90_servo

এই সেটআপটি অবিশ্বাস্যভাবে বহুমুখী। এখানে কয়েকটি ব্যবহারিক উপায় রয়েছে যা আপনি এটি ব্যবহার করতে পারেন:

  • রোবোটিক্স: একটি ক্যামেরা জিম্বলের প্যান এবং টিল্ট বা একটি ছোট রোবটের বেস এবং আর্ম জয়েন্ট নিয়ন্ত্রণ করা।
  • অ্যানিমেট্রনিক্স: একটি পুতুল বা অ্যানিমেট্রনিক চরিত্রের মাথা এবং চোখ স্বাধীনভাবে নিয়ন্ত্রণ করে বাস্তবসম্মত নড়াচড়া তৈরি করা।
  • মডেল কন্ট্রোল: RC যানবাহন বা মডেল বিমানের জন্য একটি কাস্টম কন্ট্রোলার তৈরি করা যাতে ফ্ল্যাপ এবং আইলরন সুনির্দিষ্টভাবে সামঞ্জস্য করা যায়।
  • অটোমেশন: একটি সোলার ট্র্যাকার বা একটি মাল্টি-অ্যাক্সিস পজিশনিং জিগের জন্য একটি ম্যানুয়াল ওভাররাইড স্টেশন তৈরি করা।

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

  • Arduino Uno (বা যেকোনো সামঞ্জস্যপূর্ণ বোর্ড)
  • 2x সার্ভো মোটর (এখানে স্ট্যান্ডার্ড 180-ডিগ্রি সার্ভো ব্যবহার করা হয়েছে)
  • 2x পটেনশিওমিটার (10kΩ একটি সাধারণ পছন্দ)
  • ব্রেডবোর্ড এবং জাম্পার তার
  • বাহ্যিক 5V পাওয়ার সাপ্লাই (একাধিক সার্ভোর জন্য প্রস্তাবিত)

 

ওয়্যারিং গাইড

এই প্রকল্পের জন্য একটি একক-সার্ভো সেটআপের চেয়ে কিছুটা বেশি ওয়্যারিং প্রয়োজন, প্রধানত কারণ আপনাকে একাধিক উপাদানে পাওয়ার এবং গ্রাউন্ড বিতরণ করতে হবে। মূল বিষয় হল ব্রেডবোর্ডের পাওয়ার রেল ব্যবহার করে একটি সাধারণ 5V এবং GND বাস তৈরি করা। এই নির্মাণের জন্য একটি ওয়্যারিং ডায়াগ্রাম অপরিহার্য।

Two or more Servo pot bb

আসুন সংযোগগুলি ভেঙে দেখি, যেমনটি ভিডিওতে ব্যাখ্যা করা হয়েছে (ভিডিওতে 02:23 এ)। প্রথমে, আপনার পাওয়ার রেল সেট আপ করুন: Arduino-এর 5V পিনটি ব্রেডবোর্ডের পজিটিভ রেলে এবং GND পিনটি নেগেটিভ রেলে সংযুক্ত করুন। এটি আপনাকে আপনার সমস্ত উপাদানের জন্য পাওয়ারে সহজ অ্যাক্সেস দেয়।

পটেনশিওমিটার: প্রতিটি পটেনশিওমিটার একটি ভোল্টেজ ডিভাইডার হিসাবে কাজ করে। প্রতিটি পটের ডান পিনটি 5V রেলে এবং বাম পিনটি GND রেলে সংযুক্ত করুন। মাঝের পিনটি হল "ওয়াইপার" এবং এটি একটি পরিবর্তনশীল ভোল্টেজ সরবরাহ করে। প্রথম পটেনশিওমিটারের মাঝের পিনটি অ্যানালগ ইনপুট A0-তে এবং দ্বিতীয়টির মাঝের পিনটি A1-তে সংযুক্ত করুন (ভিডিওতে 03:22 এ)।

সার্ভো মোটর: প্রতিটি সার্ভোতে তিনটি তার থাকে। গাঢ় রঙের তারটি (সাধারণত কালো বা বাদামী) GND রেলে সংযুক্ত করুন। মাঝের তারটি (সাধারণত লাল) 5V রেলে সংযুক্ত করুন। অবশেষে, সিগন্যাল তারটি (সাধারণত কমলা বা হলুদ) Arduino-এর একটি PWM-সক্ষম পিনে সংযুক্ত করুন। প্রথম সার্ভোর সিগন্যাল তারটি পিন 3-তে যায় এবং দ্বিতীয় সার্ভোর সিগন্যাল তারটি পিন 5-তে যায় (ভিডিওতে 04:01 এ)। মনে রাখবেন, সার্ভো নিয়ন্ত্রণের জন্য আপনাকে অবশ্যই PWM-সক্ষম পিন ব্যবহার করতে হবে (Uno-তে টিল্ড "~" চিহ্ন দিয়ে চিহ্নিত)।

কোড ব্যাখ্যা

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

এখানে ব্যবহারকারী-কনফিগারযোগ্য বিভাগটি রয়েছে যা পিনগুলি সংজ্ঞায়িত করে এবং সার্ভো অবজেক্ট তৈরি করে:


#include <Servo.h>

//**** servo 1 সেটিংস
Servo servo1; 
const int servo1PotPin = A0;
const int servo1Pin = 3;// অবশ্যই PWM সক্ষম পিন ব্যবহার করতে হবে
int servo1Value;
//**** servo 1 সেটিংস শেষ

//**** servo 2 সেটিংস
Servo servo2; 
const int servo2PotPin = A1;
const int servo2Pin = 5;// অবশ্যই PWM সক্ষম পিন ব্যবহার করতে হবে
int servo2Value;
//**** servo 1 সেটিংস শেষ

এটি কনফিগারেশনের মূল অংশ। একটি তৃতীয় সার্ভো যোগ করতে, আপনি "servo 2 সেটিংস" ব্লকটি অনুলিপি করুন, সমস্ত "2" কে "3" এ পরিবর্তন করুন, একটি নতুন অ্যানালগ পিন (যেমন, A2) এবং একটি নতুন PWM পিন (যেমন, 9) নির্ধারণ করুন। Servo ক্লাসটি Arduino IDE-তে অন্তর্নির্মিত, তাই কোনও অতিরিক্ত লাইব্রেরির প্রয়োজন নেই।

setup() ফাংশনে, servo.attach(pin) কমান্ডটি Arduino-কে বলে যে প্রতিটি সার্ভোর সিগন্যাল তারের সাথে কোন পিন সংযুক্ত। আপনি যে প্রতিটি সার্ভো ব্যবহার করছেন তার জন্য একটি লাইন থাকতে হবে।


void setup() {
  //Robojax.com একাধিক সার্ভো
  servo1.attach(servo1Pin); 
  servo2.attach(servo2Pin);   
}

loop()-এ, কোডটি পটেনশিওমিটার মান পড়ে, এটি 0-180 ডিগ্রি পরিসরে ম্যাপ করে এবং সেই কোণটি সার্ভোতে লেখে। শেষে delay(5) একটি টিউনিং প্যারামিটার। ভিডিওতে যেমন প্রদর্শিত হয়েছে, এই মানটি 15 থেকে 5 মিলিসেকেন্ডে হ্রাস করলে সার্ভোর গতিবিধি অনেক মসৃণ হয় এবং কম্পন দূর হয় (ভিডিওতে 12:00 এ)।

লাইভ প্রকল্প প্রদর্শন

একবার আপনি সার্কিটটি ওয়্যার করে এবং কোডটি আপলোড করলে, প্রদর্শনটি তাৎক্ষণিক। যখন আপনি Arduino-তে পাওয়ার দেন, প্রতিটি সার্ভো তার সংশ্লিষ্ট পটেনশিওমিটারের বর্তমান সেটিং দ্বারা নির্ধারিত অবস্থানে চলে যাবে। আপনি যখন একটি নব ঘোরান, এর সার্ভোটি মসৃণভাবে নড়াচড়া অনুসরণ করবে। ভিডিওটি প্রদর্শন করে যে দুটি সার্ভো সম্পূর্ণ স্বাধীনভাবে কাজ করে, যা জটিল, একযোগে নড়াচড়ার অনুমতি দেয়। আপনি যদি কোনও ঝাঁকুনি বা কম্পন লক্ষ্য করেন, লুপে delay() মান সামঞ্জস্য করা প্রথম চেষ্টা করা উচিত।

অধ্যায়

  • [00:00] ভূমিকা এবং প্রকল্পের সংক্ষিপ্ত বিবরণ
  • [00:56] সার্ভো মোটর বোঝা
  • [02:23] দুটি সার্ভো এবং পটেনশিওমিটারের জন্য ওয়্যারিং ডায়াগ্রাম
  • [04:15] বিস্তারিত ওয়্যারিং ব্যাখ্যা
  • [06:49] কোড ব্যাখ্যা: কনফিগারেশন এবং সেটআপ
  • [09:15] কোড ব্যাখ্যা: নিয়ন্ত্রণ লজিক এবং ম্যাপিং
  • [11:15] লাইভ ডেমোনস্ট্রেশন এবং টিউনিং

ছবি

Multiple servo, one pot: Main setup
Multiple Servo one pot.: Main setup
Multiple servo, one pot: Main setup, top view
Multiple Servo one pot.: Main setup top view
Multiple servo one-pot: Creating extra 5V from an Arduino on a breadboard
Multiple Servo one pot.: Creating extra 5V from Arduino on breadboard
SG90 Mini Servo Motor
SG90 Mini Servo Motor
Two or more Servo pot bb
Two or more Servo pot bb
SG90 servo
SG90 servo
888-Lesson 92: Controlling Multiple servo motors
ভাষা: C++
/*
 * Control two or more servo motors 
 * using potentiometers.
 * Modified by Ahmad Shamshiri on Oct 17, 2019 at 20:13
 * in Ajax, Ontario, Canada . www.Robojax.com
 * This code on robojax https://robojax.com/RJT766
 *  
 * Original code from Arduino IDE: File->Examples->Servo->knob
 *  
 Controlling a servo position using a potentiometer (variable resistor)
 by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>

 modified on 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Knob


 * Get this code and other Arduino codes from Robojax.com



 *  * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
#include <Servo.h>

//**** servo 1 settings
Servo servo1; 
const int servo1PotPin =A0;
const int servo1Pin = 3;// Must use PWM enabled pin
int servo1Value;
//**** servo 1 settings END

//**** servo 2 settings
Servo servo2; 
const int servo2PotPin =A1;
const int servo2Pin = 5;// Must use PWM enabled pin
int servo2Value;
//**** servo 1 settings END

void setup() {
  //Robojax.com multiple servo
  servo1.attach(servo1Pin); 
  servo2.attach(servo2Pin);   
}

void loop() {
  //Robojax.com multiple servo
  servo1Value = analogRead(servo1PotPin); 
  servo1Value = map(servo1Value, 0, 1023, 0, 180);
  servo1.write(servo1Value);

  servo2Value = analogRead(servo2PotPin); 
  servo2Value = map(servo2Value, 0, 1023, 0, 180);
  servo2.write(servo2Value);
  
  delay(5);
 //Robojax.com multiple servo  
}// loop end

আপনাকে যা প্রয়োজন হতে পারে

সম্পদ ও রেফারেন্সসমূহ

এখনো কোনো সম্পদ নেই।

ফাইলসমূহ📁

অন্যান্য ফাইলগুলি