Robofun 機器人論壇

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

[求助]紅外線感測反射設置

[複製鏈接]
跳轉到指定樓層
1#
發表於 2014-4-23 12:25:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
小弟剛接觸,想做一個小實驗為用紅外線接收發射做反射式感應,以下為程式,但是傳完程式後,可以正常動作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();                             // 讓指示燈閃爍幾下
}
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-30 14:22 , Processed in 0.232698 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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