ትምህርት 88፡ ሁለት የግፊት አዝራር መቀየሪያዎችን በመጠቀም ሰርቮ ሞተርን መቆጣጠር
ይህ ፕሮጀክት ከአርዱኖ ጋር ሁለት የግፊት አዝራሮችን በመጠቀም ሰርቮ ሞተርን እንዴት መቆጣጠር እንደሚቻል ያሳያል። በፖቴንሺዮሜትር ወይም በሴሪያል ትዕዛዝ ላይ ከመመርኮዝ ይልቅ፣ ሰርቮውን ወደ ግራ ወይም ቀኝ ለማንቀሳቀስ ቀላል የመዳሰሻ መቀየሪያዎችን መጠቀም ይችላሉ። ይህ በቀጥታ አካላዊ ቁጥጥር ለሚያስፈልግዎት መተግበሪያዎች እጅግ ጠቃሚ ነው፣ ለምሳሌ የሮቦቲክ ክንድ መገንባት፣ የካሜራ ጂምባል ማስተካከል፣ ወይም በርቀት የሚቆጣጠር የፓን-እና-ቲልት ሲስተም መፍጠር። አዝራሮቹ የሰርቮውን አንግል ቀስ በቀስ ለማስተካከል ያስችሉዎታል፣ አዝራሩን ተጭነው ሲይዙ ደግሞ ሙሉ የእንቅስቃሴ ክልሉን እንዲሸፍን ያደርጋሉ።
በዚህ ውቅር ሊገነቡዋቸው የሚችሏቸው ጥቂት ተግባራዊ ፕሮጀክቶች እነዚህ ናቸው፦
- ለሮቦቲክ ክንድ ወይም መያዣ በእጅ የሚቆጣጠር ፓነል መገንባት።
- በርቀት የሚቆጣጠር የካሜራ ስላይደር ወይም ፓን-ቲልት ራስ መፍጠር።
- ለሞዴል አውሮፕላን ወይም ጀልባ መሪ አካላዊ የቁጥጥር በይነገጽ ማዘጋጀት።
- ለCNC ማሽን ወይም 3D አታሚ ቦታዎችን ለመመዝገብ ቀላል "የማስተማሪያ ፔንዳንት" መስራት።

ሃርድዌር እና ክፍሎች
ይህ ፕሮጀክት ጥቂት መሰረታዊ ክፍሎችን ብቻ ይፈልጋል፣ ይህም ከአርዱኖ ጋር ስለ ግብዓት እና ውፅዓት መሳሪያዎች ለመማር ጥሩ መነሻ ያደርገዋል።
- አርዱኖ ቦርድ (Uno፣ Nano፣ Mega፣ ወዘተ.)
- ሰርቮ ሞተር (ለምሳሌ SG90 ወይም MG995)
- ሁለት ጊዜያዊ የግፊት አዝራሮች
- መዝለያ ሽቦዎች
- ብሬድቦርድ (አማራጭ ነገር ግን ይመከራል)
የሽቦ አገናኝ መመሪያ
በቪዲዮው ውስጥ፣ የሽቦ አገናኙ ቀላል ነው። የሰርቮ ሞተሩ የሲግናል ፒን በአርዱኖ ላይ ካለው PWM አቅም ካለው ፒን ጋር ተገናኝቷል፣ ይህም በዚህ ምሳሌ ውስጥ ፒን 9 ነው። የሰርቮው ሃይል እና መሬት ከአርዱኖው 5V እና GND ፒኖች ጋር ተገናኝተዋል። ሁለቱ የግፊት አዝራሮች በተመሳሳይ መልኩ ተያይዘዋል። የእ প্রতিটি አዝራር አንድ እግር ከመሬት ጋር ተገናኝቷል፣ ሌላኛው እግር ደግሞ በአርዱኖ ላይ ካለው ዲጂታል ግብዓት ፒን ጋር ተገናኝቷል (ለ"ግራ" አዝራር ፒን 2 እና ለ"ቀኝ" አዝራር ፒን 3)። ኮዱ ውስጣዊ የመጎተት-ወደላይ ተከላካዮችን ይጠቀማል፣ ስለዚህ ለአዝራሮቹ ምንም ውጫዊ ተከላካዮች አያስፈልጉም። (በቪዲዮው በ00:57)

የኮድ ማብራሪያ
ኮዱ በቀላሉ ሊዋቀር የሚችል እንዲሆን የተነደፈ ነው። ቁልፍ በተጠቃሚ ሊዋቀሩ የሚችሉ ክፍሎች በስኬቹ አናት ላይ ናቸው። ለራስዎ ፕሮጀክት ሊያስተካክሏቸው የሚፈልጉዋቸው አስፈላጊ ተለዋዋጮች እና ትርጓሜዎች ዝርዝር እነሆ።
#include <Servo.h>
Servo myservo; // ሰርቮውን ለመቆጣጠር የሰርቮ ነገር ይፍጠሩ
int servoPin = 9;// ይህ ፒን ከPWM ~ ካላቸው መካከል መሆን አለበት
int angle =90; // ለሰርቮው የመጀመሪያ አንግል
int angleStep =5;
#define LEFT 2 // ፒን 2 ከግራ አዝራር ጋር ተገናኝቷል
#define RIGHT 3 // ፒን 3 ከቀኝ አዝራር ጋር ተገናኝቷል
servoPin: ይህ ተለዋዋጭ የሰርቮው የሲግናል ሽቦ የተገናኘበትን የአርዱኖ ፒን ይገልጻል። በቦርዱ ላይ በተለምዶ በ~ምልክት የሚታወቀውን Pulse Width Modulation (PWM) የሚደግፍ ፒን መጠቀም ወሳኝ ነው።angle: ይህ አርዱኖ ሲጀምር የሰርቮውን የመጀመሪያ አንግል ያዘጋጃል። ነባሪው እሴት 90 ዲግሪ ነው፣ ይህም በተለምዶ ሰርቮውን ወደ መሃል ያደርገዋል።angleStep: ይህ አዝራር በተገፋ ቁጥር የሰርቮው አንግል የሚቀየርበት መጠን ነው። የ5 እሴት ማለት እያንዳንዱ ግፊት ሰርቮውን በ5 ዲግሪ ያንቀሳቅሰዋል ማለት ነው። ለፈጣን እንቅስቃሴ ይህን መጨመር ወይም ለጥሩ ቁጥጥር መቀነስ ይችላሉ።LEFTእናRIGHT: እነዚህ#defineመመሪያዎች የግፊት አዝራሮቹ የተገናኙባቸውን ዲጂታል ፒኖች ይመድባሉ። አዝራሮችዎን ወደ ተለያዩ ፒኖች ካያያዙ፣ እነዚህን እሴቶች ከውቅርዎ ጋር ለማዛመድ መቀየር አለብዎት።
በloop() ተግባር ውስጥ ያለው ዋና አመክንዮ አዝራር መጫኑን ያረጋግጣል (በመጎተት-ወደላይ ውቅር ምክንያት ዝቅተኛ ሲግናል በማንበብ)። "ቀኝ" አዝራር ከተጫነ፣ የangle ተለዋዋጭን በangleStep ይቀንሳል። "ግራ" አዝራር ከተጫነ፣ angleን ይጨምራል። ኮዱ አንግሉ በ0 እና 180 ዲግሪ መካከል መቆየቱን ለማረጋገጥ የድንበር ማረጋገጫዎችን ያካትታል። ከዚያም ሰርቮውን ወደ አዲሱ ቦታ ለማንቀሳቀስ myservo.write(angle) ተግባር ጥቅም ላይ ይውላል።
የቀጥታ ፕሮጀክት ማሳያ
በቪዲዮ ማሳያው ውስጥ፣ ተግባሩ በግልጽ ይታያል። "ግራ" አዝራሩን መጫን እና መያዝ ሰርቮው በተቀላጠፈ ሁኔታ ወደ ግራ እንዲያንቀሳቅስ ያደርጋል፣ አንግሉ በአንድ ጊዜ በ5 ዲግሪ እየጨመረ፣ 180 ዲግሪ ላይ እስኪደርስ ድረስ። በተመሳሳይ፣ "ቀኝ" አዝራሩን መጫን እና መያዝ ሰርቮው ወደ ቀኝ እንዲመለስ ያደርጋል፣ አንግሉ እስከ 0 ዲግሪ እየቀነሰ። የአሁኑ አንግል ወደ Serial Monitor ይታተማል፣ ይህም የሰርቮውን ትክክለኛ ቦታ በቅጽበት እንዲያዩ ያስችልዎታል። (በቪዲዮው በ05:20)
የቪዲዮ ምዕራፎች
- [00:00] ሰርቮውን በአዝራሮች ስለመቆጣጠር መግቢያ
- [00:57] ለሰርቮ እና የግፊት አዝራሮች የሽቦ አገናኝ መመሪያ
- [02:12] የኮድ ማብራሪያ፣ ክፍል 1፡ ውቅር እና ማዋቀር
- [03:25] የኮድ ማብራሪያ፣ ክፍል 2፡ ዋናው የሉፕ አመክንዮ
- [05:20] የፕሮጀክቱ የቀጥታ ማሳያ
- [06:23] መደምደሚያ እና ሊሆኑ የሚችሉ አፕሊኬሽኖች
/*
* 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
}//
}
እንደሚያስፈልግዎት ይችላል
-
አማዞን
-
አማዞን
-
አማዞን
-
አማዞንServo motor on Amazonamzn.to
-
ኢቤይ
ፋይሎች📁
ሌላ ፋይሎች
-
SG90 Seroo ሞተር ዳታሺት
robojax-servo-SG90_datasheet.pdf0.12 MB