用1个一体化红外接收头、1个红外遥控器、1个7段数码管,设计一个小家电遥控数字显示器(英文名为:RemoteNumber),具体要求如下: 按下遥控器上的某个数字按键0-9,数码管上立刻显示按下的数字; 按下遥控器上的任意一个非数字键,数码管全黑,不显示任何数字。
时间: 2024-06-12 20:08:13 浏览: 118
1. 硬件连接
将红外接收头接在Arduino的2号引脚上,数码管的a-g引脚分别接在Arduino的3-9号引脚上,数码管的DP引脚接在Arduino的10号引脚上,遥控器接在Arduino的11号引脚上。
2. 软件设计
首先需要引入IRremote库,用于接收红外信号。然后定义数码管a-g引脚及DP引脚的数字显示数组,以及红外接收头的引脚。在setup函数中初始化数码管引脚为输出模式,同时开启红外接收头。在loop函数中,使用IRrecv库的decode函数接收红外信号,并将其转换为红外代码。如果接收到的红外代码是数字键,则将对应的数字显示在数码管上;如果接收到的红外代码是非数字键,则将数码管全黑,不显示任何数字。
3. 完整代码
```
#include <IRremote.h>
int a = 3, b = 4, c = 5, d = 6, e = 7, f = 8, g = 9, dp = 10;
int digit[10][7] = {{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1}}; // 9
int irPin = 2;
IRrecv irrecv(irPin);
decode_results results;
void setup() {
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dp, OUTPUT);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
if (results.value >= 48 && results.value <= 57) { // 数字键
int n = results.value - 48;
digitalWrite(a, digit[n][0]);
digitalWrite(b, digit[n][1]);
digitalWrite(c, digit[n][2]);
digitalWrite(d, digit[n][3]);
digitalWrite(e, digit[n][4]);
digitalWrite(f, digit[n][5]);
digitalWrite(g, digit[n][6]);
digitalWrite(dp, LOW);
} else { // 非数字键
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp, LOW);
}
irrecv.resume();
}
}
```
阅读全文