2019年6月22日 星期六

IR

杜邦線用久了,接觸會不良
/*
 * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  // In case the interrupt driver crashes on setup, give a clue
  // to the user what's going on.
  Serial.println("Enabling IRin");
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin");
  pinMode(2,OUTPUT);
}

void loop()
{
  if (irrecv.decode(&results))
  {
    Serial.println(results.value,HEX);
    if(results.value==0XFF30CF)
    {
      digitalWrite(2,!digitalRead(2));
    }
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}

例二:
#include <IRremote.h>
long sw1=0xFF30CF;
long sw2=0xFF18E7;
long sw3=0xFF7A85;
long sw4=0xFF10EF;
int i,j=0;
int RECV_PIN = 11; // 使用數位腳位2接收紅外線訊號
IRrecv irrecv(RECV_PIN); // 初始化紅外線訊號輸入
decode_results results; // 儲存訊號的結構
const int led[4]={2,3,4,5};
int key=0;

void setup()
{
  Serial.begin(9600);
  irrecv.blink13(true); // 設為true的話,當收到訊號時,腳位13的LED便會閃爍
  irrecv.enableIRIn(); // 啟動接收
  for(i=0;i<4;i++)
    pinMode(led[i],OUTPUT);
}

void loop()
{
  if (irrecv.decode(&results))          // 接收紅外線訊號並解碼
  {
    irrecv.resume();                   // 準備接收下一個訊號
    if(results.value==sw1)
       key=1;
    else if(results.value==sw2)
       key=2;
    else if(results.value==sw3)
       key=3;
  }
  for(i=0;i<4;i++)
    digitalWrite(led[i],LOW);
  if(key==1)
  {
    j++;
    if(j>3)
      j=0;
    digitalWrite(led[j],HIGH);
    delay(1000); 
  } 
  else if(key==2)
  {
    j--;
    if(j<0)
      j=3;
    digitalWrite(led[j],HIGH);
    delay(1000); 
  }
}

例三:
#include <IRremote.h>
long sw1=0xFF30CF;
long sw2=0xFF18E7;
long sw3=0xFF7A85;
long sw4=0xFF10EF;
int i;
int RECV_PIN = 11; // 使用數位腳位2接收紅外線訊號
IRrecv irrecv(RECV_PIN); // 初始化紅外線訊號輸入
decode_results results; // 儲存訊號的結構
const int led[4]={2,3,4,5};
void setup()
{
  Serial.begin(9600);
  irrecv.blink13(true); // 設為true的話,當收到訊號時,腳位13的LED便會閃爍
  irrecv.enableIRIn(); // 啟動接收
  for(i=0;i<4;i++)
    pinMode(led[i],OUTPUT);
}

void loop()
{
  if (irrecv.decode(&results))          // 接收紅外線訊號並解碼
  {
    irrecv.resume();                   // 準備接收下一個訊號
    if(results.value==sw1)
       digitalWrite(2,!digitalRead(2));
    else if(results.value==sw2)
       digitalWrite(3,!digitalRead(3));
    else if(results.value==sw3)
       digitalWrite(4,!digitalRead(4));
    else if(results.value==sw4)
       digitalWrite(5,!digitalRead(5));
  }
}

沒有留言:

張貼留言

algorithm

 #include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv)  { for(int j=2;j<=100;j++)//j...