Somo la 88: Kudhibiti motor ya servo kwa kutumia swichi mbili za kushinikiza kitufe
Mradi huu unaonyesha jinsi ya kudhibiti motor ya servo kwa kutumia vitufe viwili vya kushinikiza na Arduino. Badala ya kutegemea potentiometer au amri ya serial, unaweza kutumia swichi rahisi za kugusa kusogeza servo kwa mkono kushoto au kulia. Hii ni muhimu sana kwa matumizi ambapo unahitaji udhibiti wa moja kwa moja, wa kimwili juu ya utaratibu, kama vile kujenga mkono wa roboti, kurekebisha gimbal ya kamera, au kuunda mfumo wa mbali wa pan-and-tilt. Vitufe vinakuruhusu kurekebisha pembe ya servo hatua kwa hatua, kwa uwezo wa kushikilia kitufe kupeperusha kwenye safu yake yote ya mwendo.
Hapa kuna miradi michache ya vitendo unayoweza kujenga kwa usanidi huu:
- Kujenga jopo la udhibiti wa mkono kwa mkono wa roboti au gripper.
- Kuunda slider ya kamera inayodhibitiwa kwa mbali au kichwa cha pan-tilt.
- Kuendeleza kiolesura cha udhibiti wa kimwili kwa ndege ya mfano au usukani wa mashua.
- Kutengeneza "teach pendant" rahisi kurekodi nafasi za mashine ya CNC au printa ya 3D.

Vifaa na Vipengele
Mradi huu unahitaji vipengele vichache tu vya msingi, na kuifanya kuwa hatua bora ya kuanzia kujifunza kuhusu vifaa vya kuingiza na kutoa na Arduino.
- Bodi ya Arduino (Uno, Nano, Mega, n.k.)
- Motor ya servo (mfano, SG90 au MG995)
- Vitufe viwili vya kushinikiza vya muda mfupi
- Waya za jumper
- Breadboard (hiari lakini inapendekezwa)
Mwongozo wa Uunganishaji
Katika video, uunganishaji ni rahisi. Pini ya ishara ya motor ya servo imeunganishwa kwenye pini inayoweza PWM kwenye Arduino, ambayo ni pini 9 katika mfano huu. Nguvu na ardhi ya servo zimeunganishwa kwenye pini za 5V na GND za Arduino. Vitufe viwili vya kushinikiza vimeunganishwa kwa njia sawa kwa kila kimoja. Mguu mmoja wa kila kitufe umeunganishwa kwenye ardhi, na mguu mwingine umeunganishwa kwenye pini ya kuingiza ya dijiti kwenye Arduino (pini 2 kwa kitufe cha "kushoto" na pini 3 kwa kitufe cha "kulia"). Msimbo unatumia resistors za ndani za pull-up, kwa hivyo hakuna resistors za nje zinazohitajika kwa vitufe. (katika video saa 00:57)

Maelezo ya Msimbo
Msimbo umeundwa kuwa rahisi kusanidi. Sehemu muhimu zinazoweza kusanidiwa na mtumiaji ziko juu ya sketch. Hapa kuna uchambuzi wa vigezo na ufafanuzi muhimu unaoweza kutaka kurekebisha kwa mradi wako mwenyewe.
#include <Servo.h>
Servo myservo; // tengeneza kitu cha servo kudhibiti servo
int servoPin = 9;// pini hii lazima iwe kati ya zile zilizo na PWM ~
int angle =90; // pembe ya awali ya servo
int angleStep =5;
#define LEFT 2 // pini 2 imeunganishwa kwenye kitufe cha kushoto
#define RIGHT 3 // pini 3 imeunganishwa kwenye kitufe cha kulia
servoPin: Kigezo hiki kinafafanua pini ya Arduino ambayo waya ya ishara ya servo imeunganishwa. Ni muhimu kutumia pini inayounga mkono Pulse Width Modulation (PWM), kwa kawaida inaonyeshwa na alama ya~kwenye bodi.angle: Hii inaweka pembe ya awali ya servo wakati Arduino inapoanza. Thamani ya default ni digrii 90, ambayo kwa kawaida inaweka servo katikati.angleStep: Hii ni nyongeza ambayo pembe ya servo inabadilika kila wakati kitufe kinapobonyezwa. Thamani ya 5 inamaanisha kila kubonyeza kutasogeza servo kwa digrii 5. Unaweza kuongeza hii kwa mwendo wa haraka au kuipunguza kwa udhibiti wa hali ya juu.LEFTnaRIGHT: Maagizo haya ya#defineyanaweka pini za dijiti ambazo vitufe vya kushinikiza vimeunganishwa. Ikiwa unawasha vitufe vyako kwenye pini tofauti, lazima ubadilishe thamani hizi ili zilingane na usanidi wako.
Mantiki ya msingi katika kazi ya loop() inaangalia ikiwa kitufe kimebonyezwa (kwa kusoma ishara ya LOW kutokana na usanidi wa pull-up). Ikiwa kitufe cha "kulia" kimebonyezwa, inapunguza kigezo cha angle kwa angleStep. Ikiwa kitufe cha "kushoto" kimebonyezwa, inaongeza angle. Msimbo unajumuisha ukaguzi wa mipaka kuhakikisha pembe inabaki ndani ya safu ya digrii 0 hadi 180. Kazi ya myservo.write(angle) kisha inatumiwa kuamuru servo kusogea kwenye nafasi mpya.
Maonyesho ya Moja kwa Moja ya Mradi
Katika maonyesho ya video, utendaji unaonyeshwa wazi. Kubonyeza na kushikilia kitufe cha "kushoto" husababisha servo kupeperusha vizuri kushoto, na pembe ikiongezeka kwa digrii 5 kwa wakati mmoja, hadi kufikia digrii 180 na kusimama. Vile vile, kubonyeza na kushikilia kitufe cha "kulia" hufanya servo kupeperusha kurudi kulia, ikipunguza pembe hadi kufikia digrii 0. Pembe ya sasa inachapishwa kwenye Serial Monitor, ikikuruhusu kuona nafasi halisi ya servo kwa wakati halisi. (katika video saa 05:20)
Sura za Video
- [00:00] Utangulizi wa kudhibiti servo kwa vitufe
- [00:57] Mwongozo wa uunganishaji wa servo na vitufe vya kushinikiza
- [02:12] Maelezo ya msimbo, sehemu ya 1: Usanidi na usanidi
- [03:25] Maelezo ya msimbo, sehemu ya 2: Mantiki kuu ya kitanzi
- [05:20] Maonyesho ya moja kwa moja ya mradi
- [06:23] Hitimisho na matumizi yanayowezekana
/*
* 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
}//
}
Tänker att du kanske behöver
-
Amazon
-
Amazon
-
Amazon
-
AmazonServo motor on Amazonamzn.to
-
eBay
Resurser och referenser
Filer📁
Andra filer
-
SG90 Seroo motor datablad
robojax-servo-SG90_datasheet.pdf0.12 MB