第35课 16路PWM舵机驱动板的使用
本帖最后由 lxf 于 2020-8-17 13:30 编辑第35课 16路PWM舵机驱动板的使用
目标
1、16路PWM舵机驱动板第三方库的使用2、16路PWM舵机驱动板的使用3、超声波控制舵机转动
实验材料
Arduino UNO开发板HC-SR04超声波传感器模块三个MG90S金属齿轮舵机16路PWM舵机驱动板9V充电锂电池和9V电池扣子 配套USB数据线配套杜邦线若干Arduino IDE软件
内容
接线图
备注:三个舵机分别接在16路PWM舵机驱动板的3、4、5号引脚处。
接线方式
Arduino UNO <------> 16路PWM舵机驱动板 5V <------> VCC GND <------> GND A5 <------> SCL A4 <------> SDAArduino UNO <------> HC-SR04超声波传感器模块 5V <------> VCC GND <------> GND 7 <------> Trig 3 <------> EchoMG90S金属齿轮舵机1 <------> 16路PWM舵机驱动板 信号线 <------> 3 正极 <------> V+ 负极 <------> GNDMG90S金属齿轮舵机2 <------> 16路PWM舵机驱动板 信号线 <------> 4 正极 <------> V+ 负极 <------> GNDMG90S金属齿轮舵机3 <------> 16路PWM舵机驱动板 信号线 <------> 5 正极 <------> V+ 负极 <------> GND9V充电锂电池 <------> 16路PWM舵机驱动板 正极 <------> V+ 负极 <------> GND
需要用到16路PWM舵机驱动板第三方库文件,文件名为“AdafruitPWMServoDriverLibrary”。下载链接:https://pan.baidu.com/s/1amHrUFnCnireI4ZfjqFLGA 提取码:45bt下载后解压,把解压后的整个文件夹复制放到Arduino安装包的“libraries”文件夹里面。
程序实现代码
<div class="blockcode"><blockquote>#include <Wire.h>
#include <Adafruit_PWMServoDriver.h> //16路PWM舵机驱动板库文件
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define SERVOMIN150
#define SERVOMAX600
float checkdistance_7_3() { //定义一个浮点型函数checkdistance_7_3()
digitalWrite(7, LOW); //低高低电平发一个短时间脉冲去Trigpin
delayMicroseconds(2);
digitalWrite(7, HIGH);
delayMicroseconds(10);
digitalWrite(7, LOW);
float distance = pulseIn(3, HIGH) / 58.00;
delay(10);
return distance; //将回波时间换算成distance
}
void setup(){
Serial.begin(9600);
pwm.begin();
pinMode(7, OUTPUT);//定义7号引脚为输出
pinMode(3, INPUT); //定义3号引脚为输入
}
void loop(){
pwm.setPWMFreq(50);
if (checkdistance_7_3() < 20) { //如果超声波碰到障碍物距离小于20,那么三个舵机转动
pwm.setPWM(3,0,240);
pwm.setPWM(4,0,240);
pwm.setPWM(5,0,240);
} else { //否则三个舵机保持原先状态
pwm.setPWM(3,0,40);
pwm.setPWM(4,0,40);
pwm.setPWM(5,0,40);
}
}
页:
[1]