舵机是一种旋转执行器或线性执行器,可以精确控制角度或线性位置,速度和加速度。它由一个电机和一个传感器组成,用于位置反馈。简单来说,它更像是一个可以用户指定的角度旋转的步进电机。 伺服电机有多种尺寸,具体取决于它们可以承载的负载。
第一步 准备材料
舵机
Arduino uno
若干杜邦线
第二步 原理介绍
Micro Servo是一款微型舵机,重量约为9g,可轻松承载高达200g的负载。它可以在大量的小型项目中使用,如机器人,自动鱼食喂食器等。
舵机的技术规格如下: 尺寸:23x11x29毫米 电压:3V至6V DC 重量:9克 速度:0.12秒/ 60(4.8V) 扭矩:1.6千克 – 厘米
舵机是一种精确控制角度的装置,您可以使用任何舵机的代码,硬件或库来控制这些舵机,主要是控制舵机的旋转角度。一般在Arduino里,舵机控制都有一个库,直接操作库,传入一定的角度值,舵机就会旋转到指定的角度。
第三步 电路连接
连接舵机非常简单: 红色线连接ardunio的VCC。 黑色或褐色线连接arduino的GND。 橙色或黄色是信号线连接arduino的数字引脚。图中连接的9号脚。
第四步 上传代码
Arduino IDE内置了两个不同功能的Servos测试示例。它们是旋钮和扫描。对于这个例子,我正在使用扫描程序测试舵机。
您还可以使用串行监视器中提供的输入更改代码并控制舵机。为此,您需要创建一个变量,该变量将保存您输入的角度值。
下面是简单的程序:
#include
Servo myservo; // 创建舵机对象来控制伺服
//大多数电路板上都可以创建12个舵机对象
int pos = 0; // 用于存储舵机角度的变量
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
设备:
暂无设备
平台:
ESP32 Dev Module
ESP32 Wrover Module
Node32s
Nano32
AI Thinker ESP32-CAM
ALKS ESP32
Adafruit ESP32 Feather
BPI-BIT
D-duino-32
Dongsen Tech Pocket 32
ESP32 FM DevKit
ESP32 Pico Kit
ESP32vn IoT Uno
ESPea32
ESPectro32
Electronic SweetPeas - ESP320
FireBeetle-ESP32
Frog Board ESP32
Heltec WiFi Kit 32
Heltec WiFi LoRa 32
Heltec WiFi LoRa 32(V2)
Heltec Wireless Stick
Hornbill ESP32 Dev
Hornbill ESP32 Minima
LOLIN D32
LOLIN D32 PRO
LoPy
LoPy4
M5Stack-Core-ESP32
M5Stack-FIRE
M5Stick-C
MH ET LIVE ESP32DevKIT
MH ET LIVE ESP32MiniKit
MagicBit
Microduino-CoreESP32
NodeMCU-32S ">Node32s
Noduino Quantum
ODROID ESP32
OLIMEX ESP32-DevKit-LiPo
OLIMEX ESP32-EVB
OLIMEX ESP32-GATEWAY
OLIMEX ESP32-PoE
OLIMEX ESP32-PoE-ISO
OROCA EduBot
Onehorse ESP32 Dev Module
Pycom GPy
Silicognition wESP32
SparkFun ESP32 Thing
SparkFun LoRa Gateway 1-Channel
T-Beam
TTGO LoRa32-OLED V1
TTGO T-Watch
TTGO T1
ThaiEasyElec's ESPino32
TinyPICO
Turta IoT Node
VintLabs ESP32 Devkit
WEMOS D1 MINI ESP32
WEMOS LOLIN32
WeMos WiFi&Bluetooth Battery
WiPy 3.0
Widora AIR
XinaBox CW02
u-blox NINA-W10 series (ESP32)
Generic ESP8266 Module
Generic ESP8285 Module
NodeMCU 0.9 (ESP-12 Module)
NodeMCU 1.0 (ESP-12E Module)
Arduino-ESP8266
ESPDuino (ESP-13 Module)
ESPectro Core
ESPino (ESP-12 Module)
ESPresso Lite 1.0
ESPresso Lite 2.0
LOLIN(WEMOS) D1 R2 & mini
LOLIN(WEMOS) D1 mini Lite
LOLIN(WEMOS) D1 mini Pro
Olimex MOD-WIFI-ESP8266(-DEV)
Phoenix 1.0
Phoenix 2.0
Schirmilabs Eduino WiFi
Seeed Wio Link
SparkFun Blynk Board
SparkFun ESP8266 Thing
SparkFun ESP8266 Thing Dev
SweetPea ESP-210
ThaiEasyElec's ESPino
WeMos D1 R1
WiFiduino
WifInfo
XinaBox CW01
4D Systems gen4 IoD Range
Adafruit Feather HUZZAH ESP8266
Amperka WiFi Slott
DOIT ESP-Mx DevKit (ESP8285)
Digistump Oak
ITEAD Sonoff
Invent One
Arduino Nano
Arduino Pro or Pro Mini
Arduino Uno
Arduino Uno WiFi
Arduino Mini
Arduino Mega or Mega 2560
Arduino Micro
Arduino Yun
Arduino Yun Mini
Adafruit Circuit Playground
LilyPad Arduino
LilyPad Arduino USB
Linino One
Arduino BT
Arduino Duemilanove or Diecimila
Arduino Esplora
Arduino Ethernet
Arduino Fio
Arduino Gemma
Arduino Industrial 101
Arduino Leonardo
Arduino Leonardo ETH
Arduino Mega ADK
Arduino NG or older
Arduino Robot Control
Arduino Robot Motor
Nucleo-32
Nucleo-64
Nucleo-144
Generic STM32F0 series
Generic STM32F1 series
Generic STM32F3 series
Generic STM32F4 series
Generic STM32H7 series
Generic STM32L0 series
Generic flight controllers
LoRa boards
Midatronics boards
STM32MP1 series coprocessor
Discovery
3D printer boards
Electronic speed controllers
Eval
编译
上传
#include
Servo myservo; // 创建舵机对象来控制伺服
//大多数电路板上都可以创建12个舵机对象
int pos = 0; // 用于存储舵机角度的变量
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
上面的程序需要使用舵机的库,下面是舵机库下载:
隐藏内容,您需要满足以下条件方可查看
End
第五步 验证与测试
输出:
如果使用的是上面的简单程序,您将看到如上图所示的内容,舵机将以全方位的方式旋转。
如果要手动控制舵机,可以打开串行监视器并输入0到180之间的值。您可以看到舵机从参考点旋转到你想要的角度。