Lis 89: Kosalela motɛ́ ya libélá to 360| Cours Arduino Étape na Étape
Osili yo olingaki ko tika motɛ́ ya kopɛ́tola na nzela moko to na nzela mosusu mpo na ntango molai ndenge olingi, kasi kaka te kopɛ́tola na mbalakaka lokola servo ya standard? Yango wana motɛ́ ya servo ya kontinɛ́ti to ya 360 degré epesaka. Na ndenge esengeli, servo ya standard etambolaka na angle moko (mingi mpenza 0 kino 180 degré), kasi servo ya kontinɛ́ti ezalí kopɛ́tola na libanda na nzela moko to na nzela mosusu. Yango esalaka ekeseni mpo na kotonga ba robots mike, ba plateformes ya caméra, to nkasa nyonso oyo esengeli kopɛ́tola na kontinɛ́ti.
Na projɛ́ oyo, tokotonga système ya contrôle mpo na servo ya 360 degré na kopesa kaka ba boutons misato. Okokoka kotinda servo na kopɛ́tola na nzela moko, na nzela mosusu, to kotelema na ntango nyonso. Mokambi oyo akolakisa yo ndenge ya kosangisa ba fils, akolimbola ba parties ya code oyo esengeli kobongisama na moto, mpe akolakisa yo démonstration ya système na mosala.
Tala ba idées mosusu ya kosalela servo ya kontinɛ́ti na ba projɛ́ na yo:
- Kotonga robot ya ba roues mibale: Sala na ba servos mibale ya kontinɛ́ti mpo na kotambwisa ba roues, mpo na liboso, nsima, mpe kobongola.
- Kosala support ya caméra ya pan-and-tilt: Sala na servo moko ya kontinɛ́ti mpo na kopɛ́tola malembe na libanda ya caméra ya sécurité to ya banyama.
- Kotambwisa bande ya transport: Kontrôle système moke ya transport mpo na kosangisa to kopesa ba objets.
- Kosala stand ya exposition oyo ezalí kopɛ́tola: Lakisa modèle ya 3D to produit na plateforme oyo ezalí kopɛ́tola na kontinɛ́ti.
Matériel oyo esengeli
- Arduino board (Uno, Nano, etc.)
- Servo motor ya kontinɛ́ti (360 degré) (lokola FS90R, DS04-NFC)
- Ba boutons misato
- Ba fils ya jumper
- Breadboard
Mokambi ya kosangisa ba fils
Kosangisa ba fils mpo na projɛ́ oyo ezalí pete. Servo motor ezalí na ba fils misato: mbala mingi moko ya moyindo mpo na terre (GND), moko ya katikati (mbala mingi motane) mpo na puissance (5V), mpe moko ya pole (orange, jaune, to blanc) mpo na signal. Lokola elakísami na vidéo, servo esangisami na Arduino boye:
- Servo Ground (fil ya moyindo): Sangisa na GND ya Arduino.
- Servo Power (fil ya katikati/motane): Sangisa na 5V ya Arduino.
- Servo Signal (fil ya pole): Sangisa na pin 9 ya Arduino.
Mpo na ba boutons misato, chaque bouton ezalí na ba côtés mibale. Côté moko ya ba boutons nyonso esangisami mpe esangisami na GND ya Arduino. Côté mosusu ya chaque bouton esangisami na pin digitale mosusu, lokola elakísami na nse (na vidéo na 03:40):
- Bouton ya nzela moko (CW): Sangisa na pin 2 ya Arduino.
- Bouton ya kotelema: Sangisa na pin 3 ya Arduino.
- Bouton ya nzela mosusu (CCW): Sangisa na pin 4 ya Arduino.

Explication ya Code
Code esalemi mpo na kobongisama na moto. Esengeli mingi mpenza oyo okobongisa ezalí sc[] array, oyo ezalí na ba valeurs ya PWM oyo etindamaka na servo mpo na contrôle ya ba actions na yango. Ba valeurs oyo ezalí mpo na servo na yo moko te, esengeli kobongisama mpo na servo motor na yo (na vidéo na 12:23).
int sc[]={106, 58, 0};// ba commandes ya servo ezalí na ordre
//CCW, STOP,CW
Array oyo ezalí ntina ya calibration. Ba valeurs esalelamaka na ordre oyo:
- sc[0] = 106: Valeur oyo etindamaka mpo na servo na kopɛ́tola na nzela mosusu.
- sc[1] = 58: Oyo ezalí valeur ya "kotelema". Na ntina ya ba circuits ya kati, valeur oyo esengeli mpo na kotelema motɛ́ ezalí na ndenge na yango. Okoki komona servo na yo ezalí kopɛ́tola malembe ata soki otindi commande oyo, mpe okobongisa nombre oyo mokemoke mpo na kozwa valeur ya "kotelema ya solo" mpo na motɛ́ na yo.
- sc[2] = 0: Valeur oyo esalaka servo na kopɛ́tola na nzela moko na vitesse ya suka.
Okoki kobongisa ba valeurs na sc[] array mpo na kobongola vitesse ya kopɛ́tola. Na ndakisa, kokɔtisa sc[0] na 70 ekosalaka kopɛ́tola na nzela mosusu ezala malembe. Valeur oyo ezalí pembeni ya valeur ya "kotelema" (58), motɛ́ ekopɛ́tola malembe na nzela wana. Ba valeurs oyo ezalí mosika na 58 ekobakisaka vitesse kino na limite ya suka.
Ezalí mpe na ba variables mosusu oyo okoki kobongisa. servoPin esalemi na 9, oyo esengeli ezala pin oyo esalelaka PWM na Arduino na yo. Ba pins ya ba boutons esalemi na likoló ya code mpe ekoki kobongisama soki esengeli.
int servoPin = 9;// pin oyo esengeli ezala moko ya ba oyo ezalí na PWM ~
#define STOPpin 3 // pin ya bouton mpo na STOP
#define CWpin 2 // pin ya bouton mpo na CW
#define CCWpin 4 // pin ya bouton mpo na CCW
Na suka, scText[] array ezalí na ba strings oyo ekomamaka na Serial Monitor mpo na débogage. Okoki kobongola yango soki olingi kolakisa ba messages mosusu.
Ndenge ya Kosalela Code
Kotisa code oyo epesami na Arduino board na yo. Fungola Serial Monitor (bongisa na 9600 baud) mpo na komona ba messages ya état. Okoki sik’oyo kontroler servo na ba boutons misato:
- Pésa ngolu na bouton CW mpe simba yango: Servo ekopɛ́tola na nzela moko. Serial Monitor ekolakisa "CW" mpe valeur oyo etindamaka.
- Pésa ngolu na bouton CCW mpe simba yango: Servo ekopɛ́tola na nzela mosusu. Serial Monitor ekolakisa "CCW" mpe valeur oyo etindamaka.
- Pésa ngolu na bouton ya kotelema: Servo ekomeka kotelema. Serial Monitor ekolakisa "Stop".
Soki servo na yo etelemaka te mpenza tango ongi ya Stop epesami, okosengela ko komeka ntalo ya sc[1] na kati ya sc[] array. Meka kobalola ntalo yango moke (ndakisa, longwa na 58 okende na 54 to 52) mpe tinda lisusu code yango kino moteur ekotikala kozala na kimia mpenza.
Elakiseli ya Bomoi
Na video yango, moto oyo azali kolakisa azali komonisa système mobimba. Okoki komona servo ezali kobaluka na bangambo nyonso mibale kolanda bonginda ya ba boutons. Bilembo ya Serial Monitor mpe ezali komonana, ezali kolakisa état ya sika ("CW", "Stop", to "CCW") mpe ntalo oyo ezali kotindama na servo. Oyo ezali esaleli malamu mpo na koluka mpe kozwa ba valeurs ya calibration ya malamu mpo na moteur na yo. Elakiseli yango mpe ezali kolakisa ndenge kobalola ba valeurs na kati ya sc[] array ezali kosala ete vitesse ya moteur ebongwana, longwa na kotambola moke kino na vitesse na yango ya suka.
Nsukasuka
Projet oyo epesaka ndenge ya pete mpe ya kitoko ya kokamba servo moteur ya kosala na libela. Na koyeba ndenge ya calibration ya ntalo ya "stop", okoki kondima ete okozala na bokonzi ya sikisiki na ba projets na yo ya robotique mpe ya automatisation.
Bibuku ya Video
- [00:05] Bokambi ya Servo Moteur ya Kosala na Libela
- [02:02] Elakiseli ya Hardware ya Servo
- [02:40] Diagramme ya Câblage mpe Ba Connexions
- [05:07] Ndimbola ya Code: Ba Variables mpe Mise en Place
- [08:03] Ndimbola ya Code: Logique ya Boucle Principal
- [09:56] Fonction servoCommand()
- [10:54] Elakiseli ya Bomoi mpe Bilembo ya Serial Monitor
- [12:23] Calibration ya Vitesse ya Servo mpe Ba Valeurs ya Stop
++
/*
* S05-13 Servo with 3 push buttons
* Demonstration of Controlling a Continuous Servo (360 servo)
* This code allows you to control a 360-degree servo using push buttons
*
* Modified by Ahmad Shamshiri for Robojax Robojax.com
* on Jan 17, 2019 at 22:42 in Ajax, Ontario, Canada
Watch the video instruction for this sketch: https://youtu.be/hVe4TSRV4ww
Watch Introduction to 360 Servo video with code: https://youtu.be/b_xvu6wWafA
You can get the wiring diagram from my Arduino Course at Udemy.com
Learn Arduino step by step with all libraries, codes, and wiring diagrams all in one place
visit my course now http://robojax.com/L/?id=62
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
Original code by BARRAGAN <http://barraganstudio.com>
*
* Code is available at http://robojax.com/learn/arduino
* 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 downloaded 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/>.
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int servoPin = 9;// this pin must be one of those with PWM ~
#define STOPpin 3 // push button pin for STOP
#define CWpin 2 // push button for CW
#define CCWpin 4 // push button for CCW
int sc[]={106, 58, 0};// servo commands are in order
//CCW, STOP,CW
String scText[]={"CCW","Stop","CW"};// define texts for 3 actions
int statusText;
int CWBS, CCWBS, SBS;
//CW button status (CWBS)
//CCW button status (CCWBS)
//stop button status (SBS)
void setup() {
Serial.begin(9600);
pinMode(STOPpin,INPUT_PULLUP);// set pin for push button STOP
pinMode(CCWpin,INPUT_PULLUP);// set pin for push button CCW
pinMode(CWpin,INPUT_PULLUP);// set pin for push button CW
myservo.attach(servoPin); // attaches the servo on pin 9 to the servo object
myservo.write(sc[1]);// send STOP command
statusText=1;// initial value is STOP
}
void loop() {
CCWBS = digitalRead(CCWpin);// read status of button CCW
SBS = digitalRead(STOPpin);// read status of button STOP
CWBS = digitalRead(CWpin);// read status of button CW
if(CCWBS ==LOW)
{
servoCommand(0);
}else if(SBS ==LOW)
{
servoCommand(1);
}else if(CWBS ==LOW)
{
servoCommand(2);
}
Serial.println(scText[statusText]);
delay(50);
}// loop
void servoCommand(int n)
{
statusText = n;
myservo.write(sc[n]);
Serial.print("Going to ");
Serial.print(scText[n]);
Serial.print( "(");
Serial.print(sc[n]);
Serial.println(")");
}
Nko o na nki.
-
Amazon360 Degree Servo motor on Amazonlink.amazon
-
eBay360 Degree Servo motor on eBayebay.us
-
AliExpress360 Degree Servo motor on AliExpresss.click.aliexpress.com
-
AliExpress360 Degree Servo motor on AliExpress-2s.click.aliexpress.com
Mokili na bisika
-
Interno
Fichiers📁
Mabala a mangwe
-
SG90 Seroo motor datasheet
robojax-servo-SG90_datasheet.pdf0.12 MB