Casharka 88: Xakamaynta matoorka servo iyadoo la isticmaalayo laba badhammo riixid
Mashruucani wuxuu muujinayaa sida loo xakameeyo matoor servo iyadoo la isticmaalayo laba badhamad oo riixid ah oo Arduino ah. Halkii aad ku tiirsan lahayd potentiometer ama amar taxane ah, waxaad isticmaali kartaa badhamad fudud oo taabasho ah si aad gacanta ugu dhaqaaqdid servo bidix ama midig. Tani waxay aad faa'iido ugu leedahay codsiyada aad u baahan tahay xakameyn toos ah oo jireed oo ku saabsan qalabka, sida dhismaha gacan robotic ah, hagaajinta gimbal kamarad, ama abuurista nidaam pan-and-tilt oo laga maamulo fog. Badhamadu waxay kuu oggolaanayaan inaad si tartiib ah u hagaajiso xagasha servo, iyadoo awood u leedahay inaad qabato badhanka si aad ugu dhaqaaqdo dhammaan kala duwanaanshihiisa dhaqdhaqaaqa.
Waa kuwan dhowr mashruuc oo wax ku ool ah oo aad ku dhisi karto qaabkan:
- Dhismaha guddi xakameyn gacmeed ah oo loogu talagalay gacan robotic ama qabasho.
- Abuurista slider kamarad oo laga maamulo fog ama madax pan-tilt.
- Horumarinta interface xakameyn jireed oo loogu talagalay diyaarad model ama rudder doon.
- Samaynta "teach pendant" fudud si loo duubo boosaska mashiinka CNC ama daabacaha 3D.

Qalabka iyo Qaybaha
Mashruucani wuxuu u baahan yahay oo kaliya dhowr qaybood oo aasaasi ah, taasoo ka dhigaysa bilow fiican oo lagu baranayo labada qalab ee gelinta iyo soo-saarka ee Arduino.
- Guddi Arduino (Uno, Nano, Mega, iwm.)
- Matoor servo (tusaale, SG90 ama MG995)
- Laba badhamad oo riixid ah oo ku-meel-gaar ah
- Fiilooyin jumper
- Breadboard (ikhtiyaar ah laakiin lagu taliyay)
Hagaha Fiilada
Fiidiyowga, fiiladu waa toos. Fiilada signal-ka ee matoorka servo waxay ku xiran tahay pin-ka PWM-ka ee Arduino, kaas oo ah pin 9 tusaalahan. Korontada iyo dhulka ee servo waxay ku xiran yihiin 5V iyo GND pins ee Arduino. Labada badhamad ee riixid waxay u xiran yihiin si la mid ah midba midka kale. Hal lug oo badham kasta waxay ku xiran tahay dhulka, iyo lugta kale waxay ku xiran tahay pin gelin dhijitaal ah oo Arduino ah (pin 2 ee badhanka "bidix" iyo pin 3 ee badhanka "midig"). Koodhku wuxuu isticmaalaa resistors-ka gudaha ee pull-up, sidaas darteed ma jiraan resistors dibadeed oo loo baahan yahay badhamada. (fiidiyowga 00:57)

Sharaxaadda Koodhka
Koodhku wuxuu loogu talagalay in si fudud loo habeeyo. Qaybaha muhiimka ah ee isticmaaluhu wax ka beddeli karo waxay ku yaalliin dusha sare ee sketch-ka. Waa kuwan kala-baxa doorsoomayaasha iyo qeexitaannada muhiimka ah ee aad rabto inaad hagaajiso mashruucaaga.
#include <Servo.h>
Servo myservo; // abuur shay servo si loo xakameeyo servo
int servoPin = 9;// pin-kan waa inuu ka mid yahay kuwa PWM ~
int angle =90; // xagasha bilowga ah ee servo
int angleStep =5;
#define LEFT 2 // pin 2 waxay ku xiran tahay badhanka bidix
#define RIGHT 3 // pin 3 waxay ku xiran tahay badhanka midig
servoPin: Doorsoomahaani wuxuu qeexayaa pin-ka Arduino ee fiilada signal-ka ee servo ku xiran tahay. Waa muhiim inaad isticmaasho pin taageerta Pulse Width Modulation (PWM), oo sida caadiga ah lagu calaamadiyo~guddi ku yaal.angle: Tani waxay dejisaa xagasha bilowga ah ee servo marka Arduino bilaabmayo. Qiimaha caadiga ah waa 90 darajo, kaas oo sida caadiga ah dhexda ku haya servo.angleStep: Kani waa korodhka xagasha servo uu isku beddelo mar kasta oo badhanka la riixo. Qiimaha 5 wuxuu ka dhigan yahay in riix kasta uu servo u dhaqaajin doono 5 darajo. Waxaad kordhin kartaa tan dhaqdhaqaaq degdeg ah ama yarayn kartaa xakameyn fiican.LEFTiyoRIGHT: Tilmaamahan#definewaxay u qoondeeyaan pins-ka dhijitaalka ah ee badhamada riixid ku xiran yihiin. Haddii aad badhamada ku xirto pins kala duwan, waa inaad beddeshaa qiimahan si ay u waafaqaan qaabkaaga.
Mantiska asaasiga ah ee shaqada loop() wuxuu hubinayaa haddii badhanka la riixo (iyadoo la akhrinayo signal LOW sababtoo ah qaabka pull-up). Haddii badhanka "midig" la riixo, waxay yaraynaysaa doorsoomaha angle qiyaasta angleStep. Haddii badhanka "bidix" la riixo, waxay kordhinaysaa angle. Koodhku wuxuu ku darayaa hubin xuduud ah si loo hubiyo in xagashu ku hadhsan tahay inta u dhaxaysa 0 iyo 180 darajo. Shaqada myservo.write(angle) ayaa markaa loo isticmaalaa inuu amro servo inuu u dhaqaaqo booska cusub.
Muuujinta Mashruuca Tooska ah
Muuujinta fiidiyowga, shaqadu si cad ayaa loo muujiyay. Riixista iyo qabashada badhanka "bidix" waxay keentaa in servo si habsami leh u dhaqaaqo bidix, iyadoo xagashu kordhinayso 5 darajo mar kasta, ilaa ay gaadho 180 darajo oo istaagto. Sidoo kale, riixista iyo qabashada badhanka "midig" waxay ka dhigaysaa servo inuu dib u dhaqaaqo midig, iyadoo yaraynaysa xagasha ilaa ay gaadho 0 darajo. Xagasha hadda jirta waxaa lagu daabacaa Serial Monitor, taasoo kuu oggolaanaysa inaad aragto booska saxda ah ee servo waqti-qaar. (fiidiyowga 05:20)
Qaybaha Fiidiyowga
- [00:00] Hordhac ku saabsan xakamaynta servo badhamada
- [00:57] Hagaha fiilada ee servo iyo badhamada riixid
- [02:12] Sharaxaadda koodhka, qaybta 1: Dejinta iyo qaabaynta
- [03:25] Sharaxaadda koodhka, qaybta 2: Mantiska loop-ka ugu weyn
- [05:20] Muujin toos ah oo mashruuca ah
- [06:23] Gunaanad iyo codsiyada suurtagalka ah
/*
* 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
}//
}
Waad u baahan tahay
-
Amaazon
-
Amaazon
-
Amaazon
-
AmaazonServo motor on Amazonamzn.to
-
eBay
Kheyraadka & Tixraacyada
Faylasha📁
Faylal kale
-
SG90 Seroo motor warbixin
robojax-servo-SG90_datasheet.pdf0.12 MB