一 硬件
如图数码管是由8个LED(b,a,f,g,e,d,c,DP)构成,外接有10个端口,我自己连接的引脚标号如图,另外数码管分共阳和共阴,区别也很简单,如下【1】
共阳数码管,它们公共端接5V,那在代码中,控制另一端的数字引脚为LOW,这样才能让数码管点亮。
如果是共阴数码管,公共端接GND,在代码中中,控制另一端数字引脚为HIGH,才让数码管点亮。
连线的话,本来按照网站【1】的接法如下图,是在8个LED都接入220欧电阻,两个共阳极都接了5V,觉得这样比较麻烦,所以实际连线图还是按照最开始的上图,每个端口对应数字引脚直接连接即可,并没有串联电阻,在一个共阳极串联一个220欧再接5V,另一个共阳极空置(共阳极两个端口内部本来就是相连的)
二 代码
1. 目的:通过红外遥控器控制1位数码管的显示,希望实现以下3个具体功能
1)通电后数码管随机显示一位数(目前随机出来总是7)
2)遥控器按0~9,就显示对应数字
3)遥控器按+或-,数字相应加/减一位,直到9/0不能增减为止
2. 代码如下
//红外遥控控制1位数码管
#include <IRremote.h>//调用红外遥控的库
int RECV_PIN = 11;//定义红外接口数字引脚
IRrecv irrecv(RECV_PIN);//创建一个红外线接收对象irrecv
decode_results results;//声明一个IRremote库函数独有的变量类型(decode_results),results存放红外解码结果,
int ledpin = 13;//定义LED接口引脚,为了观察遥控器是否发送成功,用LED灯的亮灭来直观展示
boolean ledstate = LOW;
int currentnumber = random(0,10);//定义当前显示的数字为一随机数
//数码管部分相关
/*一位共阳数码管,10个接口,8个对应8个LED(7个条形+1个点形),两个对应正(共阳&#x