یہ ٹیوٹوریل کا حصہ ہے: سرو موٹرز
سروو موٹرز سے متعلق تمام ویڈیوز جو متعلقہ ہیں، یہاں درج ہیں۔ دیگر ویڈیوز کے لنک اس مضمون کے نیچے ہیں۔
ہاتھ کے اشاروں کے ذریعے آردوینو کے لیے سروو کی پوزیشن کنٹرول کرنا
اس سبق میں، ہم سیکھیں گے کہ ہاتھ کے اشاروں کا استعمال کرتے ہوئے سرور موٹر کو کیسے کنٹرول کیا جائے۔ اپنے ہاتھ کو بائیں یا دائیں حرکت دے کر، آپ سرور موٹر کو اس کے مطابق جواب دینے کے لیے کہہ سکتے ہیں۔ یہ منصوبہ APDS-9960 اشارہ سینسر کا استعمال کرتا ہے تاکہ ہاتھ کی حرکات کا پتہ لگایا جا سکے اور انہیں سرور کی پوزیشنز میں تبدیل کیا جا سکے۔ تفصیلی بصری وضاحت کے لیے، براہ کرم ویڈیو چیک کریں (ویڈیو میں 00:30 پر)۔

ہم جو بنیادی اجزاء استعمال کریں گے ان میں ایک سرو موٹر اور APDS-9960 اشارہ سینسر شامل ہیں۔ سرو موٹر مخصوص زاویوں پر گھومے گا جو کہ معلوم کردہ اشاروں کی بنیاد پر ہوگا، جبکہ APDS-9960 سینسر ہاتھ کی حرکات کی تشریح کرے گا۔ یہ سیٹ اپ بغیر جسمانی رابطے کے سرو کو کنٹرول کرنے کا ایک بدیہی طریقہ فراہم کرتا ہے۔
ہارڈ ویئر کی وضاحت
سرو موٹر ایک چھوٹا آلہ ہے جو مخصوص زاویوں پر گھوم سکتا ہے، جو اسے ان ایپلیکیشنز کے لیے مثالی بناتا ہے جن میں درست پوزیشننگ کی ضرورت ہوتی ہے۔ اس میں عام طور پر تین تاریں ہوتی ہیں: پاور (سرخ)، گراؤنڈ (سیاہ)، اور سگنل (نارنجی)۔ سگنل تار کو سرو کو مخصوص زاویے پر منتقل کرنے کے لیے احکامات موصول ہوتے ہیں۔
APDS-9960 ایک متنوع سینسر ہے جو اشارے، ماحول کی روشنی، اور رنگ کا پتہ لگا سکتا ہے۔ یہ Arduino کے ساتھ I2C کے ذریعے بات چیت کرتا ہے اور طاقت اور ڈیٹا کی منتقلی کے لیے چند پنوں کی ضرورت ہوتی ہے۔ یہ سینسر اوپر، نیچے، بائیں، اور دائیں جیسے حرکات کا پتہ لگا سکتا ہے، جسے ہم سرو کو کنٹرول کرنے کے لیے استعمال کریں گے۔
ڈیٹا شیٹ کی تفصیلات
| کارخانہ دار | براڈکام |
|---|---|
| حصہ نمبر | APDS-9960 |
| منطق/آئی او وولٹیج | 2.4 - 3.6 V |
| سپلائی وولٹیج | 2.4 - 3.6 V |
| آؤٹ پٹ کرنٹ (فی چینل) | 20 mA زیادہ سے زیادہ |
| PWM فریکوئنسی کی رہنمائی | نہیں لگو ہوتا |
| ان پٹ منطقی حدیں | 0.3 وی (کم), 0.7 وی (زیادہ) |
| وولٹیج ڈراپ / RDS(on)/ سچوریشن | لا قابل اطلاق |
| حرارتی حدود | -40 سے 85 °C |
| پیکج | 6.0 x 3.0 ملی میٹر |
| نوٹس / مختلف اقسام | اشارتی احساس، آر جی بی روشنی کا احساس |
- یقینی بنائیں کہ سرو کو مناسب وولٹیج (عام طور پر 5V) کے ساتھ پاور کیا گیا ہے۔
- APDS-9960 کو I2C مواصلات کا استعمال کرتے ہوئے Arduino سے جوڑیں۔
- اشارے کے سینسر کے لیے انٹرپٹ پن پر توجہ دیں۔
- اگر ضروری ہو تو مستحکم سگنل کی شناخت کے لیے پل-اپ مزاحمتوں کا استعمال کریں۔
- یقینی بنائیں کہ بہتر درستگی کے لیے مختلف روشنی کی حالتوں میں سینسر کو کیلیبریٹ کریں۔

اجزاء کو وائر کرنے کے لیے، سرور موٹر سے شروع کریں۔ سرخ تار کو آرڈینو کے 5V پن سے جوڑیں، سیاہ تار کو گراؤنڈ (GND) سے، اور نارنجی سگنل تار کو پن سے جوڑیں۔9یہ Arduino کو سرو کے مقام کو کنٹرول کرنے کی اجازت دے گا۔
اگلا، APDS-9960 اشارہ سینسر کو وائر کریں۔ جڑیںV_Nآرڈینو کے 3.3V پر پن، اورGNDزمین پر پن کریں۔ یہINTپن کو پن سے منسلک کیا جانا چاہیے۔2آردوینو پر، جبکہSDAاورSCLپنز پنز میں جاتے ہیںA4اورA5یہ ترتیب سینسر کو آرڈینو کے ساتھ مؤثر طریقے سے بات چیت کرنے کی اجازت دیتی ہے۔
کوڈ کی مثالیں اور رہنمائی
سیٹ اپ فنکشن میں، ہم سرور اور اشارہ سینسر کو شروع کرتے ہیں۔ لائنmyservo.attach(9);سرور کو پن 9 سے باندھتا ہے، جسے ہم نے پہلے جوڑا تھا۔ یہ سرور کو آرڈینو سے احکامات وصول کرنے کی اجازت دیتا ہے۔

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
یہ ٹیوٹوریل کا حصہ ہے: سرو موٹرز
- 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
- پوٹینشیومیٹر کا استعمال کرتے ہوئے آرڈینو سرو موٹر کنٹرول
- 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");
}
}
}
وسائل اور حوالہ جات
ابھی تک کوئی وسائل نہیں۔
فائلیں📁
کوئی فائلیں دستیاب نہیں ہیں۔