Lisɔ́ ya 88: Kokamba motɛ́ ya servo na nzela ya ba bouton mibale ya kopɛngola
Mokano oyo emonisi ndenge ya kotambwisa moteur ya servo na misuni mibale ya kobenda na Arduino. Na esika ya kotia na potentiomètre to na commande ya série, okoki kosalela ba interrupteurs tactiles pamba moko mpo na kotambwisa servo na loboko ya gauche to ya droite. Oyo ezali na tina mingi mpo na ba applications oyo esengeli na yo contrôle direct ya nzoto likolo ya mécanisme, lokola kotonga loboko ya robot, kobongisa gimbal ya caméra, to kosala système ya pan-and-tilt oyo ezali na contrôle ya mosika. Ba boutons esalaka ete okoka kobongisa angle ya servo petit à petit, na possibilité ya kosimba bouton mpo na kotambwisa yango na boumeli ya mouvement na yango mobimba.
Tala ba projets misusu ya pratique oyo okoki kosala na mise en place oyo:
- Kotonga panneau ya contrôle ya loboko ya robot to gripper.
- Kosala slider ya caméra to tête ya pan-tilt oyo ezali na contrôle ya mosika.
- Kokómisa interface ya contrôle physique mpo na avion modèle to gouvernail ya bateau.
- Kosala "teach pendant" pamba moko mpo na koyoka ba positions mpo na machine CNC to imprimante 3D.

Matériel mpe Ba Composants
Projet oyo esengeli kaka ba composants mingi te, mpe ezali mokano ya malamu mpo na koyekola ba entrées mpe ba sorties na Arduino.
- Arduino board (Uno, Nano, Mega, etc.)
- Moteur ya servo (lokola SG90 to MG995)
- Ba boutons ya kobenda mibale
- Ba fils ya jumper
- Breadboard (optionnel kasi ezali malamu)
Guide ya Câblage
Na vidéo, câblage ezali simple. Pin ya signal ya moteur ya servo esengeli kokangama na pin ya PWM na Arduino, oyo ezali pin 9 na ndakisa oyo. Énergie mpe terre ya servo esengeli kokangama na ba pins 5V mpe GND ya Arduino. Ba boutons mibale ya kobenda esengeli kokangama na ndenge ya kokokana. Loboko moko ya chaque bouton esengeli kokangama na terre, mpe loboko mosusu esengeli kokangama na pin ya entrée digitale na Arduino (pin 2 mpo na bouton ya "gauche" mpe pin 3 mpo na bouton ya "droite"). Code esalelaka ba résistances internes ya pull-up, yango wana ba résistances externes esengeli te mpo na ba boutons. (na vidéo na 00:57)

Explication ya Code
Code esalemi mpo na kozala facile à configurer. Ba parties ya configuration ya utilisateur ezali na likolo ya sketch. Tala elobeli ya ba variables mpe ba définitions ya ntina oyo okoki kobongola mpo na projet na yo moko.
#include <Servo.h>
Servo myservo; // kosala objet ya servo mpo na kotambwisa servo
int servoPin = 9;// pin oyo esengeli kozala na ba PWM ~
int angle =90; // angle ya ebandeli mpo na servo
int angleStep =5;
#define LEFT 2 // pin 2 esengeli kokangama na bouton ya gauche
#define RIGHT 3 // pin 3 esengeli kokangama na bouton ya droite
servoPin: Variable oyo elakisi pin ya Arduino oyo fil ya signal ya servo esengeli kokangama na yango. Ezali na ntina mingi kosalela pin oyo esalelaka Pulse Width Modulation (PWM), oyo mingi mpe ezali na symbole~na board.angle: Oyo etie angle ya ebandeli ya servo ntango Arduino ebandi. Valeur ya défaut ezali 90 degrés, oyo mingi mpe ezali na centre ya servo.angleStep: Oyo ezali incrément oyo angle ya servo ebongwanaka na mbala nyonso oyo bouton epresaka. Valeur ya 5 elimboli ete pression nyonso ekotambwisa servo na 5 degrés. Okoki kobakisela yango mpo na mouvement ya mbangu to kokitisa yango mpo na contrôle ya malamu.LEFTmpeRIGHT: Ba directives#defineoyo epesaka ba pins digital oyo ba boutons ya kobenda esengeli kokangama na yango. Soki okangi ba boutons na ba pins mosusu, esengeli kobongola ba valeurs oyo mpo na kokokana na mise en place na yo.
Logique ya ntina na fonction loop() etyolaka soki bouton epresami (na kotanga signal ya LOW likolo ya configuration ya pull-up). Soki bouton ya "droite" epresami, ekitisaka variable angle na angleStep. Soki bouton ya "gauche" epresami, ekobakisaka angle. Code ezali na ba vérifications ya limites mpo na komeka ete angle ekotikala na kati ya 0 na 180 degrés. Fonction myservo.write(angle) esalelamaka mpo na kotinda servo na esika ya sika.
Démonstration ya Projet na Direct
Na démonstration ya vidéo, fonctionnalité emonani polele. Kosimba mpe kokanga bouton ya "gauche" esalaka ete servo ekende na gauche na ndenge ya malamu, na angle ekobakisamaka na 5 degrés na mbala moko, kino ekokoma na 180 degrés mpe ekosimba. Na ndenge ya kokokana, kosimba mpe kokanga bouton ya "droite" esalaka ete servo ekende na droite, na angle ekitisamaka kino ekokoma na 0 degrés. Angle ya sik’oyo ekomamaka na Serial Monitor, mpo na kotala esika ya servo na temps réel. (na vidéo na 05:20)
Ba Chapitres ya Vidéo
- [00:00] Introduction na kotambwisa servo na ba boutons
- [00:57] Guide ya câblage mpo na servo mpe ba boutons ya kobenda
- [02:12] Explication ya code, partie 1: Mise en place mpe configuration
- [03:25] Explication ya code, partie 2: Logique ya boucle principale
- [05:20] Démonstration ya projet na direct
- [06:23] Conclusion mpe ba applications possibles
/*
* 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
}//
}
Nko o na nki.
-
Amazon
-
Amazon
-
Amazon
-
AmazonServo motor on Amazonamzn.to
-
eBay
Mokili na bisika
Fichiers📁
Mabala a mangwe
-
SG90 Seroo motor datasheet
robojax-servo-SG90_datasheet.pdf0.12 MB