குறியீட்டை தேடு

அர்டினோவுக்கான கை அசைவுகளால் சர்வோ நிலையை கட்டுப்படுத்துதல்

அர்டினோவுக்கான கை அசைவுகளால் சர்வோ நிலையை கட்டுப்படுத்துதல்

இந்த பயிற்சியில், கையால் அசைவுகளைப் பயன்படுத்தி ஒரு சர்வோ மோட்டரை எப்படி கட்டுப்படுத்துவது என்பதை நாம் கற்றுக்கொள்வோம். உங்கள் கையை இடம் அல்லது வலமாக நகர்த்துவதன் மூலம், சர்வோ மோட்டர் அதற்கேற்ப பதிலளிக்க முடியும். இந்த திட்டம் கையின அசைவுகளை கண்டறிய மற்றும் அவற்றைப் சர்வோ நிலைகளாக மொழிபெயர்க்க APDS-9960 அசைவுச் சென்சாரைப் பயன்படுத்துகிறது. விரிவான காட்சி விளக்கத்திற்கு, (00:30 இல் உள்ள வீடியோவில்) வீடியோவை சரிபார்க்கவும்.

APDS-9960 gesture sensor module -1

நாம் பயன்படுத்தவுள்ள மைய கூறுகள் சர்வோ மோட்டர் மற்றும் APDS-9960 அசைவ உணர்வி அடங்கும். சர்வோ மோட்டர் கண்டறியப்பட்ட அசைவுகளின் அடிப்படையில் குறிப்பிட்ட கோணங்களில் சுழலும், APDS-9960 உணர்வி கையினின் இயக்கங்களை விளக்கும். இந்த அமைப்பு உடல் தொடாமல் சர்வோவை கட்டுப்படுத்த ஒரு உள்ளுணர்வான முறையை வழங்குகிறது.

உருப்படிகள் விளக்கப்பட்டது

சர்வோ மோட்டார் என்பது குறிப்பிட்ட கோணங்களில் சுழலக்கூடிய சிறிய சாதனம் ஆகும், இது துல்லியமான இடமாற்றங்களை தேவைப்படும் பயன்பாடுகளுக்கு ஏற்றது. இது பொதுவாக மூன்று கம்பிகளை கொண்டுள்ளது: மின்சாரம் (சிகப்பு), நிலம் (கருப்பு), மற்றும் சிக்னல் (ஆரஞ்சு). சிக்னல் கம்பி சர்வோவை குறிப்பிட்ட கோணத்திற்கு நகர்த்த கட்டளைகளை பெறுகிறது.

APDS-9960 என்பது அசைவுகள், சுற்றுப்புற ஒளி மற்றும் நிறங்களை கண்டறியக்கூடிய பல்துறை சென்சார் ஆகும். இது I2C மூலம் ஆர்டினோவுடன் தொடர்பு கொள்ளுகிறது மற்றும் மின்சாரம் மற்றும் தரவுப் பரிமாற்றத்திற்கு சில பின்களை தேவைப்படுகிறது. சென்சார் மேலே, கீழே, இடது மற்றும் வலது போன்ற இயக்கங்களை கண்டறியக்கூடியது, இதனை நாங்கள் சர்வோவை கட்டுப்படுத்த பயன்படுத்துவோம்.

தரவியல் விவரங்கள்

உற்பத்தியாளர்பிராட்காம்
பகுதி எண்APDS-9960
தர்க்கம்/ஐஓ மின்னழுத்தம்2.4 - 3.6 வி
சேமிப்பு மின் அழுத்தம்2.4 - 3.6 வி
வெளியீட்டு மின்சாரம் (ஒவ்வொரு சேனலுக்கும்)20 மி.அ. அதிகபட்சம்
PWM அடிப்படையில் வழிகாட்டுதல்பயன்படாது
உள்ளீட்டு தரவுத்தொகுப்புகள்0.3 வி (குறைவு), 0.7 வி (உயரம்)
மின் அழுத்தம் குறைவு / RDS(on)/ saturationபயன்படாது
தர்மீக எல்லைகள்-40 முதல் 85 °C
பேக்கேஜ்6.0 x 3.0 மிமீ
குறிப்புகள் / மாறுபாடுகள்செயல் உணர்வு, RGB ஒளி உணர்வு
  • சர்வோவை போதுமான மின்னழுத்தத்துடன் (பொதுவாக 5V) சக்தி வழங்கப்படுவதை உறுதி செய்யவும்.
  • APDS-9960 ஐ I2C தொடர்பைப் பயன்படுத்தி Arduino க்கு இணைக்கவும்.
  • செயல் உணரியின் இடைநிறுத்த பினுக்கு கவனம் செலுத்துங்கள்.
  • நிலையான சிக்னல் கண்டறிதற்காக தேவையானால் புல்-அப் எதிர்ப்புகளை பயன்படுத்தவும்.
  • வெற்றிகரமான துல்லியத்திற்காக மாறுபட்ட ஒளி நிலைகளில் சென்சாரை அளவீடு செய்ய உறுதியாகவும்.
Arduino wiring of APDS9960 to control Servo motor using hand gesture

கூறுகளை இணைக்க, சர்வோ மோட்டருடன் தொடங்குங்கள். சிவப்பு கம்பியை ஆர்டினோவின் 5V பினுக்கு, கருப்பு கம்பியை நிலத்திற்கு (GND) மற்றும் ஆரஞ்சு சிக்னல் கம்பியை பினுக்கு இணைக்கவும்.9இது ஆர்டினோவை சர்வோவின் நிலையை கட்டுப்படுத்த அனுமதிக்கும்.

அடுத்ததாக, APDS-9960 இயக்கக் கண்ணோட்டத்தை இணைக்கவும்.V_Nஅர்டூினோவின் 3.3Vக்கு பின், மற்றும்GNDமூட்டத்தை நிலத்திற்கு இணைக்கவும். அந்தINTபின் பினுக்கு இணைக்கப்பட வேண்டும்.2ஆர்டினோவில், அப்போதுSDAமற்றும்SCLபின்கள் பின்களுக்கு செல்கின்றனA4மற்றும்A5, முறையே. இந்த அமைப்பு சென்சாரை ஆர்டினோவுடன் திறம்பட தொடர்பு கொள்ள அனுமதிக்கிறது.

கோடு எடுத்துக்காட்டுகள் மற்றும் நடைமுறை

அமைப்பு செயல்பாட்டில், நாங்கள் சர்வோ மற்றும் அசைவு சென்சாரை தொடங்குகிறோம். அந்த வரிmyservo.attach(9);சர்வோவை 9வது பினுக்கு இணைக்கிறது, இதற்கு முன்பு நாங்கள் இணைத்திருந்தோம். இது சர்வோவை ஆர்டினோவிலிருந்து கட்டளைகளை பெற அனுமதிக்கிறது.

APDS-9960 gesture sensor -3
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

படங்கள்

APDS-9960 gesture sensor module -2
APDS-9960 gesture sensor module -2
APDS-9960 gesture sensor module -1
APDS-9960 gesture sensor module -1
Arduino wiring of APDS9960 to control Servo motor using hand gesture
Arduino wiring of APDS9960 to control Servo motor using hand gesture
APDS-9960 gesture sensor -3
APDS-9960 gesture sensor -3
12-Source code for controlling a servo with your hand
மொழி: C++
++
/****************************************************************
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");
    }
  }
}

வளங்கள் மற்றும் மேற்கோள்கள்

இன்னும் எந்த வளங்களும் இல்லை.

கோப்புகள்📁

கோப்புகள் கிடைக்கவில்லை.