Luka Code

Kokamba ya Servo na Mabutu ya Kobenda na Arduino

Kokamba ya Servo na Mabutu ya Kobenda na Arduino

Na boyekoli oyo, tokoyekola ndenge ya kokamba moteur ya servo na kosalela ba bouton mibale ya kopusa, moko mpo na kotambwisa servo na loboko ya gauche mpe mosusu mpo na kotambwisa yango na loboko ya droite. Ntango okanga bouton ya droite, servo ekotambola na degré 10 na loboko ya droite, mpe ntango okanga bouton ya gauche, ekotambola na motango moko na loboko ya gauche. Soki obombi bouton, servo ekokoba kotambola na direction wana kino okotika yango.

Projet oyo ezali nzela malamu ya kososola ndenge ya kosangisa ba bouton na moteur ya servo na kosalela Arduino. Tokolobela ba composants ya hardware oyo esengeli, ba instructions ya câblage, mpe code oyo esengeli mpo ete nyonso esala. Mpo na kososola malamu, okoki kotala vidéo oyo ezali elongo na tutoriel oyo (na vidéo na 01:00).

Hardware Explication

Mpo na projet oyo, okosalela carte Arduino, moteur ya servo, mpe ba bouton mibale ya kopusa. Moteur ya servo ezali na mokumba ya mouvement, nzoka nde ba bouton ya kopusa bazali lokola ba entrées mpo na kokamba direction ya mouvement yango. Arduino esalelaka ba entrées oyo mpe etindaka ba signaux oyo esengeli na servo.

Moteur ya servo esalaka na base ya ba signaux ya pulse-width modulation (PWM). Na kotinda ba largeurs ya pulse ndenge na ndenge, okoki kokamba angle ya servo. Ba bouton ya kopusa bakokangama na ba pins ya entrée digitale na Arduino, mpe tokosalela ba résistances internes ya pull-up mpo na kosala câblage ezala pete.

Détails ya Datasheet

FabricantBamboka ndenge na ndenge
Numéro ya partieSG90
Tension ya logique/IO5 V
Tension ya alimentation4.8–6 V
Courant ya sortie (na canal)1.5 A max
Courant ya pointe (na canal)2.5 A max
Guidance ya fréquence PWM50 Hz
Seuils ya logique ya entrée0.3VCC to 0.7VCC
Chute ya tension / RDS(on) / saturation0.4 V
Limites thermiques85 °C
PaquetPlastique
Notes / variantesRotation standard ya 180°

  • Pesa likebi ete servo ezali na rating mpo na tension ya alimentation na yo.
  • Salela ba dissipateurs ya chaleur oyo esengeli soki ozali kosala na ba courants ya likolo.
  • Kanga ba bouton na terre na configuration ya pull-up.
  • Debounce ba bouton na yo soki ozali komona ba comportements ya mabe.
  • Talá sortie ya série mpo na débogage.

Instructions ya Câblage

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

Mpo na câbler ba composants, banda na kokangisa moteur ya servo. Kanga fil ya motane ya servo na pin 5V na Arduino, fil ya moi-nda na pin GND, mpe fil ya jaune to ya pembe ya signal na pin 9 na Arduino. Pin oyo ekokamba position ya servo.

Na sima, câbler ba bouton ya kopusa. Kanga terminal moko ya bouton ya droite na pin 2 mpe terminal mosusu na terre. Mpo na bouton ya gauche, kanga terminal moko na pin 12 mpe terminal mosusu na terre mpe. Configuration oyo epesaka ba résistances internes ya pull-up mpo na kobatela ba pins na niveau ya likolo ntango ba bouton bazali te ya kopusa.

Ba Exemples ya Code & Explication

Tobanda na code mpo na kokamba servo na bouton moko ya kopusa. Code ebandisaka objet ya servo mpe esalelaka angle ya ebandeli. Tala mwa ndambo oyo:

int angle = 90;    // angle ya ebandeli mpo na servo
int angleStep = 10; // taille ya étape mpo na mouvement

Na ndambo oyo, angle ezali kopesa position ya sika ya servo, nzoka nde angleStep ezali kopesa ndenge servo etambolaka na mbala nyonso ya kopusa bouton. Code oyo ezali na tina mpo na kolandela position ya servo.

Na sima, tozali na fonction ya setup epai tozali kokangisa servo mpe ko configurer ba pins ya entrée:

void setup() {
  Serial.begin(9600);          // configuration ya série
  myservo.attach(9);  // kokangisa servo na pin 9
  pinMode(2, INPUT_PULLUP); // configuration ya pin ya bouton
}

Na setup, tobandisaka moniteur ya série mpe tokangisaka servo na pin 9. Bouton na pin 2 ezali configuré lokola entrée na résistance ya pull-up, oyo esalaka câblage ezala pete mpe epekisaka kosalela ba résistances externes.

Na suka, tozali kotala fonction ya loop oyo esalelaka kopusa ya bouton:

while(digitalRead(2) == LOW) {
  angle = angle + angleStep; // kobakisa angle
  myservo.write(angle); // kotambwisa servo
}

Boucle oyo ezali kotala mbala na mbala soki bouton epusami. Ntango epusami, angle ebakisamaka na étape oyo ezwami, mpe servo etambolaka ndenge esengeli. Ezali na tina mingi mpo na komeka ete angle ekotikala na kati ya ba limites (0 to 180 degrés) mpo na kopekisa kobebisa servo.

Démonstration / Nini Okoki Kozela

Ntango okanga bouton ya droite, servo esengeli kotambola na loboko ya droite na ba incréments ya 10 degrés kino ekokoma na maximum ya 180 degrés. Ndenge moko, kopusa bouton ya gauche ekotambwisa yango na loboko ya gauche. Soki obombi bouton, servo ekokoba kotambola na direction wana kino okotika bouton (na vidéo na 01:00).

Ba erreurs ya mbala mingi ezali na ba problèmes ya câblage, lokola ba connexions ya mabe to ba entrées ya flottantes. Pesa likebi ete ba connexions na yo ezali ya makasi mpe ozali kosalela ba pins oyo esengeli ndenge code elobi.

Images

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
Langue: 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
Langue: 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
  }// 

  
}

Nko o na nki.

Mokili na bisika

Pas encore de ressources.

Fichiers📁

Aucun fichier disponible.