Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 3193|回復: 8
打印 上一主題 下一主題

用人體紅外線感測器判斷人體進門和出門 問題

[複製鏈接]
1#
發表於 2018-11-19 09:05:21 | 顯示全部樓層
這樣寫有問題,
你的寫法可以簡化成
f((a == 1) && (b == 1)) {
  digitalWrite(led1,HIGH);
} else if((b == 1) && (a == 1)) {
  digitalWrite(led2,HIGH);
} else {
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
}
然後第一個判斷式和第二個判斷式根本一樣, 所以又變成
f((a == 1) && (b == 1)) {
  digitalWrite(led1,HIGH);
}  else {
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
}
所以才不會亮
只要同時遮住兩個就會亮了

當通過的時候, 步驟應該是
(sensor1, sensor2) =  (0, 0)
(sensor1, sensor2) =  (1, 0)
(sensor1, sensor2) =  (0, 1)
(sensor1, sensor2) =  (0, 0)
如果從另一邊,
(sensor1, sensor2) =  (0, 0)
(sensor1, sensor2) =  (0, 1)
(sensor1, sensor2) =  (1, 0)
(sensor1, sensor2) =  (0, 0)
你要記住前一次 sensor1 和 sensor2 的狀態,
當有變化的時候再處理
才有辦法判斷
2#
發表於 2018-11-19 10:47:10 | 顯示全部樓層
另外宣告兩個變數, 代表上一次的狀態
初始值給 -1
int pa = -1, pb = -1;
如果 pa 不等於 a, 或 pb不等於 b (表示狀態改變)
{
如果 pa = 1, 且 pb = 0, 且 a = 0, b = 1; 就是進門
如果 pa = 0, 且 pb = 1 , 且 a = 1, b = 0; 就是出門
然後更新 pa 和 pb 的值, 也就是
pa 等於 a
pb 等於 b
}

前提是..不能兩個紅外線感測器同時被遮到
3#
發表於 2018-11-20 05:50:54 | 顯示全部樓層
改成
if(a == 1, 或 b== 1)
{
if( pa == 1, 且 pb == 0, 且 a == 0, b == 1){
就是進門
pa=-1
pb=-1
} else if(pa == 0, 且 pb == 1 , 且 a == 1, b == 0){
就是出門
pa=-1
pb=-1
}
else {
pa = a
pb = b
}
}
如果還不行,請把程式碼貼出來看看
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-6 05:12 , Processed in 0.156212 second(s), 6 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表