7段RGB三色LED数码管数字屏-首创开源@青年创造工坊
项目名称:7段RGB三色LED数码管数字屏-首创开源@青年创造工坊
项目简介:
以往的7段式数码管数字屏只有单色显示,难以显示不同状态的计数显示,现在用7颗LED方型255组成新的7段式RGB数码管,除了显示数字外,数码管的不同颜色和混色方式也可以直接反应当前的运行状态。
引脚:10pin,间距:1.27mm,电压:3.3v-5v,阴极:r(红),g(绿),b(蓝)
图示:
PCB信息:
背面 正面
官方示例:
#define C1 262
#define C2 294
#define C3 330
#define C4 350
#define C5 393
#define C6 441
#define C7 495
int num = 0;
const int clkPin = 17; //CLK引脚17
const int dtPin = 15; //DT引脚连接到引脚15
const int swPin = 16; //SW引脚连接到引脚16
int n=
{ {1,1,1,1,1,1,0},//0
{1,1,0,0,0,0,0},//1
{1,0,1,1,0,1,1},//2
{1,1,1,0,0,1,1},//3
{1,1,0,0,1,0,1},//4
{0,1,1,0,1,1,1},//5
{0,1,1,1,1,1,1},//6
{1,1,0,0,0,1,0},//7
{1,1,1,1,1,1,1},//8
{1,1,1,0,1,1,1}//9
};
void setup()
{
int buzzer=10; //蜂鸣器引脚10
for(int i=2;i<=10;i++)//数字led占用引脚
{ pinMode(i,OUTPUT);}//定义输出
pinMode(clkPin, INPUT);
pinMode(dtPin, INPUT);
pinMode(swPin, INPUT);
digitalWrite(swPin, HIGH);
Serial.begin(9600);
}
void loop() {
/* for(int i=0;i<=9;i++)
{for(int j=2;j<9;j++)
digitalWrite(j,n);
digitalWrite(9,LOW);
delay(2000); }//测试*/
int change = getEncoderTurn();
num = num + change;
//Serial.println(encoderVal); //串口显示
num = abs(num % 10);//只取个位信息
for(int j=2;j<9;j++)
digitalWrite(j,n); digitalWrite(9,LOW);
if (!digitalRead(swPin) && num != 0) //读取到按钮按下并且计数值不为0时把计数器清零
{ toon(); Serial.println("start");}
/*switch (num)
{ case 0: Serial.println("0"); break;
case 1: Serial.println("1"); break;
case 2: Serial.println("2"); break;
case 3: Serial.println("3"); break;
case 4: Serial.println("4"); break;
case 5: Serial.println("5"); break;
case 6: Serial.println("6"); break;
case 7: Serial.println("7"); break;
case 8: Serial.println("8"); break;
case 9: Serial.println("9"); break;}
delay(1);*/
}
int ton() ////提示音
{tone(10,C7);delay(100);noTone(10); }
int toon() ////提示音
{tone(10,C7);delay(100);tone(10,C1);delay(100);tone(10,C3);delay(100);noTone(10); }
int getEncoderTurn(void) ////数字编码器部分
{ static int oldA = HIGH;
static int oldB = HIGH;
int result = 0;
int newA = digitalRead(clkPin);//读取旋转编码器的值
int newB = digitalRead(dtPin);//读取旋转编码器的值
if (newA != oldA || newB != oldB) //如果发生改变
{if (oldA == HIGH && newA == LOW)
{result = (oldB * 2 - 1);ton(); } }
oldA = newA; oldB = newB;
return result;
}
PCB下载:
页:
[1]