说明
当到达距离时,灯亮起,风扇转动。
使用材料:
- Arduino UNO*1
- 超声波模块*1
- 面包板*1
- LED*1
- 220Ω电阻*1
- 直流电机*1
- 风扇叶片*1
- ULN2003驱动板*1
- 杜邦线若干
原理图:
PS:因为找不到ULN2003驱动板,所以走线是自己画的。
实物图:
代码:
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<Distance)&(Distance<30)) // 当大于2cm小于30cm的时候执行以下命令
{
speed_0 = 175; // 转速为175(0~255)
digitalWrite(ledPin, HIGH); // LED灯亮起
Serial.println("欢迎回来QuKin");
}
else if(Distance>=30) // 当大于等于30cm的时候执行以下命令
{
speed_0 = 0; // 转速为0(0~255),停止转动
digitalWrite(ledPin, LOW); // LED灯熄灭
Serial.println("您已离开");
}
analogWrite(motor, speed_0); // PWM
}
PS:可能有一些代码与大神,如果侵犯,请联系我。
上一章(Arduino 超声波控制风扇(二))