Robofun 機器人論壇

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

紅外線接收器 如何顯示在一分鐘內接收了幾次??

[複製鏈接]
跳轉到指定樓層
1#
發表於 2014-6-23 21:40:30 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
小弟是新手正在研究紅外線接收器
已經可接收紅外線
並可以在Serial Monitor顯示出來
程式碼如下
/*
* IRRemote 紅外線遙控教學
*   範例 1.3: 增加紅外線訊號指示燈
*/
#include <IRremote.h>                    // 引用 IRRemote 函式庫


const int irReceiverPin = 2;             // 紅外線接收器 OUTPUT 訊號接在 pin 2
const int ledPin = 13;                   // LED 接腳


IRrecv irrecv(irReceiverPin);            // 定義 IRrecv 物件來接收紅外線訊號
decode_results results;                  // 解碼結果將放在 decode_results 結構的 result 變數裏


void setup()
{
  pinMode(ledPin, OUTPUT);               // 把 LED 接腳設置為輸出模式
  Serial.begin(9600);                     // 開啟 Serial port, 通訊速率為 9600 bps
  irrecv.enableIRIn();                   // 啟動紅外線解碼
}


// 讓指示燈閃爍幾下
void blinkLED() {
  for (int i=1; i<= 4; i++) {
    digitalWrite(ledPin, HIGH);          // 打開 LED
    delay(100);
    digitalWrite(ledPin, LOW);           // 關掉 LED
    delay(100);
  }  
}


void loop()
{
  if (irrecv.decode(&results)) {         // 解碼成功,收到一組紅外線訊號
    // 印到 Serial port  
    Serial.print("irCode: ");            
    Serial.print(results.value, HEX);    // 紅外線編碼
    Serial.print(",  bits: ");           
    Serial.println(results.bits);        // 紅外線編碼位元數
   digitalWrite(ledPin, HIGH);          // 打開 LED
    delay(100);
    digitalWrite(ledPin, LOW);           // 關掉 LED
    delay(100);
                       // 讓指示燈閃爍幾下
    irrecv.resume();                    // 繼續收下一組紅外線訊號        
  }  
}


想請教各位大大
紅外線接收器  如何顯示接收幾次在一分鐘內???
或者接收端的led在一分鐘內亮了幾次???
謝謝!
2#
發表於 2014-6-25 02:42:58 | 只看該作者
本帖最後由 vegewell 於 2014-6-25 02:44 編輯

回復 1# p12345q1

你需要個計數器,
程式大致如下,尚未確認, 請自行研究,



#include <Timer.h>
#include <IRremote.h>                    // 引用 IRRemote 函式庫


const int irReceiverPin = 2;             // 紅外線接收器 OUTPUT 訊號接在 pin 2
const int ledPin = 13;                   // LED 接腳
int count = 0;

IRrecv irrecv(irReceiverPin);            // 定義 IRrecv 物件來接收紅外線訊號
decode_results results;                  // 解碼結果將放在 decode_results 結構的 result 變數裏

Timer tcb;

void writeToSerial(){

  Serial.println(count);
count = 0;
}

void setup()
{
  pinMode(ledPin, OUTPUT);               // 把 LED 接腳設置為輸出模式
  Serial.begin(9600);                     // 開啟 Serial port, 通訊速率為 9600 bps
  irrecv.enableIRIn();                   // 啟動紅外線解碼
   tcb.every(60000, writeToSerial); // 每經過1 minute,就會呼叫writeToSerial
}


// 讓指示燈閃爍幾下
void blinkLED() {
  for (int i=1; i<= 4; i++) {
    digitalWrite(ledPin, HIGH);          // 打開 LED
    delay(100);
    digitalWrite(ledPin, LOW);           // 關掉 LED
    delay(100);
  }  
}


void loop()
{
  if (irrecv.decode(&results)) {         // 解碼成功,收到一組紅外線訊號
    // 印到 Serial port  
    Serial.print("irCode: ");            
    Serial.print(results.value, HEX);    // 紅外線編碼
    Serial.print(",  bits: ");           
    Serial.println(results.bits);        // 紅外線編碼位元數
   digitalWrite(ledPin, HIGH);          // 打開 LED
    delay(100);
    digitalWrite(ledPin, LOW);           // 關掉 LED
    delay(100);                       // 讓指示燈閃爍幾下
    irrecv.resume();                    // 繼續收下一組紅外線訊號  
count++;      
  }  
  tcb.update();
}
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-30 15:29 , Processed in 0.215474 second(s), 10 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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