极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14818|回复: 4

为什么人体红外感应模块一直输出高电平?

[复制链接]
发表于 2017-2-2 17:47:14 | 显示全部楼层 |阅读模式
下面是非常简单的代码:
bool a;
void setup() {
  a=false;
  Serial.begin(9600);
  pinMode(A2,INPUT); //连人体红外感应模块输出端
  pinMode(3,OUTPUT); //连LED灯
  pinMode(4,INPUT_PULLUP); //连一个开关
  pinMode(13,OUTPUT); //Arduino自带的LED灯
}

void loop() {
  if(!digitalRead(4)){ //开关控制
    delay(200);
    while(!digitalRead(4));
    delay(200);
    a=!a;
  }
  if(a){
    digitalWrite(13,HIGH);
  }
  else digitalWrite(13,LOW);
  if(analogRead(A2)>500&&a){ //LED灯控制
    analogWrite(3,153);
  }
  else{
    analogWrite(3,0);
  }
  Serial.println(analogRead(A2));
}

即使没有人的时候A2依然输出的是高电平,数值大概在670-720之间。
回复

使用道具 举报

发表于 2017-2-2 18:34:02 | 显示全部楼层
木有实物连接,怎样猜?一般情况你先了解下,你的红外头的输出,在正常没有人是多少?在有人时是多少?用串口显示出来,你再程序中设置几个断点,看下卡在那了
回复 支持 反对

使用道具 举报

发表于 2017-2-3 11:44:26 | 显示全部楼层
670-720像是输入端悬空着,红外感应输出应该是数字型也即非零即一
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-9 11:10:02 | 显示全部楼层
cao57508 发表于 2017-2-2 18:34
木有实物连接,怎样猜?一般情况你先了解下,你的红外头的输出,在正常没有人是多少?在有人时是多少?用串 ...

行,我试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-9 11:10:21 | 显示全部楼层
林定祥 发表于 2017-2-3 11:44
670-720像是输入端悬空着,红外感应输出应该是数字型也即非零即一

我用的是模拟口
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 22:10 , Processed in 0.039367 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表