中文 英文 韩语 日语
实现功能:当红外感应到人时,控制舵机转动180度
参考:基于Arduino的多种方式控制舵机(舵机、电位器、蓝牙).
硬件连接:
舵机连接:
Arduino | Micro Servo 9g |
---|---|
5V | 红线 |
GND | 棕色 |
PWM~9 | 橙色 |
如图:
实现:在串口输入舵机转动角度,arduino控制舵机转动相应角度。
代码:
#include <Servo.h> //调用库文件
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毫秒
}
红外连接:
Arduino | HC-SR501红外 |
---|---|
5V | + |
A5 | OUT |
GND | - |
实现:当感应到人时,舵机旋转180度,反之,旋转0度。
代码:
#include <Servo.h> //调用库文件
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毫秒
}
总接线图:

原文:https://blog.csdn.net/weixin_44415549/article/details/105148910
叨叨几句... NOTHING