人体感应灯的疑问。-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4815|回复: 5

人体感应灯的疑问。

[复制链接]
发表于 2018-2-23 19:22 | 显示全部楼层 |阅读模式
while (!digitalRead(PIRpin) )
  {
  }
  // 将灯打开10秒,然后关闭
  Serial.println("turn on");
  digitalWrite(RELAYpin, HIGH);
  delay(2000);
  digitalWrite(RELAYpin, LOW);
  Serial.println("turn off");

请问!digitalRead(PIRpin)语句中,!起什么作用?
while语句中执行的命令放到{}里面行不行?如下
while (!digitalRead(PIRpin) )
  { // 将灯打开10秒,然后关闭
  Serial.println("turn on");
  digitalWrite(RELAYpin, HIGH);
  delay(2000);
  digitalWrite(RELAYpin, LOW);
  Serial.println("turn off");
  }


发表于 2018-2-23 22:07 | 显示全部楼层
!取反
!true==false
发表于 2018-2-23 23:23 | 显示全部楼层
这里的!是取反的意思,假如你读到的端口值是1那么while (!digitalRead(PIRpin) ),条件就是假跳过大括号里面的内容直接执行后面的语句
相反,读到0,取反后就是1,条件为真,一直执行{},直到条件是假
 楼主| 发表于 2018-2-24 08:38 | 显示全部楼层
太感谢了!实验效果总是反着,终于找到原因了。
发表于 2018-3-15 11:27 | 显示全部楼层
dxin7662 发表于 2018-2-24 08:38
太感谢了!实验效果总是反着,终于找到原因了。

你的效果是什么样的?我也在测试这个
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:45 , Processed in 0.095358 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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