Search Code

পাঠ ৮৮: দুটি পুশ বাটন সুইচ ব্যবহার করে সার্ভো মোটর নিয়ন্ত্রণ করা

পাঠ ৮৮: দুটি পুশ বাটন সুইচ ব্যবহার করে সার্ভো মোটর নিয়ন্ত্রণ করা

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

এই সেটআপ দিয়ে আপনি কয়েকটি ব্যবহারিক প্রকল্প তৈরি করতে পারেন:

  • একটি রোবোটিক আর্ম বা গ্রিপারের জন্য একটি ম্যানুয়াল কন্ট্রোল প্যানেল তৈরি করা।
  • একটি রিমোট-নিয়ন্ত্রিত ক্যামেরা স্লাইডার বা প্যান-টিল্ট হেড তৈরি করা।
  • একটি মডেল এয়ারপ্লেন বা বোট রাডারের জন্য একটি শারীরিক কন্ট্রোল ইন্টারফেস তৈরি করা।
  • একটি CNC মেশিন বা 3D প্রিন্টারের জন্য অবস্থান রেকর্ড করার জন্য একটি সহজ "টিচ পেন্ডেন্ট" তৈরি করা।

হার্ডওয়্যার এবং উপাদানসমূহ

এই প্রকল্পের জন্য শুধুমাত্র কয়েকটি মৌলিক উপাদান প্রয়োজন, যা Arduino দিয়ে ইনপুট এবং আউটপুট ডিভাইস উভয় সম্পর্কে শেখার জন্য একটি চমৎকার সূচনা পয়েন্ট করে তোলে।

  • Arduino বোর্ড (Uno, Nano, Mega, ইত্যাদি)
  • সার্ভো মোটর (যেমন SG90 বা MG995)
  • দুটি মোমেন্টারি পুশ বাটন
  • জাম্পার তার
  • ব্রেডবোর্ড (ঐচ্ছিক তবে সুপারিশকৃত)

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

ভিডিওতে, ওয়্যারিং সহজবোধ্য। সার্ভো মোটরের সিগন্যাল পিনটি Arduino-এর একটি PWM-সক্ষম পিনের সাথে সংযুক্ত, যা এই উদাহরণে পিন 9। সার্ভোর পাওয়ার এবং গ্রাউন্ড Arduino-এর 5V এবং GND পিনের সাথে সংযুক্ত। দুটি পুশ বাটন একইভাবে একে অপরের সাথে ওয়্যার করা হয়েছে। প্রতিটি বাটনের একটি পা গ্রাউন্ডের সাথে সংযুক্ত, এবং অন্যটি Arduino-এর একটি ডিজিটাল ইনপুট পিনের সাথে সংযুক্ত (বাম বাটনের জন্য পিন 2 এবং ডান বাটনের জন্য পিন 3)। কোডটি অভ্যন্তরীণ পুল-আপ রেজিস্টর ব্যবহার করে, তাই বাটনগুলির জন্য কোনো বাহ্যিক রেজিস্টরের প্রয়োজন নেই। (ভিডিওতে 00:57 এ)

Arduino wriing for Sevo motor with 2 push buttons
Arduino wriing for Sevo motor with 2 push buttons

কোড ব্যাখ্যা

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

#include <Servo.h>

Servo myservo;  // একটি সার্ভো নিয়ন্ত্রণ করতে সার্ভো অবজেক্ট তৈরি করুন
int servoPin = 9;// এই পিনটি অবশ্যই PWM ~ সহ পিনগুলির মধ্যে হতে হবে
int angle =90;    // সার্ভোর জন্য প্রাথমিক কোণ
int angleStep =5;

#define LEFT 2   // পিন 2 বাম বাটনের সাথে সংযুক্ত
#define RIGHT  3  // পিন 3 ডান বাটনের সাথে সংযুক্ত
  • servoPin: এই ভেরিয়েবলটি Arduino পিনটি সংজ্ঞায়িত করে যার সাথে সার্ভোর সিগন্যাল তার সংযুক্ত। পালস উইডথ মডুলেশন (PWM) সমর্থন করে এমন একটি পিন ব্যবহার করা অত্যন্ত গুরুত্বপূর্ণ, সাধারণত বোর্ডে ~ চিহ্ন দিয়ে চিহ্নিত।
  • angle: এটি Arduino শুরু হলে সার্ভোর প্রাথমিক কোণ সেট করে। ডিফল্ট মান 90 ডিগ্রি, যা সাধারণত সার্ভোটিকে কেন্দ্র করে।
  • angleStep: এটি সেই বৃদ্ধি যার দ্বারা প্রতিবার বাটন চাপলে সার্ভো কোণ পরিবর্তিত হয়। মান 5 মানে প্রতিটি চাপে সার্ভো 5 ডিগ্রি সরে যাবে। দ্রুত চলাচলের জন্য আপনি এটি বাড়াতে পারেন বা সূক্ষ্ম নিয়ন্ত্রণের জন্য কমাতে পারেন।
  • LEFT এবং RIGHT: এই #define নির্দেশাবলী ডিজিটাল পিনগুলি নির্ধারণ করে যার সাথে পুশ বাটনগুলি সংযুক্ত। আপনি যদি আপনার বাটনগুলিকে ভিন্ন পিনে ওয়্যার করেন, তাহলে আপনার সেটআপের সাথে মেলাতে আপনাকে এই মানগুলি পরিবর্তন করতে হবে।

loop() ফাংশনের মূল লজিকটি পরীক্ষা করে যে একটি বাটন চাপা হয়েছে কিনা (পুল-আপ কনফিগারেশনের কারণে একটি LOW সিগন্যাল পড়ে)। যদি "ডান" বাটন চাপা হয়, এটি angle ভেরিয়েবলকে angleStep দ্বারা হ্রাস করে। যদি "বাম" বাটন চাপা হয়, এটি angle বৃদ্ধি করে। কোডটিতে সীমানা পরীক্ষা অন্তর্ভুক্ত রয়েছে যাতে কোণটি 0 থেকে 180-ডিগ্রি পরিসরের মধ্যে থাকে তা নিশ্চিত করা যায়। তারপর myservo.write(angle) ফাংশনটি নতুন অবস্থানে যাওয়ার জন্য সার্ভোকে নির্দেশ দিতে ব্যবহৃত হয়।

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

ভিডিও প্রদর্শনে, কার্যকারিতা স্পষ্টভাবে দেখানো হয়েছে। "বাম" বাটনটি চেপে ধরে রাখলে সার্ভোটি মসৃণভাবে বাম দিকে ঘুরে যায়, কোণটি একবারে 5 ডিগ্রি বৃদ্ধি পায়, যতক্ষণ না এটি 180 ডিগ্রিতে পৌঁছে থামে। একইভাবে, "ডান" বাটনটি চেপে ধরে রাখলে সার্ভোটি ডান দিকে ফিরে যায়, কোণটি হ্রাস পেতে থাকে যতক্ষণ না এটি 0 ডিগ্রিতে পৌঁছায়। বর্তমান কোণটি সিরিয়াল মনিটরে প্রিন্ট করা হয়, যা আপনাকে রিয়েল-টাইমে সার্ভোর সঠিক অবস্থান দেখতে দেয়। (ভিডিওতে 05:20 এ)

ভিডিও অধ্যায়

  • [00:00] বাটন দিয়ে সার্ভো নিয়ন্ত্রণের ভূমিকা
  • [00:57] সার্ভো এবং পুশ বাটনের জন্য ওয়্যারিং গাইড
  • [02:12] কোড ব্যাখ্যা, অংশ 1: সেটআপ এবং কনফিগারেশন
  • [03:25] কোড ব্যাখ্যা, অংশ 2: মূল লুপ লজিক
  • [05:20] প্রকল্পের লাইভ প্রদর্শন
  • [06:23] উপসংহার এবং সম্ভাব্য অ্যাপ্লিকেশন

ছবি

2 pin tactile push button switch
2 pin tactile push button switch
SG90 Mini Servo Motor
SG90 Mini Servo Motor
SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
Arduino wriing for Sevo motor with 2 push buttons
Arduino wriing for Sevo motor with 2 push buttons
891-Lesson 88: Servo control with 2 push buttons
ভাষা: C++
/*
 * S05-05 Servo control with 2 push buttons
 * Download and resource page https://robojax.com/RJT764
 Watch video on YouTube https://www.youtube.com/watch?v=J_kbyAY1rLM
 * 
 * Written by Ahmad Shamshiri for Robojax.com 
 * on Jan 15, 2019 at 19:15 in Ajax, Ontario, Canada

  
 * 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/>.
 */
/*
 Controlling a servo with two Push buttons with Arduino
 when Left  push button is pressed, the servo start moving to the left until it reaches 180( or zero) degrees
 when Right  push button is pressed, the servo start moving to the right until it reaches 180( or zero) degrees
At any instance if the button is released, servo stops

*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
int servoPin = 9;// this pin must be of those with PWM ~
int angle =90;    // initial angle  for servo
int angleStep =5;

#define LEFT 2   // pin 2 is connected to left button
#define RIGHT  3  // pin 3 is connected to right button

void setup() {
  // Servo button demo by Robojax.com
  Serial.begin(9600);          //  setup serial
  myservo.attach(servoPin);  // attaches the servo on pin 9 to the servo object
  pinMode(LEFT,INPUT_PULLUP); // assign pin 12 ass input for Left button
  pinMode(RIGHT,INPUT_PULLUP);// assing pin 2 as input for right button
  myservo.write(angle);// send servo to the middle at 90 degrees
 Serial.println("Robojax Servo 2 Buttons ");
}

void loop() {
  // Servo button demo by Robojax.com
  while(digitalRead(RIGHT) == LOW){

    if (angle > 0 && angle <= 180) {
      angle = angle - angleStep;
       if(angle < 0){
        angle = 0;
       }else{
      myservo.write(angle); // move the servo to desired angle
      Serial.print("Moved to: ");
      Serial.print(angle);   // print the angle
      Serial.println(" degree");
       }
    }
    
  delay(100); // waits for the servo to get there
  }// while
 // Servo button demo by Robojax.com

  while(digitalRead(LEFT) == LOW){

    // Servo button demo by Robojax.com
    if (angle >= 0 && angle <= 180) {
      angle = angle + angleStep;
      if(angle >180){
        angle =180;
       }else{
      myservo.write(angle); // move the servo to desired angle
      Serial.print("Moved to: ");
      Serial.print(angle);   // print the angle
      Serial.println(" degree");
       }
    }
    
  delay(100); // waits for the servo to get there
  }// 

  
}

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

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

ফাইলসমূহ📁

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