6回答

1收藏

【翻译】Gixie时钟

#线上活动 #线上活动 5749 人阅读 | 6 人回复 | 2018-11-23

辉光管时钟
项目背景:

Gixie时钟是一种现代设备,它再现了辉光管显示器的复古美。我们是一群对辉光管充满热情的人,它的辉光真的很迷人。GIXIEClock但作为一个古董,辉光管已经停产,而且库存非常昂贵,所以我们决定打破这个模式,创造一个辉光管!为了降低成本,延长使用寿命,我们决定采用WS 2812全彩色LED,内置控制芯片,给布线带来极大的方便。直接动手,画电路布线.

电路板由于灯太大太密,所以电路板上有很多问题。这是最终版本。

让我们看看实际效果。

我们得加个玻璃盒子。

好的,来个测试管。

LED辉光管,我们还需要定制的钣金外壳。

金属片壳这种涂料很糟糕。要做到最好。板材是氧化的,是由高级胡桃木制成.


GIXEXClock!立刻提高了品味。可以说它很漂亮!我认为不仅仅是我,肯定有更多的人喜欢辉光管,但它的价格和寿命令人头疼,所以我们必须告诉每一个粉丝爱好者:我们以最低的价格制作了它,并将它发布给了Indiegogo。我希望我最喜欢的朋友会来支持它。这是链接。现在以69美元的价格购买。https:/www.indiegogo.com/project/gixie-时钟-最漂亮-辉光管时钟/x/19759163#/这里有更多的生产工艺。https://hackaday.io/project/162313



原理图:


代码:

  1. #include <avr/io.h>
  2. #include <EEPROM.h>
  3. #include "clock.h"
  4. #include "key.h"
  5. #include "light.h"

  6. #define  OFF     0
  7. #define  TIME    1
  8. #define  SET     2
  9. #define  EFFECT1 3
  10. #define  EFFECT2 4
  11. #define  EFFECT3 5
  12. #define  EFFECT4 6

  13. extern unsigned char timer_10ms_flag;
  14. unsigned char key;
  15. unsigned char _t[6]={1,1,3,7,3,0};
  16. unsigned char color_number;
  17. unsigned char mode = TIME; //工作模式

  18. #define SETED 0xAA  /*出厂第一次设置标志*/



  19. void setup() {
  20.   unsigned char color_number_reset = EEPROM.read(0x01); // 如果0x01内值为SETED则已经完成初始化
  21.   if(color_number_reset != SETED)   // 否则出厂设置
  22.   {
  23.     EEPROM.write(0x00,230); // 辉光管颜色值
  24.     EEPROM.write(0x01,SETED); // 标记已经完成初始化
  25.   }
  26.   color_number = EEPROM.read(0x00);

  27.   delay(100);
  28.   key_init();
  29.   light_init();
  30.   clock_init();

  31.   make_color(&rgb[0],color_number);
  32.   for(unsigned char i=1;i<6;i++){
  33.     rgb[i] = rgb[0];
  34.   }
  35.   poeron_effect();//开机动画
  36. }

  37. void loop() {
  38.     static unsigned long timesOfLoop = 0;
  39.     static unsigned char effect2Num = 0;

  40.     if(millis()-timesOfLoop>100)
  41.     {
  42.       switch(mode)
  43.       {
  44.         case TIME:
  45.           clock_read(_t);
  46.           light_wirte(_t,rgb);
  47.           break;
  48.         case OFF:
  49.         break;
  50.         case SET:
  51.           break;
  52.         case EFFECT1://渐变彩虹
  53.           clock_read(_t);
  54.           wheel(rgb);wheel(rgb);wheel(rgb);
  55.           light_wirte(_t,rgb);
  56.           break;
  57.         case EFFECT2://慢刷
  58.           wheel(rgb);
  59.           for(unsigned char i=1;i<6;i++)rgb[i] = rgb[0];
  60.           effect2Num++;effect2Num %= 20;
  61.           for(unsigned char i=0;i<6;i++)_t[i]=effect2Num>>1;
  62.           light_wirte(_t,rgb);
  63.           break;
  64.         case EFFECT3://快刷
  65.           effect2Num++;effect2Num %= 10;
  66.           for(unsigned char i=0;i<6;i++)_t[i]=effect2Num;
  67.           light_wirte(_t,rgb);
  68.           delay(49);
  69.           effect2Num++;effect2Num %= 10;
  70.           for(unsigned char i=0;i<6;i++)_t[i]=effect2Num;
  71.           light_wirte(_t,rgb);
  72.           break;
  73.         case EFFECT4://相对刷
  74.           effect4();
  75.           break;
  76.       }
  77.       timesOfLoop = millis();
  78.     }

  79.         if(timer_10ms_flag&key_flag == 1)
  80.     {
  81.       timer_10ms_flag &= clear_key_flag;
  82.           //读第一个按键
  83.       key = key_read(0);

  84.       switch(key)
  85.       {
  86.         case key_click:
  87.           color_dec();
  88.         break;
  89.         case key_double:
  90.          color_dec();color_dec();
  91.         break;
  92.         case key_long:
  93.           color_dec();
  94.         break;
  95.         default:
  96.         break;
  97.       }

  98.           //读第二个按键
  99.           key = key_read(1);

  100.       switch(key)
  101.       {
  102.         case key_click:
  103.           color_inc();
  104.         break;
  105.         case key_double:
  106.           color_inc();color_inc();
  107.         break;
  108.         case key_long:
  109.           color_inc();
  110.         break;
  111.         default:
  112.         break;
  113.       }

  114.           //读第三个按键
  115.           key = key_read(2);

  116.       switch(key)
  117.       {
  118.         case key_click:
  119.           power();
  120.         break;
  121.         case key_double:
  122.           modde_effect();
  123.         break;
  124.         case key_long:
  125.           time_set();
  126.         break;
  127.         default:
  128.         break;
  129.       }
  130.     }
  131. }

  132. void color_dec()
  133. {
  134.    make_color(&rgb[0],--color_number);
  135.    for(unsigned char i=1;i<6;i++){
  136.      rgb[i] = rgb[0];
  137.    }
  138.    //light_wirte(_t,rgb);
  139.    EEPROM.write(0x00,color_number); // 更新辉光管颜色值
  140. }

  141. void color_inc()
  142. {
  143.   make_color(&rgb[0],++color_number);
  144.    for(unsigned char i=1;i<6;i++){
  145.      rgb[i] = rgb[0];
  146.    }
  147.    //light_wirte(_t,rgb);
  148.    EEPROM.write(0x00,color_number); // 更新辉光管颜色值
  149. }

  150. void power()
  151. {
  152.   static unsigned char n = 0;
  153.   if((n & 0x01) == 0)
  154.   {
  155.     mode = OFF;
  156.     for(unsigned char i=0;i<6;i++)
  157.        rgb[i] = {0,0,0};
  158.      light_wirte(_t,rgb);
  159.   }
  160.   else
  161.   {
  162.     mode =TIME;
  163.     make_color(&rgb[0],color_number);
  164.     for(unsigned char i=1;i<6;i++){
  165.        rgb[i] = rgb[0];
  166.     }
  167.     clock_read(_t);
  168.     light_wirte(_t,rgb);
  169.   }
  170.   n++;
  171. }

  172. void modde_effect()
  173. {
  174.   static unsigned char n = 0;
  175.   n++;
  176.   switch(n % 5)
  177.   {
  178.     case 0:
  179.     make_color(&rgb[0],color_number);
  180.     for(unsigned char i=1;i<6;i++){
  181.        rgb[i] = rgb[0];
  182.     }
  183.     mode = TIME;
  184.     break;
  185.     case 1:
  186.     mode = EFFECT1;
  187.     break;
  188.     case 2:
  189.     mode = EFFECT2;
  190.     break;
  191.     case 3:
  192.     make_color(&rgb[0],color_number);
  193.     for(unsigned char i=1;i<6;i++){
  194.        rgb[i] = rgb[0];
  195.     }
  196.     mode = EFFECT3;
  197.     break;
  198.     case 4:
  199.     mode = EFFECT4;
  200.     break;
  201.   }
  202. }

  203. void time_set()
  204. {
  205.   EEPROM.write(0x00,230); // 辉光管颜色值
  206.   color_number = 230;
  207.   make_color(&rgb[0],color_number);
  208.     for(unsigned char i=1;i<6;i++){
  209.        rgb[i] = rgb[0];
  210.     }
  211.     //power();
  212. }
复制代码


附件:工程代码
游客,如果您要查看本帖隐藏内容请回复


关注下面的标签,发现更多相似文章

评分

参与人数 1 +350 收起 理由
satoll + 350 300+50自选翻译完成奖励

查看全部评分

分享到:
回复

使用道具 举报

回答|共 6 个

倒序浏览

沙发

呃(⊙o⊙)…

发表于 2018-11-23 02:15:01 | 只看该作者

原文链接https://www.hackster.io/xingda/gixie-clock-7c129b
板凳

satoll

发表于 2018-11-23 08:45:43 | 只看该作者

大兄弟,这篇缺视频,最后的代码也缺了不少。。
地板

呃(⊙o⊙)…

发表于 2018-11-23 09:36:55 | 只看该作者

这个代码跟视频的格式有点问题,晚上再改
5#

satoll

发表于 2018-11-23 09:45:13 | 只看该作者

呃(⊙o⊙)… 发表于 2018-11-23 09:36
这个代码跟视频的格式有点问题,晚上再改

代码可以下载后打包上传,视频在google搜索“YouTube下载”就行
6#

呃(⊙o⊙)…

发表于 2018-11-23 23:55:29 | 只看该作者

已修改完成
7#

sweetz--韬

发表于 2019-11-30 10:33:51 | 只看该作者

工艺品欸,艺术与科技的结合
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条