【舵机 DS51150-12V】在Arduino UNO开发板上的运用


本教程目的是指导如何通过Arduino UNO开发板对舵机 DS51150-12V进行控制。

Arduino IDE本身自带有Servo库,无需下载就可以直接使用。

本教程主要对DS51150-12V 舵机的两款180°及270°的使用指导

1. 硬件需求

  • 舵机:DS51150-12V 270°及 DS51150-12V 180° 各一台
    在这里插入图片描述
  • Arduino开发板:Arduino UNO Rev3 开发板一块及对应的USB数据线一条
    在这里插入图片描述
  • 杜邦线:两头都是公头的2.54mm杜邦线一排
    在这里插入图片描述
  • 电脑:Windows/Mac 电脑一台(本教程使用Windows 11 64位系统)
    在这里插入图片描述
  • 电源:12V直流电源,可以使用适配器或者稳压电源(本教程使用稳压电源MS-305DS测试)
    在这里插入图片描述

2. 软件需求

  • 编程软件:Arduino IDE 1.8.19 (仅代表本教程测试版本,可以使用其他版本)
    如果还未安装,请在Arduino官网链接进行Arduino IDE下载安装:Arduino software
  • Arduino库:Servo 1.1.8(仅代表本教程测试版本,可以使用其他版本)
    注:不同舵机驱动的脉宽范围会有所区别,需要根据舵机DS51150-12V的范围对Servo库进行修改。修改步骤如下:
  1. 打开DS51150-12V的规格书,进行查看
    在这里插入图片描述
  2. 打开库文件,库文件位置在Arduino安装位置:\Arduino\libraries\Servo\src 的Servo.h文件。
  3. 对Servo.h库文件进行如下修改
    在这里插入图片描述
//#define MIN_PULSE_WIDTH       544     // the shortest pulse sent to a servo  
//#define MAX_PULSE_WIDTH      2400     // the longest pulse sent to a servo
#define MIN_PULSE_WIDTH       500     // the shortest pulse sent to a servo(DS51150-12V)  
#define MAX_PULSE_WIDTH      2500     // the longest pulse sent to a servo (DS51150-12V)  

3. 硬件接线说明

3.1 DS51150-12V 180° 同Arduino接线说明

在这里插入图片描述

3.2 DS51150-12V 270° 同Arduino接线说明

在这里插入图片描述

4. 例程测试

想要驱动 DS51150-12V,需要通过带有PWM功能的接口。
Arduino UNO PWM接口:3,5,6,9,10和11,本次例程使用了PIN 9;

  1. 打开Arduino IDE,复制下方对应代码
  • DS51150-12V 180°源码
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

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
  }
}
  • DS51150-12V 270°源码
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; pos <= 270; pos += 1) { // goes from 0 degrees to 270 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 = 270; pos >= 0; pos -= 1) { // goes from 270 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
  }
}
  1. 进行编译下载
  • 点击Tools -> 选择对应开发板Arduino Uno以及对应COM口,点击下图红色箭头标注的编译并下载,等Done uploading代表上传成功
    在这里插入图片描述
  1. 进行验证,如图,舵机按照程序的设定进行角度旋转
    请添加图片描述
  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮您回答关于Arduino Uno开发板、RC522和舵机的开门程序和接线图。 以下是接线图: ![image](https://img-blog.csdnimg.cn/20220103200017540.png) Arduino Uno开发板的引脚D9连接到了舵机的信号线,即橙色线;RC522的SDA、SCK、MOSI和MISO引脚分别连接到Arduino Uno的D10、D13、D11和D12引脚;另外,还需要为RC522的RST引脚和SS引脚分别连接到Arduino Uno的D9和D8引脚。 以下是开门程序代码: ``` c #include <SPI.h> #include <MFRC522.h> #include <Servo.h> #define SS_PIN 8 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); // 创建MFRC522实例 Servo myservo; // 创建Servo实例 void setup() { Serial.begin(9600); // 初始化串口通信 SPI.begin(); // 初始化SPI总线 mfrc522.PCD_Init(); // 初始化MFRC522 myservo.attach(9); //初始化舵机 } void loop() { // 检测是否有RFID卡片在读卡区域 if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } //读取RFID卡片的序列号 if ( ! mfrc522.PICC_ReadCardSerial()) { return; } // 输出卡片序列号 String content = ""; byte letter; for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : ""); Serial.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "")); content.concat(String(mfrc522.uid.uidByte[i], HEX)); } Serial.println(); // 如果读取到指定的RFID卡片,则控制舵机开门 if (content.substring(1) == "1A 84 76 B8") { // 修改此处为您的卡片序列号 Serial.println("Access allowed"); openDoor(); delay(3000); closeDoor(); } else { Serial.println("Access denied"); } delay(1000); } // 控制舵机开门 void openDoor() { myservo.write(150); } // 控制舵机闭门 void closeDoor() { myservo.write(0); } ``` 您可以将此程序上传到Arduino Uno开发板,并将RC522和舵机按照上面的接线图连接。这个程序可以检测是否有指定的RFID卡片在读卡区域,如果发现则会控制舵机开门,然后延时3秒后再关门。注意,请将代码中的卡片序列号修改为您自己的RFID卡片序列号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值