arduino 红外遥控数码管

来源:互联网 发布:js获取当前时间毫秒数 编辑:程序博客网 时间:2024/04/30 03:33

使用arduino红外遥控数码管,程序如下。

#include <IRremote.h>
int ledpin = 11;
IRrecv irrecv(ledpin);
decode_results results;
int Number = 0;


long codes[12] = {
  0xFD30CF, 0xFD08F7,
  0xFD8877, 0xFD48B7,
  0xFD28D7, 0xFDA857,
  0xFD6897, 0xFD18E7,
  0xFD9867, 0xFD58A7,
  0xFD20DF, 0xFD609F,
};


int number[10][8] = {
  {0, 0, 0, 1, 0, 0, 0, 1},
  {0, 1, 1, 1, 1, 1, 0, 1},
  {0, 0, 1, 0, 0, 0, 1, 1},
  {0, 0, 1, 0, 1, 0, 0, 1},
  {0, 1, 0, 0, 1, 1, 0, 1},
  {1, 0, 0, 0, 1, 0, 0, 1},
  {1, 0, 0, 0, 0, 0, 0, 1},
  {0, 0, 1, 1, 1, 1, 0, 1},
  {0, 0, 0, 0, 0, 0, 0, 1},
  {0, 0, 0, 0, 1, 1, 0, 1},
};
void Show(int i) {
  for (int pin = 2; pin <= 9 ; pin++) {
    digitalWrite(pin, number[i][pin - 2]);
  }
}


void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
  for (int y = 0; y <= 9; y++) {
    pinMode(y, OUTPUT);
    digitalWrite(y, HIGH);
  }
}


void loop() {
  if (irrecv.decode(&results)) {
    for (int i = 0; i <= 11; i++) {
      if (results.value == codes[i] && i <= 9) {
        Show(i);
        Number == i;
        Serial.println(i);
        break;
      }
      else if (results.value == codes[10] && Number != 9) {
        Number--;
        Show(Number);
        Serial.println(Number);
        break;
      }
      else if (results.value == codes[11] && Number != 9) {
        Number++;
        Show(Number);
        Serial.println(Number);
        break;
      }
      Serial.println(results.value, HEX);
      irrecv.resume();
    }
  }
}

将这段代码上传后:

按遥控器上的0,数码管就显示0.。

按遥控器上的1,数码管就显示1.。

按遥控器上的2,数码管就显示2.。

按遥控器上的3,数码管就显示3.。

按遥控器上的4,数码管就显示4.。

按遥控器上的5,数码管就显示5.。

按遥控器上的6,数码管就显示6.。

按遥控器上的7,数码管就显示7.。

按遥控器上的8,数码管就显示8.。

按遥控器上的9,数码管就显示9.。

按遥控器上的+,数码管上的数就加一.。

按遥控器上的-,数码管上的数就减一.。

0 0
原创粉丝点击