找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 6743|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

Arduino創(chuàng)意設(shè)計(jì):你以為吃飯就只是吃飯么?心靈燭光晚宴

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
心靈燭光晚宴
基本思路
通過(guò)讓彩色燈光從玻璃缸底部反射出來(lái),必須確保水不會(huì)輕易進(jìn)入電路引發(fā)短路,這就需要拿一些東西將玻璃缸抬高一點(diǎn)。我找了一個(gè)12x12cm的木制底座和一些塑料模具。

先將蠟燭切成四塊,蠟燭將安置在塑料模具上,彩燈將放置在模具下方朝上。所有器件都放入底座中,最后用填料覆蓋以隱藏電路。

電路設(shè)計(jì)
    該電路由Arduino,鋰電池和充電器以及三顆彩燈組成。當(dāng)然還有開(kāi)關(guān)和四顆用于狀態(tài)指示燈�?偟膩�(lái)說(shuō),這是一個(gè)非常簡(jiǎn)單的設(shè)計(jì),并且不需要很長(zhǎng)時(shí)間就能運(yùn)行。
準(zhǔn)備指示燈
該電路有四顆狀態(tài)指示燈。藍(lán)色LED指示已啟動(dòng)并正在運(yùn)行。紅色LED指示電源正常。黃色LED指示電池正在充電,綠色LED指示電池已充滿(mǎn)電。
紅色、綠色和黃色LED將連接一個(gè)220Ω電阻,藍(lán)色LED將使用330 Ω。最好是是所有LED都具有大致相同的亮度。
切割長(zhǎng)度約為20cm的導(dǎo)線(xiàn)。我喜歡使用與LED顏色相匹配的顏色,以便更容易布線(xiàn)�?赡苁菑�(qiáng)迫癥。
用黑線(xiàn)焊接到每個(gè)LED的陰極上。接下來(lái),將綠色線(xiàn)焊接到綠色LED上的陽(yáng)極,紅色線(xiàn)連接到紅色LED上的陽(yáng)極,黃色線(xiàn)連接到黃色LED上的陽(yáng)極�,F(xiàn)在在每根導(dǎo)線(xiàn)上套上一根長(zhǎng)度約為5cm的熱縮管。用打火機(jī)燒一下讓它縮小到最小。

接下來(lái)將電阻的一端焊接到每個(gè)LED的陽(yáng)極上的導(dǎo)線(xiàn)。將另一個(gè)熱縮管滑過(guò)電阻并將其縮小到位。管的長(zhǎng)度應(yīng)足夠長(zhǎng),以遮住整個(gè)電阻和裸線(xiàn)。

   通過(guò)將每個(gè)LED連接到電源來(lái)測(cè)試每個(gè)LED。
準(zhǔn)備彩燈
   彩燈將使用三根線(xiàn)串聯(lián)接在一起。每個(gè)彩燈的數(shù)據(jù)輸入和數(shù)據(jù)輸出引腳接在一起。
1)切3組3根線(xiàn)。一個(gè)紅色,一個(gè)黑色和一個(gè)黃色,每根20cm長(zhǎng)。每種顏色3根。
2)將黑色線(xiàn)焊接到彩燈底部的Gnd焊盤(pán)。將紅線(xiàn)焊接到同一側(cè)的5V焊盤(pán)。
3)將黃色線(xiàn)焊接到Din 焊盤(pán)。
4)現(xiàn)在將第二個(gè)黑線(xiàn)焊接到同一個(gè)彩燈上的另一個(gè)Gnd焊盤(pán)上。
5)將第二根紅線(xiàn)焊接到同一彩燈上的另一個(gè)5V 焊盤(pán)。
6)將第二根黃色線(xiàn)焊接到同一彩燈上的Dout 焊盤(pán)
7)這是第一個(gè)彩燈。該Din線(xiàn)將連接到引腳6。
8)將第一個(gè)彩燈 的Dout 側(cè)的導(dǎo)線(xiàn)焊接到下一個(gè)彩燈 的 Din 焊盤(pán)上。請(qǐng)注意,第一個(gè)彩燈的 Dout 連接到下一個(gè)彩燈的Din 。
9)將第一個(gè)彩燈的黑色線(xiàn)和紅色線(xiàn)連接到第二個(gè)彩燈的Gnd和5V焊盤(pán)。
10)以相同的方式將第三組導(dǎo)線(xiàn)連接到第二個(gè)彩燈的Dout 側(cè)
11)現(xiàn)在將來(lái)自第二個(gè)彩燈的第三組導(dǎo)線(xiàn)的另一端連接到第三個(gè)彩燈的Din 側(cè)。
12)完成后,彩燈上的所有5V焊盤(pán)都連接在一起,并且所有Gnd 焊盤(pán)都連接在一起。第一個(gè)彩燈的Dout 連接到第二個(gè)彩燈的Din 。第二個(gè)彩燈的 Dout 連接到第三個(gè)彩燈的Din 。
把Gnd和5V連接到Arduino。將第一個(gè)彩燈的黃色線(xiàn)連接到Arduino上的第6個(gè)引腳。來(lái)測(cè)試是否正常工作。

基座布局
    首先用一把剪刀將肥皂模具分成四塊。我留下了所有的邊緣,只切掉了頂部。邊緣可用于將模具貼到底座上。

   如上圖所示,三個(gè)用于固定蠟燭圓筒,另外個(gè)用于覆蓋電路。我還把電池放在其中一個(gè)蠟燭底座下面。用鉆頭在其中兩個(gè)模具的每一側(cè)鉆兩個(gè)孔,彼此相對(duì)。在第四個(gè)模具,這是用于覆蓋電子器件的最大部件,我用刀切出三個(gè)孔。第一個(gè)在長(zhǎng)邊(右邊),LED線(xiàn)和彩燈線(xiàn)將通過(guò)。注意在切開(kāi)此開(kāi)口時(shí),我也移除了塑料的底部,因此電線(xiàn)可以靠在木頭底部。第二個(gè)孔位于開(kāi)關(guān)附近的短邊上。這允許開(kāi)關(guān)線(xiàn)穿過(guò)。最后一個(gè)整體與充電器上的USB端口對(duì)齊。
使用熱膠槍?zhuān)瑢⒉薀暨B接到模具下方,彩燈對(duì)齊在每個(gè)模具的中心。注意,我將熱膠放在彩燈兩側(cè)的導(dǎo)線(xiàn)上,而不是彩燈本身。

接下來(lái),我將USB充電器對(duì)準(zhǔn),使其盡可能齊平地靠近底座的左側(cè)(使USB端口盡可能靠近側(cè)面)。我在模具頂部標(biāo)記并鉆了四個(gè)小孔,與充電器PCB上的孔對(duì)齊,然后用尼龍六角螺絲將USB充電器連接到塑料模具上。在充電期間連接USB電纜時(shí),這可使充電器保持在適當(dāng)位置。

    下圖可以看到底座被涂成白色。鉆完所有的孔并打磨后,可以刷涂或噴涂白色(或任何你喜歡的顏色)。

    需要在側(cè)面鉆五個(gè)孔。其中四個(gè)用于LED,第五個(gè)用于USB充電電纜。將LED插入塑料模制件中,然后插入鉆孔中。當(dāng)模制件插入他們將要穿過(guò)的材料時(shí),由于這些是插入一塊木頭,它們需要一個(gè)稍大的孔。下圖顯示了LED和充電器孔的位置。

     在準(zhǔn)備好各種組件后,對(duì)框架進(jìn)行打磨和涂漆。接下來(lái),我將LED插入塑料模制品中并將它們推入孔中。我不需要將它們粘合,因?yàn)樗鼈兎浅_m合于孔。我將所有模具放置到位,并使用透明膠帶將它們固定到位。我盡可能使用尺子將三個(gè)蠟燭模具集中在一起。使用熱膠將滑動(dòng)開(kāi)關(guān)粘在內(nèi)部框架頂部附近。一切就緒后,我將玻璃燭臺(tái)放在模具上,然后用玻璃填充物填充盒子。冰球漂浮在水中,一切都準(zhǔn)備好了!


Arduino源程序如下:
  1. #include <Adafruit_NeoPixel.h>
  2. #include <avr/power.h>

  3. // ***
  4. // *** The first NeoPixel is connected to pin 0
  5. // ***
  6. #define NEO_PIXEL_PIN 0

  7. // ***
  8. // *** The pin on which the power LED is connected
  9. // ***
  10. #define POWER_LED_PIN 3

  11. // ***
  12. // *** Number of NeoPixels
  13. // ***
  14. #define NEO_PIXEL_COUNT 3

  15. // ***
  16. // *** Create the NeoPixel instance
  17. // ***
  18. Adafruit_NeoPixel strip = Adafruit_NeoPixel(NEO_PIXEL_COUNT, NEO_PIXEL_PIN, NEO_GRB + NEO_KHZ800);

  19. void setup()
  20. {
  21.   // ***
  22.   // *** Trinket 16MHz
  23.   // ***
  24.   if (F_CPU == 16000000) clock_prescale_set(clock_div_1);

  25.   // ***
  26.   // *** Setup the power LED
  27.   // ***
  28.   pinMode(POWER_LED_PIN, OUTPUT);

  29.   // ***
  30.   // *** Turn the Power LED on
  31.   // ***
  32.   digitalWrite(POWER_LED_PIN, HIGH);

  33.   // ***
  34.   // *** Setup the strip
  35.   // ***
  36.   strip.begin();
  37.   strip.show();
  38. }

  39. void loop()
  40. {
  41.   rainbowCycle(60);
  42. }

  43. void rainbowCycle(uint8_t wait)
  44. {
  45.   uint16_t i, j;

  46.   for (j = 0; j < 256 * 5; j++)
  47.   {
  48.     // ***
  49.     // *** 5 cycles of all colors on wheel
  50.     // ***
  51.     for (i = 0; i < strip.numPixels(); i++)
  52.     {
  53.       strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
  54.     }

  55.     strip.show();

  56.     delay(wait);
  57.   }
  58. }

  59. uint32_t Wheel(byte WheelPos)
  60. {
  61.   WheelPos = 255 - WheelPos;
  62.   if (WheelPos < 85)
  63.   {
  64.     return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  65.   }
  66.   if (WheelPos < 170)
  67.   {
  68.     WheelPos -= 85;
  69.     return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  70.   }
  71.   WheelPos -= 170;
  72.   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  73. }
復(fù)制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表