7段RGB三色LED数码管数字屏-首创开源@青年创造工坊-Arduino中文社区 - Powered by Discuz! Archiver

青年创造工坊 发表于 2019-8-14 00:01

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;
}

青年创造工坊 发表于 2019-8-15 00:15

PCB下载:
页: [1]
查看完整版本: 7段RGB三色LED数码管数字屏-首创开源@青年创造工坊