使用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.。
按遥控器上的+,数码管上的数就加一.。
按遥控器上的-,数码管上的数就减一.。