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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3321|回复: 1

[项目] 7段RGB三色LED数码管数字屏-首创开源@青年创造工坊

[复制链接]
发表于 2019-8-14 00:01 | 显示全部楼层 |阅读模式
项目名称:
        7段RGB三色LED数码管数字屏-首创开源@青年创造工坊
                                                demo00.jpg
项目简介:
       以往的7段式数码管数字屏只有单色显示,难以显示不同状态的计数显示,现在用7颗LED方型255组成新的7段式RGB数码管,除了显示数字外,数码管的不同颜色和混色方式也可以直接反应当前的运行状态。

      引脚:10pin,间距:1.27mm,电压:3.3v-5v,阴极:r(红),g(绿),b(蓝)


图示:
         7-rgb1.png     7-rgb.png     7-rgb2.png


PCB信息:
             TIM截图20190813224916.jpg TIM截图20190813231815.jpg     背面                                              TIM截图20190813225202.jpg TIM截图20190813231759.jpg           正面


官方示例:
                  操控定时运动执行 - 副本_WPS图片.jpg
[mw_shl_code=arduino,true]#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[10][7]=
  { {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[j-2]);
      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[num][j-2]); 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;
}[/mw_shl_code]
 楼主| 发表于 2019-8-15 00:15 | 显示全部楼层
PCB下载: 7段Gerber_up-down_20190725163451.zip (44.79 KB, 下载次数: 5)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 02:38 , Processed in 0.085156 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表