Search Code

Xakamaynta Servo-ga iyadoo la isticmaalayo Buttons-ka Riixaya iyadoo la isticmaalayo Arduino

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 saarahaKala duwan
Nambarka qaybtaSG90
Danabka Logic/IO5 V
Danabka sahayda4.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 PWM50 Hz
Heerarka gelinta macquulka ah0.3VCC ilaa 0.7VCC
Hoos u dhaca danabka / RDS(on) / dheregsanaanta0.4 V
Xadka kulaylka85 °C
BaakadBalastiig
Qoraallo / noocyo kala duwanWareeg 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

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

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.

Sawirro

Control a servo with a single push button using Arduino
Control Servo with single push button with Arduino
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
98-Control a servo with a single push button using Arduino
Luqadda: C++
/*
 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

  
}
99-Control a servo with two push buttons using Arduino
Luqadda: C++
/*
 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

Kheyraadka & Tixraacyada

Wali wax kaydsan ah oo weli ma jiro.

Faylasha📁

Fayl la'aan.