Willy Geek's Blog

最近做的一些硬件diy项目-01-流彩灯展示板

2020/06/08
loading

d7c9b151d24d5f6b20b7590603ec65

最初的想法是做一个无线充电板,上面是实木,下面是环氧树脂,无线充电的线圈嵌在实木板底下,然后底下粘贴rgb灯条作指示。但由于手工不到家,给实木板挖孔的时候,挖穿了两块板:joy:,加之无线充发热量大,于是就放弃对无线充的改造

使用到的材料:

  • 1.环氧树脂A/B胶
  • 2.黑胡桃木薄片
  • 3.Type-C 母头接口
  • 4.Attiny85单片机
  • 5.WS2812B全彩灯条(一米144颗灯珠)
  • 6.Arduino开发板(给Attiny85烧录用)
  • 7.杜邦线若干

软件部分:

  • Arduino IDE

把大象装进冰箱,只要三步。而我们的改造步骤也是只要三步:

  1. 天才第一步,先让灯亮起来。具体连线过程呢,可参考这个教程。软件方面,选用的是NeoPixel这个库,方便驱动RGB灯珠。在NeoPixel的example里面,附送了很多例子,随便抄一个跑马灯过来就👌

  2. 天才第二步,把代码塞进小芯片里面。把Arduino塞进我们的成品是不太可能的了,那有没有办法把它变小呢?办法当然是有的,就是把代码烧录到Attiny85里,具体烧录过程呢,可参考这个教程。其中,记得要改变一下Attiny85的时钟频率,要改成8Mhz的,然后再引导一下,不然不兼容NeoPixel这个库

    IMG_0578

  3. 天才第三步,封装起来。手工粗糙,在下就不表辣~

收获

  1. 最初的想法是做无线充的,在对无线充改造的过程中,遇到很多坑。举个栗子,想要获取无线充的充电状态,必须从无线充板子上获取充电状态的“信号”。
  2. 而在单片机开发中,无非分为两种信号,模拟信号和数字信号。
  3. 模拟信号简单理解为连续的信号,例如人耳听到的声音,有高有低而且连续。而数字信号呢,简单理解为以一定数值为单位的不连续信号,计算机接收声音信号,是根据一定的时间间隔,把接收的声音信号,分成一段一段的信号,每一段都截取对应时间的声音强度,拼接起来就成了连续的声音。这个过程也叫采样,多久时间分一段,这个叫采样频率,频率越高,存储这些信息的空间也就越大
  4. 一开始把无线充LED状态灯的输出,作为模拟信号的输入,一直在那分析,什么正弦波,余弦波,pwm信号灯。由于LED状态灯使用了pwm脉冲信号做呼吸灯效果,研究了大半天,都无法确定无线充的状态到底是充电,还是在闲置状态。钻牛角不可怕,可怕的是钻一直下去。
  5. 意识到钻牛角尖了,立马改变方向。我们不是还有个数字信号吗?立马把LED状态灯的输出作为数字信号输入,害,结果一下就出来了。。。
  6. 单片机的闪存有上限,同一时间只能控制一定数量的RGB灯珠,再多就没有足够内存空间进行存储。不像平常电脑上的软件开发,有足量的内存空间,所以还要时刻注意内存使用,变量的分配
  7. 相较于使用51、stm32单片机,个人觉得arduino对新手更加友好一些。墙裂推荐佑來老师推出的Arduino教学,对新手超级友好。结合了很多实例,跟着实作的话肯定能学习到很多
CATALOG
  1. 1. 使用到的材料:
  2. 2. 软件部分:
  3. 3. 把大象装进冰箱,只要三步。而我们的改造步骤也是只要三步:
  4. 4. 收获