This tutorial is part of: Àwọn Ẹ̀rọ Iṣẹ́-Ẹ̀rọ
Gbogbo awọn fidio ti o ni ibatan si awọn ẹrọ servo ti o ni ibatan, ti a ṣe akojọ si ibi. Awọn ọna asopọ si awọn fidio miiran wa ni isalẹ nkan yii.
Iṣakoso ipo servo pẹlu awọn iṣe ọwọ fun Arduino
Ninu ikẹkọ yii, a yoo kọ bi a ṣe le ṣakoso moto servo nipa lilo awọn iṣe ọwọ. Nipa gbigbe ọwọ rẹ si apa osi tabi ọtun, o le jẹ ki moto servo dahun ni ibamu. Ise agbese yii nlo sensọ iṣe APDS-9960 lati ṣe awari awọn gbigbe ọwọ ati tumọ wọn si awọn ipo servo. Fun alaye aworan ti o ni alaye, rii daju lati ṣayẹwo fidio naa ni (ni fidio ni 00:30).

Awọn eroja pataki ti a yoo lo pẹlu motor servo ati sensọ iṣe APDS-9960. Motor servo yoo yipo si awọn igun pato da lori awọn iṣe ti a ṣe awari, nigba ti sensọ APDS-9960 yoo tumọ awọn gbigbe ọwọ. Eto yii gba laaye fun ọna ti o rọrun lati ṣakoso motor servo laisi ifọwọkan ti ara.
Itumọ Ẹrọ
Servo motor jẹ ẹrọ kekere ti o le yipo si awọn igun pato, ti o jẹ ki o dara fun awọn ohun elo ti o nilo ipo to pe. O ni awọn waya mẹta: agbara (pupa), ilẹ (dudu), ati ifihan (osan). Waya ifihan naa gba awọn aṣẹ lati gbe servo si igun ti a sọ.
APDS-9960 jẹ sensọ oniruuru ti o le ṣe idanimọ awọn iṣe, imọlẹ ayika, ati awọ. O n ba Arduino sọrọ nipasẹ I2C ati pe o nilo diẹ ninu awọn pin fun agbara ati gbigbe data. Sensọ naa le ṣe idanimọ awọn gbigbe bii oke, isalẹ, osi, ati otun, eyiti a yoo lo lati ṣakoso servo.
Alaye iwe data
| Olùgbéejáde | Broadcom |
|---|---|
| Nọmba apakan | APDS-9960 |
| Iwọn folti logic/IO | 2.4 - 3.6 V |
| Iwọn folti ipese | 2.4 - 3.6 V |
| Iwọn lọwọlọwọ (nipasẹ ikanni) | 20 mA to pọ julọ |
| Itọsọna igbohunsafẹfẹ PWM | Ko si ohun ti o yẹ. |
| Iwọn aala logic input | 0.3 V (kekere), 0.7 V (giga) |
| Iwọn folti / RDS(on)/ idapọ | Ko si ohun ti o yẹ. |
| Iwọn otutu to pọ julọ | -40 si 85 °C |
| Pàkàjì | 6.0 x 3.0 mm |
| Akọsilẹ / awọn oniruuru | Iṣeduro iṣe, iṣeduro imọlẹ RGB |
- Rii daju pe servo naa ni agbara pẹlu folti to peye (nigbagbogbo 5V).
- So APDS-9960 pọ̀ mọ́ Arduino nípa lílo ìbánisọ̀rọ̀ I2C.
- San ifojusi si pin ti o da idiwọ fun sensọ iṣe.
- Lo lo resistors ti o ba jẹ dandan fun idanimọ ifihan ti o ni iduroṣinṣin.
- Rii daju pe ki o ṣe atunṣe sensọ naa ni awọn ipo ina oriṣiriṣi fun deede ti o dara julọ.

Lati so awọn ẹya pọ, bẹrẹ pẹlu moto servo. So okun pupa pọ si pin 5V ti Arduino, okun dudu si ilẹ (GND), ati okun ifihan osan si pin9Eyi yoo jẹ ki Arduino lati ṣakoso ipo servo.
Nibi, so APDS-9960 sensọ iṣe. So awọnV_Nfi si pin si 3.3V ti Arduino, ati GNDpin si ilẹ. IwọINTpin yẹ ki o so pọ si pin2ni Arduino, nigba ti aSDAatiSCLpins lọ si pinsA4atiA5, ni ibè. Àtúnṣe yìí jẹ́ kí sensọ náà lè bá Arduino sọ̀rọ̀ pẹ̀lú ìmúrasílẹ̀.
Àpẹẹrẹ Kóòdù & Irin-ajo
Ninu iṣẹ-ṣiṣe iṣeto, a bẹrẹ servo ati sensọ iṣe. Iwọnmyservo.attach(9);nso servo si pin 9, eyi ti a ti so pọ tẹlẹ. Eyi n jẹ ki servo naa gba awọn aṣẹ lati ọdọ 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);
}Nítorí náà, a ṣe àlàyé bí eto ṣe n ṣiṣẹ́ pẹ̀lú àwọn ìfihàn nínú iṣẹ́ àtúnṣe. ỌnahandleGesture();n ṣayẹwo fun awọn iṣe ti o wa ati ṣiṣe awọn iṣe ti o baamu. Fun apẹẹrẹ, ti iṣe ti a ṣe awari ba jẹ osi, servo naa yoo gbe si 180 iwọn.
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;
}
}
}Nikẹhin, iyipo naa n ṣayẹwo nigbagbogbo fun awọn iṣe ati imudojuiwọn ipo servo da lori iṣe ti a ṣe awari. Rii daju lati ṣe idanwo eto naa ni awọn ipo ina oriṣiriṣi lati gba idanimọ iṣe to pe.
Iṣafihan / Kí ni láti retí
Nígbà tí gbogbo nkan bá ti wa ni asopọ àti pé kóòdù náà ti wa ni ikojọpọ, o yẹ ki o lè ṣakoso servo naa nipa gbigbe ọwọ rẹ si apa osi tabi ọtun. Servo naa yoo yí pada si 180 iwọn fun iṣe osi kan ati pada si 0 iwọn fun iṣe ọtun kan. Ti a ko ba ri awọn iṣe naa, ṣayẹwo ipo sensọ naa ati awọn ipo ina ti o wa ni ayika (ní fidio ni 05:30).
Iwe akọsilẹ
- Ifáhàn - :00
- Ibi ẹrọ - 01:30
- Ilana Asopọ - 03:00
- Itumọ Koodu - 04:30
- Iṣafihan - 06:00
This tutorial is part of: Àwọn Ẹ̀rọ Iṣẹ́-Ẹ̀rọ
- 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
- Iṣakoso Moto Servo Arduino Pẹlu 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");
}
}
}
Orisun & itọkasi
Ko si awọn orisun sibẹsibẹ.
Fáìlìs📁
Ko si awọn faili ti o wa.