دا ټیوټوریل برخه ده له: سرو موټرې
ټولې ویډیوګانې چې د سرو موټرو پورې اړوند دي، دلته لیست شوي. د نورو ویډیوګانو لینکونه د دې مقالې لاندې دي.
د آردوینو لپاره د لاس اشارو سره د سروو موقعیت کنټرول
په دې ټیوټوریل کې به موږ زده کړو چې څنګه د لاس د اشارو په کارولو سره د سروو موټور کنټرول کړو. د خپل لاس په کیڼ یا ښي خوا په خوځولو سره، تاسو کولی شئ د سروو موټور دې ته اړ کړئ چې په مطابق ځواب ووایی. دا پروژه د APDS-9960 د اشارې سینسر څخه کار اخلي ترڅو د لاس حرکتونه کشف کړي او دوی د سروو موقعیتونو ته واړوي. د تفصیلي بصري توضیح لپاره، ډاډ ترلاسه کړئ چې ویډیو وګورئ (په ویډیو کې په 00:30).

اصلي اجزا چې موږ به یې کاروو د سروو موټور او د APDS-9960 د اشارې سینسر شامل دي. د سروو موټور به د کشف شویو اشارو پر بنسټ ځانګړو زاویو ته وګرځي، پداسې حال کې چې د APDS-9960 سینسر به د لاس حرکتونه تفسیر کړي. دا ترتیب د فزیکي لمس پرته د سروو کنټرول لپاره یوه هوښیارانه لار برابروي.
هارډویر تشریح شوی
د سروو موټور یو کوچنی وسیله ده چې کولی شي ځانګړو زاویو ته وګرځي، دا د هغو غوښتنلیکونو لپاره مثالی کوي چې دقیق موقعیت ته اړتیا لري. دا معمولا درې تارونه لري: بریښنا (سور)، ځمکه (تور)، او سیګنال (نارنجي). د سیګنال تار د سروو د ځانګړې زاویې ته د حرکت کولو لپاره امرونه ترلاسه کوي.
APDS-9960 یو څو اړخیز سینسر دی چې کولی شي اشارې، محیطي رڼا، او رنګ کشف کړي. دا د I2C له لارې له Arduino سره اړیکه نیسي او د بریښنا او معلوماتو لیږد لپاره یو څو پنونو ته اړتیا لري. سینسر کولی شي داسې حرکتونه کشف کړي لکه پورته، ښکته، کیڼ، او ښي، کوم چې موږ به د سروو کنټرول لپاره کاروو.
د ډیټاشیټ تفصیلات
| جوړونکی | Broadcom |
|---|---|
| د پرزې شمېره | APDS-9960 |
| د منطق/IO ولټاژ | 2.4 – 3.6 V |
| د بریښنا رسولو ولټاژ | 2.4 – 3.6 V |
| د تولید جریان (په هر چینل) | 20 mA اعظمي |
| د PWM فریکونسۍ لارښوونه | د تطبیق وړ نه ده |
| د داخلولو منطق حدونه | 0.3 V (ټیټ)، 0.7 V (لوړ) |
| د ولټاژ کمښت / RDS(on) / سنتریشن | د تطبیق وړ نه ده |
| حرارتي حدونه | –40 to 85 °C |
| بسته بندي | 6.0 x 3.0 mm |
| یادښتونه / ډولونه | د اشارې احساس، د RGB رڼا احساس |
- ډاډ ترلاسه کړئ چې سروو د کافي ولټاژ سره بریښنا کیږي (معمولا 5V).
- APDS-9960 د I2C اړیکو په کارولو سره له Arduino سره وصل کړئ.
- د اشارې سینسر لپاره د مداخلې پن ته پاملرنه وکړئ.
- د باثباته سیګنال کشف لپاره که اړتیا وي د پل-اپ ریزسټرونو څخه کار واخلئ.
- ډاډ ترلاسه کړئ چې سینسر په مختلفو رڼا شرایطو کې د ښه دقت لپاره کیلیبریټ کړئ.

د اجزاو د تارولو لپاره، د سروو موټور سره پیل وکړئ. سور تار د Arduino د 5V پن سره، تور تار د ځمکې (GND) سره، او نارنجي سیګنال تار د پن 9 سره وصل کړئ. دا به Arduino ته اجازه ورکړي چې د سروو موقعیت کنټرول کړي.
بیا، د APDS-9960 د اشارې سینسر تار کړئ. د V_N پن د Arduino د 3.3V سره، او د GND پن له ځمکې سره وصل کړئ. د INT پن باید د Arduino په پن 2 سره وصل شي، پداسې حال کې چې د SDA او SCL پنونه په ترتیب سره پنونو A4 او A5 ته ځي. دا ترتیب سینسر ته اجازه ورکوي چې له Arduino سره په مؤثره توګه اړیکه ونیسي.
د کوډ مثالونه او واک ترو
د سیٹ اپ فنکشن کې، موږ سروو او د اشارې سینسر initiālize کوو. کرښه myservo.attach(9); سروو د پن 9 سره تړي، کوم چې موږ مخکې وصل کړی و. دا سروو ته اجازه ورکوي چې له 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);
}
بیا، موږ تعریف کوو چې سیسټم څنګه په لوپ فنکشن کې اشارې اداره کوي. میتود handleGesture(); د موجودو اشارو لپاره معاینه کوي او اړونده کړنې ترسره کوي. د مثال په توګه، که کشف شوې اشاره کیڼ وي، سروو به 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;
}
}
}
په پای کې، لوپ په دوامداره توګه اشارې معاینه کوي او د کشف شوې اشارې پر بنسټ د سروو موقعیت تازه کوي. ډاډ ترلاسه کړئ چې د دقیقې اشارې پیژندنې لپاره په مختلفو رڼا شرایطو کې ترتیب ازموئ.
مظاهره / څه تمه وکړئ
یوځل چې هرڅه تار شي او کوډ اپلوډ شي، تاسو باید وکولی شئ د خپل لاس په کیڼ یا ښي خوا په خوځولو سره سروو کنټرول کړئ. سروو به د کیڼې اشارې لپاره 180 درجو ته وګرځي او د ښي اشارې لپاره 0 درجو ته راستون شي. که اشارې کشف نشي، د سینسر موقعیت او شاوخوا رڼا شرایط وګورئ (په ویډیو کې په 05:30).
فصلونه
- پیژندنه - 00:00
- د هارډویر کتنه - 01:30
- د تارولو لارښوونې - 03:00
- د کوډ توضیح - 04:30
- مظاهره - 06:00
دا ټیوټوریل برخه ده له: سرو موټرې
- د آردوینو په مرسته د پش بټنونو سره د سروو کنټرول
- 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)
- د سروو موټور کنټرول د پوټینشیومیټر سره د آردوینو په کارولو سره
- د سروو موټور کنټرول د پوټینشیومیټر او LCD1602 سره د Arduino په کارولو سره
- د سروو موټرو کنټرول د انفراریډ ریموټ په کارولو سره د آردوینو سره
- د آردوینو سروو موټور کنټرول د پوټینشنومیټر په کارولو سره
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- د ۳۶۰° دوامدار سروو د Arduino سره څنګه وکاروو
- د آردوینو کوډ او ویډیو د PCA9685 16-چینل 12-بټ سروو کنټرولر V1 لپاره
- د ارډوینو سروو ټوګل سویچ د پش بټن سره جوړ کړئ
++
/****************************************************************
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");
}
}
}
سرچینې او حوالې
تر اوسه هیڅ سرچینې نشته.
فایلونه📁
هیڅ فایل شتون نلري.