Search Code

Sarrafawa Matsayi na Servo da Hanyoyin Hannu don Arduino

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).

APDS-9960 gesture sensor module -1

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'antaBroadcom
Lambar sashiAPDS-9960
Lojik/IO wutar lantarki2.4 - 3.6 V
Wutar samar2.4 - 3.6 V
Fitar da yanzu (kowane tashar)20 mA mafi
Jagoran frekwensin PWMBa a yi amfani da shi ba
Ka'idodin shigarwa0.3 V (kasa), 0.7 V (girma)
Rashin wutar lantarki / RDS(on)/ saturationBa a yi amfani da shi ba
Iyakun zafi-40 zuwa 85 °C
Kunshin6.0 x 3.0 mm
Littattafai / nau'ikanGane 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.
Arduino wiring of APDS9960 to control Servo motor using hand gesture

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.

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);
}

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

Hotuna

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
Harshe: 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");
    }
  }
}

Albarkatun da kuma shafukan da za a duba

Babu kayan aiki tukuna.

Fayiloli📁

Babu fayiloli da ake da su.