|
|
小编颇爱动手,最近手里正好有一些边角余料——超声波传感器 3色led模块于是灵感一来,手一痒。就做出了一个临近告警装置
如下图
具体所需材料如下一块arduino板 一块sensor 5.0拓展板(其实要不要都行,主要是为了接线方便。) 一个三色led
模块 一个超声波模块或红外发射接收模块(其实要用红外线的话程序得稍微改一下。我这个主要用得是超声波的传感器。)
接下来我们就开始做吧
首先我们接线(啊!伟大的接线员开始工作了。)接线时要注意把超声波的trig引脚和echo引脚不要接反了具体接线如图所示
(无拓展板)
之后 就是写程序
我用的是arduino官方的编程器,编译烧写一气呵成具体程序如下
- const int echopin=3; // echo接3端口
- const int trigpin=2; // trig接2端口
- int redpin=7;
- int bluepin=6;
- int greenpin=5; //定义3色led接口
- int a; //定义数字变量1
- int led=13;//定义led接口
- int val;//定义数字变量2
- void setup()
- {
- pinMode(redpin,OUTPUT);
- pinMode(bluepin,OUTPUT);
- pinMode(greenpin,OUTPUT);//设定3色led颜色输出
- Serial.begin(9600);
- pinMode(echopin,INPUT); //设定echo为输入模式
- pinMode(trigpin,OUTPUT);//设定trig为输出模式
- pinMode(led,OUTPUT);//定义led输出
- }
- void loop()
- {
-
- digitalWrite(trigpin,LOW);
- delayMicroseconds(2);
- digitalWrite(trigpin,HIGH);
- delayMicroseconds(10);
- digitalWrite(trigpin,LOW); //发一个10ms的高脉冲去触发TrigPin
- float distance = pulseIn(echopin,HIGH);//接收高电平时间
- distance = distance/58.0;//计算距离
- Serial.print(distance); //输出距离
-
-
-
- if(distance<=5)
-
- {
- for(a=4;a<5;a++)
- {
- digitalWrite(greenpin,HIGH);//定义绿灯高电平
- delay(60);//延时60微秒
- digitalWrite(bluepin,LOW);//定义蓝灯低电平
- delay(60);//延时60微秒
- digitalWrite(redpin,LOW);//定义红灯低电平
- delay(60);//延时60微秒
- }
- }
-
- if( distance>5&&distance<=10)
- {for(a=4;a<5;a++)
- {
- digitalWrite(greenpin,LOW);//定义绿灯低电平
- delay(60);//延时60微秒
- digitalWrite(bluepin,HIGH);//定义蓝灯高电平
- delay(60);//延时60微秒
- digitalWrite(redpin,LOW);//定义红灯低电平
- delay(60);//延时60微秒
- }
-
- }
-
- if(distance>10)
- {
- for(a=4;a<5;a++)
- {
- digitalWrite(greenpin,LOW);//定义绿灯低电平
- delay(60);//延时60微秒
- digitalWrite(bluepin,LOW);//定义蓝灯低电平
- delay(60);//延时60微秒
- digitalWrite(redpin,HIGH);//定义红灯高电平
- delay(60);//延时60微秒
- }
- }
- delay(60);//整个循环持续60微秒
- }
复制代码
注意在这个程序的思路里要想让灯发出一种颜色就得让另两种灯没有颜色——熄灭,或者低电平。如果不再for语句中声明一下另两种灯的状态则三中灯是一起亮的于是就变成了白颜色即三原色一起发光。这个问题足足困扰了我一下午,所以是很值得注意的。
最后让我们来一起欣赏一下效果
当高于10cm的时候发绿光
当大于5cm小于10cm时发红光
当小于5cm时发蓝光 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|