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

QQ登錄

只需一步,快速開始

帖子
查看: 6766|回復(fù): 0
收起左側(cè)

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

[復(fù)制鏈接]
ID:487444 發(fā)表于 2019-4-16 22:58 | 顯示全部樓層 |閱讀模式
心靈燭光晚宴
基本思路
通過讓彩色燈光從玻璃缸底部反射出來,必須確保水不會(huì)輕易進(jìn)入電路引發(fā)短路,這就需要拿一些東西將玻璃缸抬高一點(diǎn)。我找了一個(gè)12x12cm的木制底座和一些塑料模具。
1.jpg
先將蠟燭切成四塊,蠟燭將安置在塑料模具上,彩燈將放置在模具下方朝上。所有器件都放入底座中,最后用填料覆蓋以隱藏電路。
2.jpg
電路設(shè)計(jì)
    該電路由Arduino,鋰電池和充電器以及三顆彩燈組成。當(dāng)然還有開關(guān)和四顆用于狀態(tài)指示燈�?偟膩碚f,這是一個(gè)非常簡單的設(shè)計(jì),并且不需要很長時(shí)間就能運(yùn)行。
準(zhǔn)備指示燈
該電路有四顆狀態(tài)指示燈。藍(lán)色LED指示已啟動(dòng)并正在運(yùn)行。紅色LED指示電源正常。黃色LED指示電池正在充電,綠色LED指示電池已充滿電。
紅色、綠色和黃色LED將連接一個(gè)220Ω電阻,藍(lán)色LED將使用330 Ω。最好是是所有LED都具有大致相同的亮度。
切割長度約為20cm的導(dǎo)線。我喜歡使用與LED顏色相匹配的顏色,以便更容易布線。可能是強(qiáng)迫癥。
用黑線焊接到每個(gè)LED的陰極上。接下來,將綠色線焊接到綠色LED上的陽極,紅色線連接到紅色LED上的陽極,黃色線連接到黃色LED上的陽極�,F(xiàn)在在每根導(dǎo)線上套上一根長度約為5cm的熱縮管。用打火機(jī)燒一下讓它縮小到最小。
3.jpg
接下來將電阻的一端焊接到每個(gè)LED的陽極上的導(dǎo)線。將另一個(gè)熱縮管滑過電阻并將其縮小到位。管的長度應(yīng)足夠長,以遮住整個(gè)電阻和裸線。
4.jpg
   通過將每個(gè)LED連接到電源來測試每個(gè)LED。
準(zhǔn)備彩燈
   彩燈將使用三根線串聯(lián)接在一起。每個(gè)彩燈的數(shù)據(jù)輸入和數(shù)據(jù)輸出引腳接在一起。
1)切3組3根線。一個(gè)紅色,一個(gè)黑色和一個(gè)黃色,每根20cm長。每種顏色3根。
2)將黑色線焊接到彩燈底部的Gnd焊盤。將紅線焊接到同一側(cè)的5V焊盤。
3)將黃色線焊接到Din 焊盤。
4)現(xiàn)在將第二個(gè)黑線焊接到同一個(gè)彩燈上的另一個(gè)Gnd焊盤上。
5)將第二根紅線焊接到同一彩燈上的另一個(gè)5V 焊盤。
6)將第二根黃色線焊接到同一彩燈上的Dout 焊盤
7)這是第一個(gè)彩燈。該Din線將連接到引腳6。
8)將第一個(gè)彩燈 的Dout 側(cè)的導(dǎo)線焊接到下一個(gè)彩燈 的 Din 焊盤上。請(qǐng)注意,第一個(gè)彩燈的 Dout 連接到下一個(gè)彩燈的Din 。
9)將第一個(gè)彩燈的黑色線和紅色線連接到第二個(gè)彩燈的Gnd和5V焊盤。
10)以相同的方式將第三組導(dǎo)線連接到第二個(gè)彩燈的Dout 側(cè)
11)現(xiàn)在將來自第二個(gè)彩燈的第三組導(dǎo)線的另一端連接到第三個(gè)彩燈的Din 側(cè)。
12)完成后,彩燈上的所有5V焊盤都連接在一起,并且所有Gnd 焊盤都連接在一起。第一個(gè)彩燈的Dout 連接到第二個(gè)彩燈的Din 。第二個(gè)彩燈的 Dout 連接到第三個(gè)彩燈的Din 。
把Gnd和5V連接到Arduino。將第一個(gè)彩燈的黃色線連接到Arduino上的第6個(gè)引腳。來測試是否正常工作。
5.jpg
基座布局
    首先用一把剪刀將肥皂模具分成四塊。我留下了所有的邊緣,只切掉了頂部。邊緣可用于將模具貼到底座上。
6.jpg
   如上圖所示,三個(gè)用于固定蠟燭圓筒,另外個(gè)用于覆蓋電路。我還把電池放在其中一個(gè)蠟燭底座下面。用鉆頭在其中兩個(gè)模具的每一側(cè)鉆兩個(gè)孔,彼此相對(duì)。在第四個(gè)模具,這是用于覆蓋電子器件的最大部件,我用刀切出三個(gè)孔。第一個(gè)在長邊(右邊),LED線和彩燈線將通過。注意在切開此開口時(shí),我也移除了塑料的底部,因此電線可以靠在木頭底部。第二個(gè)孔位于開關(guān)附近的短邊上。這允許開關(guān)線穿過。最后一個(gè)整體與充電器上的USB端口對(duì)齊。
使用熱膠槍,將彩燈連接到模具下方,彩燈對(duì)齊在每個(gè)模具的中心。注意,我將熱膠放在彩燈兩側(cè)的導(dǎo)線上,而不是彩燈本身。
7.jpg
接下來,我將USB充電器對(duì)準(zhǔn),使其盡可能齊平地靠近底座的左側(cè)(使USB端口盡可能靠近側(cè)面)。我在模具頂部標(biāo)記并鉆了四個(gè)小孔,與充電器PCB上的孔對(duì)齊,然后用尼龍六角螺絲將USB充電器連接到塑料模具上。在充電期間連接USB電纜時(shí),這可使充電器保持在適當(dāng)位置。
8.jpg
    下圖可以看到底座被涂成白色。鉆完所有的孔并打磨后,可以刷涂或噴涂白色(或任何你喜歡的顏色)。
9.jpg
    需要在側(cè)面鉆五個(gè)孔。其中四個(gè)用于LED,第五個(gè)用于USB充電電纜。將LED插入塑料模制件中,然后插入鉆孔中。當(dāng)模制件插入他們將要穿過的材料時(shí),由于這些是插入一塊木頭,它們需要一個(gè)稍大的孔。下圖顯示了LED和充電器孔的位置。
0.jpg
     在準(zhǔn)備好各種組件后,對(duì)框架進(jìn)行打磨和涂漆。接下來,我將LED插入塑料模制品中并將它們推入孔中。我不需要將它們粘合,因?yàn)樗鼈兎浅_m合于孔。我將所有模具放置到位,并使用透明膠帶將它們固定到位。我盡可能使用尺子將三個(gè)蠟燭模具集中在一起。使用熱膠將滑動(dòng)開關(guān)粘在內(nèi)部框架頂部附近。一切就緒后,我將玻璃燭臺(tái)放在模具上,然后用玻璃填充物填充盒子。冰球漂浮在水中,一切都準(zhǔn)備好了!
00.jpg

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ù)制代碼



回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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