Arduino 数码管和+LED灯设计 (红绿灯)
写在前面
这里用到的是一位共阴极数码管,管脚图在之前的一位数码管设计文章里面发过,其实在网上也很容易找到引脚图的。
说正经的
这次依旧是没有什么技术或者代码问题,很简单的一个设计,最大的作用可能就是大家可以试一试自己整合代码的能力(doge)
数码管引脚设置:7, 6, 4, 2, 1, 9, 10, 5;
LED灯引脚设置:3, 11, 12;
代码
int setPins[] = {7, 6, 4, 2, 1, 9, 10, 5}; //端口设置
byte digits[10][8] = {
// a, b, c, d, e, f, g,h.
{1, 1, 1, 1, 1, 1, 0, 0}, // 0
{0, 1, 1, 0, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1, 0}, // 2
{1, 1, 1, 1, 0, 0, 1, 0}, // 3
{0, 1, 1, 0, 0, 1, 1, 0}, // 4
{1, 0, 1, 1, 0, 1, 1, 0}, // 5
{1, 0, 1, 1, 1, 1, 1, 0}, // 6
{1, 1, 1, 0, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1, 0}, // 8
{1, 1, 1, 1, 0, 1, 1, 0} // 9
};
void num(int n){
for (int i=0; i<8; i++)
digitalWrite(setPins[i], digits[n][i]);
}
void Traffic_lights(int t){
if(t==3){
num(3);
delay(1000);
num(2);
delay(1000);
num(1);
delay(1000);
num(0);
}
if(t==2){
num(2);
delay(1000);
num(1);
delay(1000);
num(0);
}
}
void setup()
{
for (int i=0; i< 8; i++){
pinMode(setPins[i], OUTPUT); //端口初始化为输出
}
pinMode(3, OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}
void loop(){
digitalWrite(3,HIGH);
Traffic_lights(3);
digitalWrite(3,LOW);
digitalWrite(11,HIGH);
Traffic_lights(2);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
num(3);
delay(500);
digitalWrite(12,LOW);
delay(500);
digitalWrite(12,HIGH);
num(2);
delay(500);
digitalWrite(12,LOW);
delay(500);
digitalWrite(12,HIGH);
num(1);
delay(500);
digitalWrite(12,LOW);
delay(500);
}
显示效果
红灯持续亮三秒,数码管显示321;绿灯持续亮2s,数码管显示21;黄灯每秒闪烁一次,数码管显示321。