黄工无刷电机学习
登录
直播中
王兰
13年用户
1636经验值
擅长:基础元器件
私信
关注
[问答]
请问一下Arduino是怎么利用红外感应控制舵机的?
开启该帖子的消息推送
Arduino
请问一下Arduino是怎么利用红外感应控制舵机的?
回帖
(1)
何丽
2021-10-13 11:43:46
硬件连接:
舵机连接:
[tr]ArduinoMicro Servo 9g[/tr]
5V
红线
GND
棕色
PWM~9
橙色
如图:
实现:在串口输入舵机转动角度,arduino控制舵机转动相应角度。
代码:
#include
//调用库文件
Servo myservo; // 创建一个伺服电机对象
char inByte = 0; //串口接收的数据
int angle = 0; //角度值
String temp = "";//临时字符变量
void setup()
{
myservo.attach(9); //定义舵机的引脚为9
Serial.begin(9600); //设置波特率
}
void loop()
{
while (Serial.available() > 0) //判断串口是否有数据
{
inByte = Serial.read();//读取数据,串口一次只能读1个字符
temp += inByte;//把读到的字符存进临时变量里面缓存,
//再继续判断串口还有没有数据,直到把所有数据都读取出来
}
if(temp != "") //判断临时变量是否为空
{
angle = temp.toInt(); //把变量字符串类型转成整型
Serial.println(angle); //输出数据到串口上,以便观察
}
temp = "";//清空临时变量
myservo.write(angle); //控制舵机转动相应的角度。
delay(100);//延时100毫秒
}
红外连接:
[tr]ArduinoHC-SR501红外[/tr]
5V
+
A5
OUT
GND
-
实现:当感应到人时,舵机旋转180度,反之,旋转0度。
代码:
#include
//调用库文件
Servo myservo; // 创建一个伺服电机对象
int angle1 = 0; //原始角度值
int angle2 = 180; //旋转角度值
int Sensor_pin = A5;
void setup()
{
pinMode(Sensor_pin,INPUT); //设置人体红外接口为输入状态
myservo.attach(9); //定义舵机的引脚为9
Serial.begin(9600);
}
void loop()
{
int val=digitalRead(Sensor_pin); //定义参数存储人体红外传感器读到的状态
Serial.println(val);
if(val == 1) //如果检测到有人(在检测范围内)
{
myservo.write(angle2); //控制舵机转动相应的角度。
}
else
{
myservo.write(angle1); //控制舵机转动相应的角度。
}
delay(100); //延时100毫秒
}
总接线图:
硬件连接:
舵机连接:
[tr]ArduinoMicro Servo 9g[/tr]
5V
红线
GND
棕色
PWM~9
橙色
如图:
实现:在串口输入舵机转动角度,arduino控制舵机转动相应角度。
代码:
#include
//调用库文件
Servo myservo; // 创建一个伺服电机对象
char inByte = 0; //串口接收的数据
int angle = 0; //角度值
String temp = "";//临时字符变量
void setup()
{
myservo.attach(9); //定义舵机的引脚为9
Serial.begin(9600); //设置波特率
}
void loop()
{
while (Serial.available() > 0) //判断串口是否有数据
{
inByte = Serial.read();//读取数据,串口一次只能读1个字符
temp += inByte;//把读到的字符存进临时变量里面缓存,
//再继续判断串口还有没有数据,直到把所有数据都读取出来
}
if(temp != "") //判断临时变量是否为空
{
angle = temp.toInt(); //把变量字符串类型转成整型
Serial.println(angle); //输出数据到串口上,以便观察
}
temp = "";//清空临时变量
myservo.write(angle); //控制舵机转动相应的角度。
delay(100);//延时100毫秒
}
红外连接:
[tr]ArduinoHC-SR501红外[/tr]
5V
+
A5
OUT
GND
-
实现:当感应到人时,舵机旋转180度,反之,旋转0度。
代码:
#include
//调用库文件
Servo myservo; // 创建一个伺服电机对象
int angle1 = 0; //原始角度值
int angle2 = 180; //旋转角度值
int Sensor_pin = A5;
void setup()
{
pinMode(Sensor_pin,INPUT); //设置人体红外接口为输入状态
myservo.attach(9); //定义舵机的引脚为9
Serial.begin(9600);
}
void loop()
{
int val=digitalRead(Sensor_pin); //定义参数存储人体红外传感器读到的状态
Serial.println(val);
if(val == 1) //如果检测到有人(在检测范围内)
{
myservo.write(angle2); //控制舵机转动相应的角度。
}
else
{
myservo.write(angle1); //控制舵机转动相应的角度。
}
delay(100); //延时100毫秒
}
总接线图:
举报
更多回帖
rotate(-90deg);
回复
相关问答
Arduino
如何用
红外感应
控制
电动三通阀门。
2015-04-18
3249
求
一
个
红外感应
双稳态延时威廉希尔官方网站 .
2023-11-05
835
请问
PROTEUS里面,有没有
红外感应
的模块?
2012-12-07
9963
红外感应
灯原理及原理图
2012-04-01
10166
人体
红外感应
方案
2015-02-05
3619
求助!制作简单的单片机
红外感应
开关
2014-03-30
5134
请大大们帮忙,咨询关于
红外感应
威廉希尔官方网站 的问题求解
2013-03-31
1891
有用过
红外感应
模块的大神没
2014-03-27
3722
求
一
段人体
红外感应
设计代码!
2015-03-09
2466
有没有10cm左右到的人体
红外感应
器?
2017-07-24
5757
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分