说明
当到达距离时,灯亮起,风扇转动。
使用材料:
Arduino UNO*1超声波模块*1面包板*1LED*1220Ω电阻*1直流电机*1风扇叶片*1ULN2003驱动板*1杜邦线若干
原理图:
PS:因为找不到ULN2003驱动板,所以走线是自己画的。
实物图:
![实物图](https://img-blog.csdnimg.cn/20200213174617238.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1F1S2luWA==,size_16,color_FFFFFF,t_70)
代码:
int Echo = A5;
int Trig = A4;
int motor = 9;
int ledPin = 12;
int speed_0;
int Distance = 0;
void setup()
{
Serial.begin(9600); // 初始化串口
pinMode(ledPin, OUTPUT); // 定义LED
pinMode(motor,OUTPUT);
//初始化超声波引脚
pinMode(Echo, INPUT); // 定义超声波输入脚
pinMode(Trig, OUTPUT); // 定义超声波输出脚
}
void Distance_test() // 量出前方距离
{
digitalWrite(Trig, LOW); // 给触发脚低电平2μs
delayMicroseconds(2);
digitalWrite(Trig, HIGH); // 给触发脚高电平10μs
delayMicroseconds(10);
digitalWrite(Trig, LOW); // 持续给触发脚低电
float Fdistance = pulseIn(Echo, HIGH); // 读取高电平时间(单位:微秒)
Fdistance= Fdistance/58; //为什么除以58等于厘米, Y米=(X秒*344)/2
// X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58
Distance = Fdistance;
}
void loop()
{
Distance_test(); // 读取Distance_test()函数
if((2
speed_0 = 0; // 转速为0(0~255),停止转动
digitalWrite(ledPin, LOW); // LED灯熄灭
Serial.println("您已离开");
}
analogWrite(motor, speed_0); // PWM
}
PS:可能有一些代码与大神,如果侵犯,请联系我。 上一章(Arduino 超声波控制风扇(二))
|