This tutorial is part of: Motocin Servo
Duk bidiyon da suka shafi injinan servo waɗanda ke da alaƙa, an jera su a nan. Hanyoyin haɗi zuwa wasu bidiyo suna ƙasa da wannan labarin.
Sarrafawa Matsayi na Servo da Hanyoyin Hannu don Arduino
A cikin wannan koyarwar, za mu koyi yadda za a sarrafa motar servo ta amfani da motsin hannu. Ta hanyar motsa hannunka hagu ko dama, za ka iya sa motar servo ta amsa yadda ya kamata. Wannan aikin yana amfani da na'urar gano motsin hannu ta APDS-9960 don gano motsin hannu da fassara su zuwa matsayin servo. Don cikakken bayani na gani, tabbatar ka duba bidiyon a (a cikin bidiyo a 00:30).

Babban abubuwan da za mu yi amfani da su sun haɗa da motar servo da na'urar gano motsi ta APDS-9960. Motar servo za ta juya zuwa wasu kusurwoyi bisa ga motsin da aka gano, yayin da na'urar APDS-9960 za ta fassara motsin hannu. Wannan tsari yana ba da hanya mai sauƙi don sarrafa motar servo ba tare da taɓa jiki ba.
Kayan Aiki An Bayyana
Motar servo na'ura ce karama wacce zata iya juyawa zuwa takamaiman kusurwa, wanda ya sa ta dace da aikace-aikace da ke bukatar daidaitaccen matsayi. Yana da waya uku: wutar lantarki (ja), ƙasa (baki), da sigina (orange). Wayan sigina na karɓar umarni don motsa servo zuwa takamaiman kusurwa.
APDS-9960 na na'ura mai yawa wacce za ta iya gano motsi, hasken muhalli, da launi. Yana sadarwa da Arduino ta hanyar I2C kuma yana buƙatar wasu pins don wutar lantarki da canja wuri na bayanai. Na'urar na iya gano motsi kamar sama, ƙasa, hagu, da dama, wanda za mu yi amfani da shi don sarrafa servo.
Bayanan Takardu
| Mai masana'anta | Broadcom |
|---|---|
| Lambar sashi | APDS-9960 |
| Lojik/IO wutar lantarki | 2.4 - 3.6 V |
| Wutar samar | 2.4 - 3.6 V |
| Fitar da yanzu (kowane tashar) | 20 mA mafi |
| Jagoran frekwensin PWM | Ba a yi amfani da shi ba |
| Ka'idodin shigarwa | 0.3 V (kasa), 0.7 V (girma) |
| Rashin wutar lantarki / RDS(on)/ saturation | Ba a yi amfani da shi ba |
| Iyakun zafi | -40 zuwa 85 °C |
| Kunshin | 6.0 x 3.0 mm |
| Littattafai / nau'ikan | Gane gan, jin haske RGB |
- Tabbatar da cewa servo yana da wutar lantarki mai kyau (yawanci 5V).
- Haɗa APDS-9960 da Arduino ta amfani da sadarwar I2C.
- Ka kula da pin ɗin tsangwama don na'urar motsi.
- Yi amfani da masu jujjuyawa idan ya zama dole don tabbatar da ingantaccen ganewar sigina.
- Tabbatar da ka daidaita na'urar a cikin yanayi daban-daban na haske don samun ingantaccen sakamako.

Don haɗa kayan, fara da motar servo. Haɗa jan waya zuwa pin 5V na Arduino, baƙar waya zuwa ƙasa (GND), da kuma wayar sigina ruwan lemu zuwa pin.9Wannan zai ba da damar Arduino ya kula da matsayin servo.
Gaba, haɗa na'urar jin motsi ta APDS-9960. HaɗaV_Nsaka zuwa 3.3V na Arduino, da kumaGNDsaka zuwa ƙasa. WannanINTpin ya kamata a haɗa da pin2a kan Arduino, yayin daSDAdaSCLpins suna zuwa pinsA4daA5, da. Wannan tsari yana ba da damar na'urar gano yanayi ta yi mu'amala da kyau tare da Arduino.
Misalan Lamba & Jagora
A cikin aikin saiti, muna fara servo da na'urar gano motsi. Layinmyservo.attach(9);yana haɗa servo zuwa pin 9, wanda muka haɗa a baya. Wannan yana ba da damar servo karɓar umarni daga 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 gaba, za mu bayyana yadda tsarin ke sarrafa motsi a cikin aikin juyawa. HanyarhandleGesture();yana duba don samun hanyoyin da ake da su kuma yana aiwatar da ayyuka masu dacewa. Misali, idan an gano hanyar hagu, servo zai motsa zuwa digiri 180.
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;
}
}
}A ƙarshe, zagaye yana ci gaba da duba alamu kuma yana sabunta matsayin servo bisa ga alamar da aka gano. Tabbatar da gwada saitin a cikin yanayi daban-daban na haske don samun ingantaccen gane alamu.
Nuna / Abin da za a yi tsammani
Da zarar an haɗa komai kuma an loda lambar, ya kamata ku iya sarrafa servo ta hanyar motsa hannunku hagu ko dama. Servo zai juya zuwa digiri 180 don alamar hagu kuma ya dawo zuwa digiri 0 don alamar dama. Idan ba a gano alamomin ba, duba matsayin na'urar gano motsi da yanayin hasken da ke kewaye (a cikin bidiyo a 05:30).
Babi
- Gabatarwa - :00
- Bayanan Kayan Aiki - 01:30
- Umarni Waya - 03:00
- Bayani Kan Lambar - 04:30
- Nuna - 06:00
This tutorial is part of: Motocin Servo
- Controlling a Servo with Push Buttons Using 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)
- Controlling a Servo with a Potentiometer Using Arduino
- Controlling a Servo with Potentiometer and LCD1602 using Arduino
- Controlling Servo Motors Using an Infrared Remote with Arduino
- Kulawa na Motar Servo Arduino ta Amfani da Potentiometer
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- How to Use Continuous 360° Servo with Arduino
- Arduino Code and Video for PCA9685 16-Channel 12-Bit Servo Controller V1
- Build an Arduino Servo Toggle Switch with a 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");
}
}
}
Albarkatun da kuma shafukan da za a duba
Babu kayan aiki tukuna.
Fayiloli📁
Babu fayiloli da ake da su.