如何根据PIR运动传感器的输入打开和关闭LED?

时间:2019-05-04 18:49:46

标签: matlab arduino

我正在尝试使用Arduino Uno打开和关闭LED。我正在使用PIR运动传感器作为输入。当PIR传感器未检测到任何东西时,我希望LED熄灭。但是,一旦它从引脚12读取了一个值,即使PIR传感器没有检测到任何东西,它也会保持导通状态。

我的代码:

value=readDigitalPin(a,'D12')

while value==1
      writePWMVoltage (a, 'D6', 3)
end

while value==0
      writePWMVoltage (a, 'D6', 0)
end

3 个答案:

答案 0 :(得分:0)

尝试

value=readDigitalPin(a,'D12') {
if (value==1)
      writePWMVoltage (a, 'D6', 3)
}
else {
      writePWMVoltage (a, 'D6', 0)
}
end

这假定readDigitalPin唯一可能的返回值为0和1。如果不是,则替换

else {

使用

else if(value==0) {

其他返回值将被忽略。

答案 1 :(得分:0)

您是否尝试过将下拉电阻器连接到PIR传感器的输出? 我记得使用PIR传感器和Arduino运行模拟。我必须在输出引脚上添加一个下拉电阻,以确保在未检测到任何运动时该引脚保持低电平。

添加下拉电阻后,再次运行原始代码。

答案 2 :(得分:0)

因为有一个MATLAB标签和一些语法,所以我假设您使用的是Arduino的MATLAB Support软件包。如果是这样,请尝试以下操作:

while true 
    value=readDigitalPin(a,'D12');
    if value==1
       writePWMVoltage (a, 'D6', 3)
    else
       writePWMVoltage (a, 'D6', 0)
    end
end

请注意,该代码也将在无限循环中运行,请随时使用数字引脚和按钮来打破循环。