This tutorial is part of: Matoorada Servo
Dhammaan fiidiyowyada la xiriira matoorada servo ee la xiriira, halkan ayaa lagu taxay. Xiriirinta fiidiyowyada kale waxay ku yaalliin maqaalkan hoose.
Xakamaynta Servo-ga iyadoo la isticmaalayo Buttons-ka Riixaya iyadoo la isticmaalayo Arduino
Cashiggan, waxaan ku baran doonnaa sida loo xakameeyo matoor servo iyadoo la isticmaalayo laba badhan riixid, mid loogu talagalay inuu matoorka u dhaqaaqo dhanka bidix iyo mid kale oo loogu talagalay inuu u dhaqaaqo dhanka midig. Markaad riixdo badhanka midig, matoorku wuxuu u dhaqaaqi doonaa 10 darajo dhanka midig, markaad riixdo badhanka bidixna, wuxuu u dhaqaaqi doonaa isla qaddarkaas dhanka bidix. Haddii aad hayso badhan, matoorku wuxuu ku sii socon doonaa jihadaas ilaa aad ka sii daysid.

Mashruucani waa hab fiican oo lagu fahmo sida loo isku xiro badhannada matoor servo iyadoo la isticmaalayo Arduino. Waxaan dabooli doonnaa qaybaha qalabka lagama maarmaanka ah, tilmaamaha fiilada, iyo koodhka loo baahan yahay si ay wax walba u shaqeeyaan. Si aad u fahanto si cad, waxaad tixraaci kartaa fiidiyowga la socda casharkan (fiidiyowga 01:00).
Qalabka La Sharaxay
Mashruucan, waxaad u baahan doontaa Arduino board, matoor servo, iyo laba badhan riixid. Matoorka servowuxuu mas'uul ka yahay dhaqaaqa, halka badhannada riixidna ay u shaqeeyaan sidii wax gelin ah oo xakameynaya jihada dhaqaaqaas. Arduino wuxuu farsameeyaa gelinnadaan wuxuuna u diraa calaamadaha ku habboon matoorka.
Matoorka servowuxuu ku shaqeeyaa iyadoo lagu salaynayo calaamadaha ballaca-boodboodka (PWM). Adigoo soo diraya ballacyo kala duwan, waxaad xakameyn kartaa xagasha matoorka. Badhannada riixid waxaa lagu xiri doonaa biinanka gelinta dhijitaalka ah ee Arduino, waxaanan isticmaali doonnaa resistors-ka kor-u-jiidashada gudaha si loo fududeeyo fiilada.
Faahfaahinta Xogta
| Soo saaraha | Kala duwan |
|---|---|
| Nambarka qaybta | SG90 |
| Danabka Logic/IO | 5 V |
| Danabka sahayda | 4.8–6 V |
| Qulqulka soo-saarka (kanal kasta) | 1.5 A ugu badnaan |
| Qulqulka ugu sarreeya (kanal kasta) | 2.5 A ugu badnaan |
| Hagaha soo noqnoqoshada PWM | 50 Hz |
| Heerarka gelinta macquulka ah | 0.3VCC ilaa 0.7VCC |
| Hoos u dhaca danabka / RDS(on) / dheregsanaanta | 0.4 V |
| Xadka kulaylka | 85 °C |
| Baakad | Balastiig |
| Qoraallo / noocyo kala duwan | Wareeg caadi ah 180° |
- Hubso in matoorka lagu qiimeeyay danabka sahaydaada.
- Isticmaal qaboojiye ku habboon haddii aad ku shaqeyneyso qulqulo sare.
- Ku xir badhannada dhulka iyadoo la isticmaalayo qaabka kor-u-jiidashada.
- Debounce badhannadaada haddii aad la kulanto dhaqan aan joogto ahayn.
- La soco soo-saarka serial-ka si aad u xalliso khaladaadka.
Tilmaamaha Fiilada

Si aad u xirto qaybaha, ku bilow adigoo ku xira matoorka servo. Ku xir fiilada cas ee matoorka biinka 5V ee Arduino, fiilada madow ee biinka GND, iyo fiilada huruudda ama cad ee calaamadda biinka 9 ee Arduino. Biinkan wuxuu xakameyn doonaa booska matoorka.
Marka xigta, ku xir badhannada riixid. Ku xir hal dhammaad oo ka mid ah badhanka midig biinka 2 iyo dhammaadka kale dhulka. Badhanka bidix, ku xir hal dhammaad biinka 12 iyo dhammaadka kale dhulka sidoo kale. Qaabkani wuxuu u oggolaanayaa resistors-ka kor-u-jiidashada gudaha inay biinanka ku hayaan heer sare marka badhannada aan la riixin.
Tusaalooyinka Koodhka & Sharaxaad
Aan ku bilowno koodhka xakameynta matoorka hal badhan riixid. Koodhku wuxuu bilaabayaa shayga servo wuxuuna dejinayaa xagal bilow ah. Waa kan qayb kooban:
int angle = 90; // xagasha bilowga ah ee matoorka
int angleStep = 10; // cabbirka tallaabada dhaqaaqa
Qaybtan, angle waxay ka dhigan tahay booska hadda jira ee matoorka, halka angleStep ay qeexdo inta uu matoorku dhaqaaqo markasta oo badhan la riixo. Koodhkani wuxuu lama huraan u yahay raadraaca booska matoorka.
Marka xigta, waxaan haynaa shaqada setup-ka halkaas oo aan ku xirno matoorka oo aan ku qaabayno biinanka gelinta:
void setup() {
Serial.begin(9600); // dejinta serial-ka
myservo.attach(9); // ku xira matoorka biinka 9
pinMode(2, INPUT_PULLUP); // qaabaynta biinka badhanka
}
Setup-ka, waxaan bilaabaynaa kormeeraha serial-ka waxaanan ku xirnaa matoorka biinka 9. Badhanka biinka 2 waxaa loo dejiyay sidii gelin leh resistor kor-u-jiidasho ah, taas oo fududaynaysa fiilada oo ka ilaalinaysa baahida resistors-ka dibadda ah.
Ugu dambeyntii, waxaan eegaynaa shaqada loop-ka ee wax ka qabata riixista badhanka:
while(digitalRead(2) == LOW) {
angle = angle + angleStep; // kordhi xagasha
myservo.write(angle); // dhaqaaq matoorka
}
Loop-kani wuxuu si joogto ah u hubinayaa haddii badhanka la riixay. Marka la riixo, xagashu waxay ku kordhaa tallaabada la qeexay, matoorkuna wuxuu u dhaqaaqaa si waafaqsan. Waa lagama maarmaan in la hubiyo in xagashu ku sii jirto xadka (0 ilaa 180 darajo) si looga ilaaliyo dhaawaca matoorka.
Muuujin / Waxa Lagu Filan Karaa
Markaad riixdo badhanka midig, matoorku wuxuu u dhaqaaqi doonaa dhanka midig tallaabo 10 darajo ah ilaa uu gaaro ugu badnaan 180 darajo. Sidoo kale, riixista badhanka bidix waxay u dhaqaaqi doontaa dhanka bidix. Haddii aad hayso badhan, matoorku wuxuu ku sii socon doonaa jihadaas ilaa aad ka sii daysid badhanka (fiidiyowga 01:00).
Khaladaadka caadiga ah waxaa ka mid ah arrimaha fiilada, sida ku xirnaanshaha khaldan ama gelinnada sabeynaya. Had iyo jeer hubso in ku xirnaanshahaagu ay yihiin kuwo adag iyo inaad isticmaalayso biinanka saxda ah sida lagu qeexay koodhka.
This tutorial is part of: Matoorada Servo
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Xakamaynta Servo-ga iyadoo la isticmaalayo Potentiometer iyadoo la adeegsanayo Arduino
- Xakamaynta Servo-ga iyadoo la isticmaalayo Potentiometer iyo LCD1602 iyadoo la adeegsanayo Arduino
- Controlling Servo Motors Using an Infrared Remote with Arduino
- Xakameynta Moterka Servo ee Arduino iyadoo la adeegsanayo Potentiometer
- Xakameynta Meesha Servo iyadoo la adeegsanayo Gacmaha ee Arduino
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- Sida loo isticmaalo Servo 360° oo joogto ah oo leh Arduino
- Koodhka Arduino iyo Fiidiyowga ee PCA9685 16-Kanaal 12-Bit Kontoroolaha Servo V1
- Dhis Arduino Servo Toggle Switch ku sameeyo oo leh Push Button
/*
Controlling a servo with a push button with Arduino
When a push button is pressed, the servo starts moving to the right or left until
it reaches 180 and then returns to 0 degrees.
May 22, 2018 at 01:00
Written by Ahmad S. for Robojax.com in Ajax, Ontario, Canada
Watch a video for this code at https://youtu.be/7woqNH_qby4
This code is taken from http://robojax.com/learn/arduino
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int angle =90; // initial angle for servo
int angleStep =10;
void setup() {
// Servo button demo by Robojax.com
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9 to the servo object
pinMode(2,INPUT_PULLUP);
Serial.println("Robojax Servo Button ");
}
void loop() {
while(digitalRead(2) == LOW){
// change the angle for the next time through the loop:
angle = angle + angleStep;
// reverse the direction of the movement at the ends of the angle:
if (angle <= 0 || angle >= 180) {
angleStep = -angleStep;
}
myservo.write(angle); // move the servo to the desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degrees");
delay(100); // waits for the servo to get there
}// while
}
/*
Controlling a servo with two push buttons with Arduino
When the left push button is pressed, the servo starts moving to the left until it reaches 180 (or zero) degrees.
When the right push button is pressed, the servo starts moving to the right until it reaches 180 (or zero) degrees.
At any instance, if the button is released, the servo stops.
May 22, 2018, at 01:00
Written by Ahmad S. for Robojax.com in Ajax, Ontario, Canada
Watch a video for this code at https://youtu.be/7woqNH_qby4
This code is taken from http://robojax.com/learn/arduino
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int angle =90; // initial angle for servo
int angleStep =5;
#define LEFT 12 // pin 12 is connected to left button
#define RIGHT 2 // pin 2 is connected to right button
void setup() {
// Servo button demo by Robojax.com
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9 to the servo object
pinMode(LEFT,INPUT_PULLUP); // assign pin 12 as input for Left button
pinMode(RIGHT,INPUT_PULLUP);// assign pin 2 as input for right button
myservo.write(angle);// send servo to the middle at 90 degrees
Serial.println("Robojax Servo Button ");
}
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
}//
}
Waad u baahan tahay
-
AmaazonServo motor on Amazonamzn.to
-
AliExpressPurchase SG90 Servo motor 180 or 360 from AliExpresss.click.aliexpress.com
Kheyraadka & Tixraacyada
Wali wax kaydsan ah oo weli ma jiro.
Faylasha📁
Fayl la'aan.