Robofun 機器人論壇
標題:
[求助]紅外線感測反射設置
[打印本頁]
作者:
ray60803
時間:
2014-4-23 12:25
標題:
[求助]紅外線感測反射設置
小弟剛接觸,想做一個小實驗為用紅外線接收發射做反射式感應,以下為程式,但是傳完程式後,可以正常動作2~7次,之後就沒有反應了,接收發射器也正常,不知道是哪邊的問題,有大大可以幫忙解惑嗎? 再一問,如果頻率調高是否可以讓反射的距離變長?
/*
* irObjectDetection.pde: 紅外線物體偵測
*/
const int irReceiver = 2; // 紅外線接收器
const int irLed = 3; // 紅外線發射器
const int ledPin = 13; // 紅外線指示燈
const unsigned int frequency = 38000; // 發射頻率(單位: Hz)
void setup() {
Serial.begin(9600); // 開啟 Serial port, 通訊速率為 9600 bps
pinMode(irReceiver, INPUT); // 把 irReceiver 接腳設置為 INPUT
pinMode(irLed, OUTPUT); // 把 irLed 接腳設置為 INPUT
pinMode(ledPin, OUTPUT); // 把 ledPin 設置為 OUTPUT
tone(irLed, frequency); // 產生指定頻率的脈波 (Pulses)
}
// 讓指示燈閃爍幾下
void blinkLED() {
for (int i=1; i<= 4; i++) {
digitalWrite(ledPin, HIGH); // 打開指示燈
delay(100);
digitalWrite(ledPin, LOW); // 關掉指示燈
delay(100);
}
}
void loop() {
int ir_status = digitalRead(irReceiver); // 讀取 irReceiver 的狀態
Serial.println(ir_status); // 把 irReceiver 的狀態印到 Serial Port
// 檢查 irReceiver 是否有收到紅外線訊號
// 有的話,ir_status 會是 0 (因為 Receiver 會把訊號反向, 所以 0 代表有收到訊號)
if (ir_status == 0)
blinkLED(); // 讓指示燈閃爍幾下
}
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2