This tutorial is part of: Matoorada Servo
Dhammaan fiidiyowyada la xiriira matoorada servo ee la xiriira, halkan ayaa lagu taxay. Xiriirinta fiidiyowyada kale waxay ku yaalliin maqaalkan hoose.
Xakameynta Meesha Servo iyadoo la adeegsanayo Gacmaha ee Arduino
Casharkan, waxaan ku baran doonaa sida loo xakameeyo mishiinka servo adigoo isticmaalaya dhaqdhaqaaqa gacanta. Adigoo gacantaada bidix ama midig u dhaqaaqaya, waxaad ka dhigi kartaa mishiinka servo inuu ka jawaabo si waafaqsan. Mashruucan wuxuu isticmaalaa dareenka dhaqdhaqaaqa APDS-9960 si uu u ogaado dhaqdhaqaaqa gacanta oo u turjumo boosaska servo. Si aad u hesho sharaxaad muuqaal ah oo faahfaahsan, hubi inaad eegto fiidiyowga (fiidiyowga ku yaal 00:30).

Qaybaha aasaasiga ah ee aan isticmaali doono waxaa ka mid ah mishiinka servo iyo dareemaha APDS-9960 ee dhaqanka. Mishiinka servo wuxuu u rogi doonaa xaglo gaar ah oo ku saleysan dhaqannada la ogaaday, halka dareemaha APDS-9960 uu fasiro doono dhaqdhaqaaqyada gacanta. Qalabkan wuxuu u oggolaanayaa hab fudud oo lagu xakameeyo servo iyada oo aan la taaban.
Qalabka la Sharxay
Mashiinka servo waa qalab yar oo awood u leh inuu rogo xaglo gaar ah, taasoo ka dhigaysa mid ku habboon codsiyada u baahan meelayn sax ah. Caadi ahaan wuxuu leeyahay seddex xadhig: awood (cas), dhulka (madow), iyo calaamad (jaalle). Xadhigga calaamadda wuxuu helaa amarro si loo raro servo-ga xagal la cayimay.
APDS-9960 waa dareemayaal kala duwan oo awood u leh in uu ogaado dhaqdhaqaaqyada, iftiinka deegaanka, iyo midabka. Waxay la xiriirtaa Arduino iyada oo loo marayo I2C waxayna u baahan tahay dhowr pins oo koronto iyo xog gudbinta ah. Dareemaha wuxuu ogaan karaa dhaqdhaqaaqyo sida kor, hoos, bidix, iyo midig, kuwaas oo aan u isticmaali doono in aan xakameyno servo.
Faahfaahinta Warqadda Data
| Soosaar | Broadcom |
|---|---|
| Lambarka qaybta | APDS-9960 |
| Xisaab/IO danab | 2.4 - 3.6 V |
| Koronto sahayada | 2.4 - 3.6 V |
| Hawada hadda (kanaal kasta) | 20 mA ugu badnaan |
| Hagaha soo noqnoqoshada PWM | Ma jiraan wax ku habboon |
| Xadka loogaga baahan yahay in la geliyo | 0.3 V (hoose), 0.7 V (sare) |
| Hoos u dhaca koronto / RDS(on)/ buuxinta | Ma jiraan wax ku habboon |
| Xadidaheeda kulaylka | -40 ilaa 85 °C |
| Baakidhka | 6.0 x 3.0 mm |
| Xusuusin / noocyo | Gacanta dareen, dareen iftiin RGB |
- Hubi in servo-gu uu helo koronto ku filan (caadi ahaan 5V).
- Ku xidh APDS-9960 Arduino adigoo isticmaalaya isgaarsiinta I2C.
- Fiiro gaar ah u yeelo pin-ka hakinta ee dareemaha dhaqanka.
- Isticmaal resistors-ka kor u qaadista haddii loo baahdo si loo helo ogaansho calaamad deggan.
- Hubi inaad hagaajiso dareemaha xaaladaha iftiinka kala duwan si aad u hesho saxsanaanta wanaagsan.

Si aad u xidhid qaybaha, ku bilow mishiinka servo. Ku xidh xadhigga cas ee pin-ka 5V ee Arduino, xadhigga madow dhulka (GND), iyo xadhigga calaamadda oranji ah pin-ka.9Tani waxay u oggolaan doontaa Arduino inuu xakameeyo booska servo.
Xiga, ku xidh dareenka dhaqdhaqaaqa APDS-9960. Ku xidhV_Nku xir 3.3V ee Arduino, iyoGNDdhig dhulka. TheINTpin waa in lagu xiro pin2Arduino-ka, halkaSDAiyoSCLpins waxay u socdaan pinsA4iyoA5, siday. Qaabkan wuxuu u oggolaanayaa dareemaha inuu si hufan ula xiriirto Arduino.
Tusaalooyinka Koodhka & Socodka
Funkshanka dejinta, waxaanu dejinaynaa servo iyo dareenka dhaqdhaqaaqa. Khadkamyservo.attach(9);ku xidhay servo-ga pin 9, oo aan hore u xidhnay. Tani waxay u oggolaaneysaa servo-ga inuu helo amaro ka socda 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);
}Marka xigta, waxaan qeexeynaa sida nidaamku u maareeyo dhaqdhaqaaqyada hawsha loop. HabkahandleGesture();hubinta dhaqdhaqaaqyada la heli karo iyo fulinta ficilada ku habboon. Tusaale ahaan, haddii dhaqdhaqaaqa la ogaado uu yahay bidix, servo-gu wuxuu u dhaqaaqi doonaa 180 darajo.
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;
}
}
}Ugu dambeyntii, wareeggu si joogto ah ayuu u hubiyaa dhaqdhaqaaqyada wuxuuna cusbooneysiiyaa booska servo-ga iyadoo lagu saleynayo dhaqdhaqaaqa la ogaaday. Hubi inaad tijaabiso dejinta xaaladaha iftiinka kala duwan si aad u hesho aqoonsiga dhaqdhaqaaqa saxda ah.
Muuqaal / Waxa La Filan Karo
Markii wax walba la isku xiro oo koodhka la soo geliyo, waa in aad awood u yeelatid in aad xakameyso servo-ga adigoo gacantaada bidix ama midig u dhaqaaqaya. Servo-gu wuxuu u rogi doonaa 180 darajo dhaqdhaqaaq bidix ah wuxuuna ku noqon doonaa 0 darajo dhaqdhaqaaq midig ah. Haddii dhaqdhaqaaqyada aan la ogaan, hubi booska dareenka iyo xaaladaha iftiinka ee ku xeeran (fiidiyowga 05:30).
Cutubka
- Hordhac - 00:00
- Dulucda Qalabka - 01:30
- Tilmaamaha Xadhigga - 03:00
- Sharaxa Koodhka - 04:30
- Muuqaal - 06:00
This tutorial is part of: Matoorada 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
- Xakameynta Moterka Servo ee Arduino iyadoo la adeegsanayo 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");
}
}
}
Kheyraadka & Tixraacyada
Wali wax kaydsan ah oo weli ma jiro.
Faylasha📁
Fayl la'aan.