当我们走在楼道里,一拍手,楼道里面的灯就自动亮起来了,楼道里面用的声控灯就是用麦克风来控制的。我们还可以结合之前的光线感应器做一个灯,只有光线不足的时候,然后有声音的时候LED才会亮起,并且延时5秒后熄灭。
# 部署
LED6
接到OSEPP UNO的13
号引脚。- 麦克风接到OSEPP UNO的
A0
引脚。 - 光线感应器接到OSEPP UNO的
A1
引脚。
流程图
程序的值可以根据实际情况设定,光线传感器的值越低,就需要更暗的环境,声音传感器的值越高,就需要更大的声音来触发,你也可以适当的修改来看一下实际效果。
# 程序搭建
- oseppBlock程序
- Arduino程序
void setup()
{
//soundSensor1
pinMode(A0, INPUT); //定义A0为输入模式
//led1
pinMode(13, OUTPUT); //定义13号引脚为输出模式
//light1
pinMode(A1, INPUT); //定义A0为输入模式
}
void loop()
{
if (analogRead(A1) < 150 && analogRead(A0) > 300) //如果A1小于150与A0大于300,要同时满足这两个条件
{
digitalWrite(13, HIGH); //13号引脚输出高电平
delay(5000); //延时5000毫秒
}
else
{
digitalWrite(13, LOW); //13号引脚输出低电平
delay(100); //延时100毫秒
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 运行结果
当光线变暗,光线传感器的值小于150
,并且声音传感器的值要大于300
,此时就会执行下面的程序。点亮LED并且延时5秒后熄灭,否则LED保持低电平状态。
# 解析
- 逻辑运算符
代码里面 用到了一个新的运算符号 与(&&)
,常用的运算符还有 或(||)
和非(!)
。
代码里面用 &&表示 ,就像串联关系。如果第一个条件与第二个条件皆为"真",传回"真"(true
)值。也就是条件都同时满足时,才执行。
代码:
if(a&&b)
只有当a
和b
同时为真时才能为真,其余为假。
代码里面用 ||表示 ,就像并联关系。如果第一个条件和第二个条件,其中只要有一个为"真",传回"真"(true
)值。也就是满足给定条件其中的一个,就执行。
代码:
if(a||b)
只有当a
和b
同时为假时才能为假,其余为真。
代码里面用 !表示 ,如果条件为"假",传回"真"(true
)值。也就是不符合给定条件,就执行。
代码:
if(!a)
!a,若a
为真,则!a
为假;若a
为假,则!a
为真。