Mateya oyo ezali eteni ya: Servo Motors ya mosala
Ba vidéos nionso oyo etali ba servo moteurs oyo ezali na boyokani, etangami awa. Ba liens ya ba vidéos misusu ezali na se ya article oyo.
Kokamba ya Kopekola Esika ya Servo na Maboko na Arduino
Na boyekoli oyo, tokoyekola ndenge ya kokamba moteur ya servo na misala ya maboko. Na kotambwisa loboko na yo na ngambo ya gauche to ya droite, okoki kosala ete moteur ya servo eyamba ndenge esengeli. Proje oyo esalelaka senseur ya geste APDS-9960 mpo na koyeba botambwisi ya maboko mpe kobongola yango na ba positions ya servo. Mpo na ndimbola ya vizueli ya malamu, tala video na (na video na 00:30).

Ba composants ya liboso oyo tokosalela ezali moteur ya servo mpe senseur ya geste APDS-9960. Moteur ya servo ekobaluka na ba angles oyo esengeli kolandana na ba gestes oyo ekomonani, wana senseur APDS-9960 ekoyamba botambwisi ya maboko. Configuration oyo epesaka nzela ya kokamba servo na ndenge ya pete na kosimba te.
Matoko ya Hardware
Moteur ya servo ezali esaleli moke oyo ekoki kobaluka na ba angles oyo esengeli, mpo na ba applications oyo esengaka position ya malamu. Ezali na ba fils misato: courant (motane), terre (noir), mpe signal (orange). Fil ya signal ezali kozwa ba commandes mpo na kotambwisa servo na angle oyo esengeli.
APDS-9960 ezali senseur oyo ekoki koyeba ba gestes, pole ya environnement, mpe couleur. Ezali kosolola na Arduino na nzela ya I2C mpe esengaka ba pins moke mpo na courant mpe transfert ya ba données. Senseur ekoki koyeba botambwisi lokola likolo, na nse, gauche, mpe droite, oyo tokosalela mpo na kokamba servo.
Ba Détails ya Datasheet
| Fabricant | Broadcom |
|---|---|
| Numéro ya partie | APDS-9960 |
| Tension ya Logic/IO | 2.4 – 3.6 V |
| Tension ya alimentation | 2.4 – 3.6 V |
| Courant ya sortie (na canal) | 20 mA max |
| Guidance ya fréquence PWM | Esengeli te |
| Seuils ya logique ya entrée | 0.3 V (na nse), 0.7 V (na likolo) |
| Chute ya tension / RDS(on) / saturation | Esengeli te |
| Limites ya température | –40 to 85 °C |
| Package | 6.0 x 3.0 mm |
| Notes / variantes | Koyeba ba gestes, koyeba pole ya RGB |
- Kokamba ete servo ezala na tension ya malamu (mbala mingi 5V).
- Kokangisa APDS-9960 na Arduino na nzela ya communication I2C.
- Kotalela pin ya interrupt mpo na senseur ya geste.
- Kosalela ba résistances ya pull-up soki esengeli mpo na détection ya signal ya malamu.
- Kokamba senseur na ba conditions ya pole ndenge na ndenge mpo na précision ya malamu.

Mpo na kokangisa ba composants, banda na moteur ya servo. Kokangisa fil ya motane na pin ya 5V ya Arduino, fil ya noir na terre (GND), mpe fil ya signal ya orange na pin 9. Oyo ekopesa nzela na Arduino mpo na kokamba position ya servo.
Na sima, kokangisa senseur ya geste APDS-9960. Kokangisa pin ya V_N na 3.3V ya Arduino, mpe pin ya GND na terre. Pin ya INT esengeli kokangisama na pin 2 na Arduino, wana ba pins ya SDA mpe SCL bakokende na ba pins A4 mpe A5, na ndenge yango. Configuration oyo epesaka nzela na senseur mpo na kosolola malamu na Arduino.
Ba Exemples ya Code & Explication
Na fonction ya setup, tokomi na koyamba servo mpe senseur ya geste. Ligne myservo.attach(9); ekangisaka servo na pin 9, oyo tokangisaki liboso. Oyo epesaka nzela na servo mpo na kozwa ba commandes na Arduino.

void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
// Set interrupt pin as input
pinMode(APDS9960_INT, INPUT);
// Initialize Serial port
Serial.begin(9600);
}
Na sima, tokomi na koyeba ndenge système ekoyamba ba gestes na fonction ya loop. Méthode handleGesture(); etyelaka likebi na ba gestes oyo ezali mpe esalaka ba actions oyo esengeli. Na ndakisa, soki geste oyo emonani ezali gauche, servo ekokende na 180 degrés.
void handleGesture() {
if ( apds.isGestureAvailable() ) {
switch ( apds.readGesture() ) {
case DIR_LEFT:
myservo.write(180); // added by RoboJax
break;
case DIR_RIGHT:
myservo.write(0); // added by RoboJax
break;
}
}
}
Na suka, loop ezali kotalela ba gestes mbala na mbala mpe kobongola position ya servo kolandana na geste oyo emonani. Komeka configuration na ba conditions ya pole ndenge na ndenge mpo na kozwa reconnaissance ya geste ya malamu.
Démonstration / Nini Okoki Kozela
Ntango nyonso esili kokangisama mpe code esili kotombolama, okoki kokamba servo na kotambwisa loboko na yo na gauche to na droite. Servo ekobaluka na 180 degrés mpo na geste ya gauche mpe ekozonga na 0 degrés mpo na geste ya droite. Soki ba gestes emonani te, tala position ya senseur mpe ba conditions ya pole oyo ezali zingazinga (na video na 05:30).
Ba Chapitres
- Introduction - 00:00
- Aperçu ya Hardware - 01:30
- Ba Instructions ya Kokangisa - 03:00
- Explication ya Code - 04:30
- Démonstration - 06:00
Mateya oyo ezali eteni ya: Servo Motors ya mosala
- Kokamba ya Servo na Mabutu ya Kobenda na Arduino
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Koyamba servo na potentiometer na Arduino
- Kokamba ya Servo na Potentiomètre mpe LCD1602 na kosalela Arduino
- Koyamba Servo Motors na Infrared Remote na Arduino
- Kotroli ya moteur ya servo ya Arduino na kosalela potentiomètre
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- Ndenge ya Kosalela Servo ya 360° na Arduino
- Code Arduino mpe Video ya PCA9685 16-Channel 12-Bit Servo Controller V1
- Tonga motéma ya Arduino Servo Toggle Switch na Push Button
++
/****************************************************************
Modified for RoboJax by A.B.S. on May 09, 2017
in Ajax, Ontario, Canada. www.RoboJax.com
Original Source:
APDS-9960 RGB and Gesture Sensor
Shawn Hymel @ SparkFun Electronics
May 30, 2014
https://github.com/sparkfun/APDS-9960_RGB_and_Gesture_Sensor
Distributed as-is; no warranty is given.
****************************************************************/
#include <Wire.h>
// added by RoboJax
#include <Servo.h>
#include <SparkFun_APDS9960.h>
Servo myservo; // create servo object to control a servo // added by RoboJax
// Pins
#define APDS9960_INT 2 // Needs to be an interrupt pin
// Constants
// Global Variables
SparkFun_APDS9960 apds = SparkFun_APDS9960();
int isr_flag = 0;
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
// Set interrupt pin as input
pinMode(APDS9960_INT, INPUT);
// Initialize Serial port
Serial.begin(9600);
Serial.println();
Serial.println(F("--------------------------------"));
Serial.println(F("SparkFun APDS-9960 - GestureTest"));
Serial.println(F("--------------------------------"));
// Initialize interrupt service routine
attachInterrupt(0, interruptRoutine, FALLING);
// Initialize APDS-9960 (configure I2C and initial values)
if ( apds.init() ) {
Serial.println(F("APDS-9960 initialization complete"));
} else {
Serial.println(F("Something went wrong during APDS-9960 init!"));
}
// Start running the APDS-9960 gesture sensor engine
if ( apds.enableGestureSensor(true) ) {
Serial.println(F("Gesture sensor is now running"));
} else {
Serial.println(F("Something went wrong during gesture sensor init!"));
}
}
void loop() {
if( isr_flag == 1 ) {
detachInterrupt(0);
handleGesture();
isr_flag = 0;
attachInterrupt(0, interruptRoutine, FALLING);
}
}
void interruptRoutine() {
isr_flag = 1;
}
void handleGesture() {
if ( apds.isGestureAvailable() ) {
switch ( apds.readGesture() ) {
case DIR_UP:
Serial.println("UP");
break;
case DIR_DOWN:
Serial.println("DOWN");
break;
case DIR_LEFT:
Serial.println("LEFT");
myservo.write(180); // added by RoboJax
break;
case DIR_RIGHT:
Serial.println("RIGHT");
myservo.write(0); // added by RoboJax
break;
case DIR_NEAR:
Serial.println("NEAR");
break;
case DIR_FAR:
Serial.println("FAR");
break;
default:
Serial.println("NONE");
}
}
}
Mokili na bisika
Pas encore de ressources.
Fichiers📁
Aucun fichier disponible.