查看: 1168|回复: 0

你以为吃饭就只是吃饭么?心灵烛光晚宴

[复制链接]
  • TA的每日心情
    开心
    2019-8-19 13:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-4-16 22:58 | 显示全部楼层 |阅读模式
    心灵烛光晚宴
    基本思路
    通过让彩色灯光从玻璃缸底部反射出来,必须确保水不会轻易进入电路引发短路,这就需要拿一些东西将玻璃缸抬高一点。我找了一个12x12cm的木制底座和一些塑料模具。

    先将蜡烛切成四块,蜡烛将安置在塑料模具上,彩灯将放置在模具下方朝上。所有器件都放入底座中,最后用填料覆盖以隐藏电路。

    电路设计
        该电路由Arduino,锂电池和充电器以及三颗彩灯组成。当然还有开关和四颗用于状态指示灯。总的来说,这是一个非常简单的设计,并且不需要很长时间就能运行。
    准备指示灯
    该电路有四颗状态指示灯。蓝色LED指示已启动并正在运行。红色LED指示电源正常。黄色LED指示电池正在充电,绿色LED指示电池已充满电。
    红色、绿色和黄色LED将连接一个220Ω电阻,蓝色LED将使用330 Ω。最好是是所有LED都具有大致相同的亮度。
    切割长度约为20cm的导线。我喜欢使用与LED颜色相匹配的颜色,以便更容易布线。可能是强迫症。
    用黑线焊接到每个LED的阴极上。接下来,将绿色线焊接到绿色LED上的阳极,红色线连接到红色LED上的阳极,黄色线连接到黄色LED上的阳极。现在在每根导线上套上一根长度约为5cm的热缩管。用打火机烧一下让它缩小到最小。

    接下来将电阻的一端焊接到每个LED的阳极上的导线。将另一个热缩管滑过电阻并将其缩小到位。管的长度应足够长,以遮住整个电阻和裸线。

       通过将每个LED连接到电源来测试每个LED。
    准备彩灯
       彩灯将使用三根线串联接在一起。每个彩灯的数据输入和数据输出引脚接在一起。
    1)切3组3根线。一个红色,一个黑色和一个黄色,每根20cm长。每种颜色3根。
    2)将黑色线焊接到彩灯底部的Gnd焊盘。将红线焊接到同一侧的5V焊盘。
    3)将黄色线焊接到Din 焊盘。
    4)现在将第二个黑线焊接到同一个彩灯上的另一个Gnd焊盘上。
    5)将第二根红线焊接到同一彩灯上的另一个5V 焊盘。
    6)将第二根黄色线焊接到同一彩灯上的Dout 焊盘
    7)这是第一个彩灯。该Din线将连接到引脚6。
    8)将第一个彩灯 的Dout 侧的导线焊接到下一个彩灯 的 Din 焊盘上。请注意,第一个彩灯的 Dout 连接到下一个彩灯的Din 。
    9)将第一个彩灯的黑色线和红色线连接到第二个彩灯的Gnd和5V焊盘。
    10)以相同的方式将第三组导线连接到第二个彩灯的Dout 侧
    11)现在将来自第二个彩灯的第三组导线的另一端连接到第三个彩灯的Din 侧。
    12)完成后,彩灯上的所有5V焊盘都连接在一起,并且所有Gnd 焊盘都连接在一起。第一个彩灯的Dout 连接到第二个彩灯的Din 。第二个彩灯的 Dout 连接到第三个彩灯的Din 。
    把Gnd和5V连接到Arduino。将第一个彩灯的黄色线连接到Arduino上的第6个引脚。来测试是否正常工作。

    基座布局
        首先用一把剪刀将肥皂模具分成四块。我留下了所有的边缘,只切掉了顶部。边缘可用于将模具贴到底座上。

       如上图所示,三个用于固定蜡烛圆筒,另外个用于覆盖电路。我还把电池放在其中一个蜡烛底座下面。用钻头在其中两个模具的每一侧钻两个孔,彼此相对。在第四个模具,这是用于覆盖电子器件的最大部件,我用刀切出三个孔。第一个在长边(右边),LED线和彩灯线将通过。注意在切开此开口时,我也移除了塑料的底部,因此电线可以靠在木头底部。第二个孔位于开关附近的短边上。这允许开关线穿过。最后一个整体与充电器上的USB端口对齐。
    使用热胶枪,将彩灯连接到模具下方,彩灯对齐在每个模具的中心。注意,我将热胶放在彩灯两侧的导线上,而不是彩灯本身。

    接下来,我将USB充电器对准,使其尽可能齐平地靠近底座的左侧(使USB端口尽可能靠近侧面)。我在模具顶部标记并钻了四个小孔,与充电器PCB上的孔对齐,然后用尼龙六角螺丝将USB充电器连接到塑料模具上。在充电期间连接USB电缆时,这可使充电器保持在适当位置。

        下图可以看到底座被涂成白色。钻完所有的孔并打磨后,可以刷涂或喷涂白色(或任何你喜欢的颜色)。

        需要在侧面钻五个孔。其中四个用于LED,第五个用于USB充电电缆。将LED插入塑料模制件中,然后插入钻孔中。当模制件插入他们将要穿过的材料时,由于这些是插入一块木头,它们需要一个稍大的孔。下图显示了LED和充电器孔的位置。

         在准备好各种组件后,对框架进行打磨和涂漆。接下来,我将LED插入塑料模制品中并将它们推入孔中。我不需要将它们粘合,因为它们非常适合于孔。我将所有模具放置到位,并使用透明胶带将它们固定到位。我尽可能使用尺子将三个蜡烛模具集中在一起。使用热胶将滑动开关粘在内部框架顶部附近。一切就绪后,我将玻璃烛台放在模具上,然后用玻璃填充物填充盒子。冰球漂浮在水中,一切都准备好了!

    程序
    [mw_shl_code=arduino,true]#include <Adafruit_NeoPixel.h>
    #include <avr/power.h>

    // ***
    // *** The first NeoPixel is connected to pin 0
    // ***
    #define NEO_PIXEL_PIN 0

    // ***
    // *** The pin on which the power LED is connected
    // ***
    #define POWER_LED_PIN 3

    // ***
    // *** Number of NeoPixels
    // ***
    #define NEO_PIXEL_COUNT 3

    // ***
    // *** Create the NeoPixel instance
    // ***
    Adafruit_NeoPixel strip = Adafruit_NeoPixel(NEO_PIXEL_COUNT, NEO_PIXEL_PIN, NEO_GRB + NEO_KHZ800);

    void setup()
    {
      // ***
      // *** Trinket 16MHz
      // ***
      if (F_CPU == 16000000) clock_prescale_set(clock_div_1);

      // ***
      // *** Setup the power LED
      // ***
      pinMode(POWER_LED_PIN, OUTPUT);

      // ***
      // *** Turn the Power LED on
      // ***
      digitalWrite(POWER_LED_PIN, HIGH);

      // ***
      // *** Setup the strip
      // ***
      strip.begin();
      strip.show();
    }

    void loop()
    {
      rainbowCycle(60);
    }

    void rainbowCycle(uint8_t wait)
    {
      uint16_t i, j;

      for (j = 0; j < 256 * 5; j++)
      {
        // ***
        // *** 5 cycles of all colors on wheel
        // ***
        for (i = 0; i < strip.numPixels(); i++)
        {
          strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
        }

        strip.show();

        delay(wait);
      }
    }

    uint32_t Wheel(byte WheelPos)
    {
      WheelPos = 255 - WheelPos;
      if (WheelPos < 85)
      {
        return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
      }
      if (WheelPos < 170)
      {
        WheelPos -= 85;
        return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
      }
      WheelPos -= 170;
      return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
    }
    [/mw_shl_code]
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    2.4寸触屏T12焊台 Arduino开源自制
    2.4寸触屏T12焊台 Arduino
    基本功能已经完善 1.触摸调节温度、2.虚拟键盘、3.调节pid参数、4.烙铁的休眠设置、5.
    【吐槽】给 M5Stack 新产品 Unit-Hall 的几点意见
    【吐槽】给 M5Stack 新产
    今年早些时候测评过 M5Stack 的 Color Unit,对这个产品的精细设计很是满意。 偶然间
    支持 原生USB 的ESP32 :ESP32 S2
    支持 原生USB 的ESP32 :E
    当我们谈论 ESP32 支持USB时,谈论的并不是最常见的ESP32而是乐鑫信息科技(上海)股份
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表