第1步:材料/工具:
材料:
在本地購買:
- Mdf板(80 * 30 cm)
- 用于框架的木材(必須寬5厘米,總長度至少200厘米)
- 128乒乓球球(白色的,最好是乳白色)
- 一些(4)小釘子
- 舊電子設備的電源線
在線購買(中國)
- 5V 10A電源(較低的安培數也可能有效)
- Arduino nano(克隆)
- ws2812b LED燈條(5m 30Leds/米IP30)
- DS3231 RTC
- 帶3芯(2米以上)的電線
可選
- 母針連接器
- 電阻器(介于兩者之間) 300和500歐姆)
工具:
- 可以切割30度角的鋸(斜切鋸)
- 帶細齒的手鋸(金屬) -saw)
- 剝線鉗
- 烙鐵
- 12mm鉆頭
- 32mm孔鋸
- 木膠
- 熱膠
- 手電筒
- 砂紙
注意:
選擇正確類型的乒乓球對于這個項目非常重要。乒乓球通常具有兩個加在一起的接縫。這本身不是問題,因為通過在這些半部中間形成一個孔,在顯示器中將看不到接縫。然而,當乒乓球在一側也具有印花時,重要的是球上的印花朝向背面。這可能導致從前面看到一塊接縫。購買乒乓球時,也不要購買閃耀的球(反射光)。它們會不那么好地散射光線而且看起來會很奇怪(你不應該買乒乓球的例子)。
摘要:最好使用無白色打印的無縫乒乓球并做不反射光。
第2步:在乒乓球中打洞。
每個乒乓球都有自己的LED背后。為了獲得盡可能多的光線照射,需要移除乒乓球背面的一塊,因此LED的光線只需穿過球的一側。這些孔需要非常大(大約30mm),因為LED不會在球后面居中。
在乒乓球中制作這些大洞是一個挑戰。由于球本身很弱,因此在制作球之前需要一些支撐。我是通過在一塊MDF上鉆一些32毫米的孔來做到這一點的。在鋸球時,我用一只手在乒乓球上施壓,將它們壓在孔上。由于孔的直徑比球小約8mm,因此球將被壓在孔上。雖然在一側提供壓力,但我在另一側切斷了乒乓球的頂部,只是在直線上對著MDF進行鋸切。
在鋸切它們之前,我確保了徽標印在球上的,是在我要去的那邊。我還用手電筒找到了將兩半加在一起的接縫。我把球轉得更多了,所以從前面看不到徽標,而且從接縫處可以看到很少的東西。
注意:如果不是所有的孔都完全相同也沒關系尺寸,尺寸可以變化幾毫米。在構建完成時,無法從任何方向看到這一點。
步驟3:在行中粘合所有球
在所有大洞中他們需要將乒乓球按行(2行(17,18和19)和1行20)粘在一起。這些行應該盡可能直,并且球之間應該沒有空間。我用我買的木頭來制作框架來做到這一點。通過兩塊木頭支撐球,我確信它們在一條線上。在放置幾個球之后,確保孔朝上并且球彼此接觸,我將它們粘在一起。只需要一點點膠水即可。如果你使用大量膠水,它將從正面看到。我再次使用手電筒來確保乒乓球的正面沒有丑陋的斑點(有些人因為便宜的球而有了這些斑點)。
步驟4:膠合行一起。
要做到這一點,我使用框架的木材來保持2行壓在一起。請記住使用小滴膠水,如果使用量很大,從前面可以看到。在每次在8個連接處放置膠水之后,我用雙手提供壓力以確保球緊緊地粘在一起。
步驟5:制作框架
框架中有6件。 2件長件和4件短款。這些部件的所有邊緣應具有60度角。由于乒乓球的大小不是40毫米,而是(39,5個東西),我計算了框架件的大致長度(這可以通過測量面板的高度或寬度并使用^來完成。 2 + b ^ 2 = c ^ 2)。我計算出2個長件的內部長度應為66.3cm,4個短件的內部長度應為14.3cm。由于我的鋸不太準確,所以我確保將它們剪得更大一些,所以它們不會短路。
在切斷所有6個之后,我將它們放在乒乓球面板周圍,看看如果它很合適它沒有,所以我看到幾毫米的一些碎片。我把所有東西粘在乒乓球面板上,以確保它的形狀完全正確,這是必要的,因為角度沒有在60度完美切割,但更可能是59.5毫米。
步驟6:焊接LED燈條
需要切割LED燈條(一個1個LED,一個3個LED,一個5個LED和17個7個LED)。 LED條帶需要接線,如圖中所示(首先是一個LED,然后是5個LED,接下來是17個帶有7個LED,最后是帶有3個LED的部分)。連接較短條帶的金屬絲應該比其他零件長,因為它需要覆蓋更大的距離。我在一塊MDF上錄下條帶,看看每個led是否都在自己的球后面。將所有部件焊接在一起之后,我通過逐個激活每個LED(checkIfLedsAreBehindBalls.ino)來測試所有焊接連接是否良好。
步驟7:切割MDF
一幀已完成我將框架和乒乓球面板放在MDF上,MDF上貼著LED。確保每個LED都在自己的球后,我取下了乒乓球面板。接下來,我沿著MDF上的框架內側繪制,以獲得我需要剪切的形狀。我是這樣做的,因為LED不在球的中心,這樣我就能看到LED與框架的相對位置。在取下貼在電路板上的LED后,我剪下了面板的形狀并打磨了邊緣,因此它很好地貼合在框架內。
注意:請注意,LED指示燈不會以乒乓球為中心,見草圖
步驟8:向MDF添加孔和LED
如前所述,連接LED的導線有點像。它現在的方式,從前面可以看到電線。我決定通過在每個垂直LED條的位置末端鉆孔來解決這個問題,因此電線可以放在背面。我將帶狀導線穿過孔并暫時用膠帶粘住。在再次確定之后,每個LED都在自己的乒乓球后面,我取下了磁帶,并用LED條上已有的膠條將LED條連接到電路板上。
注意:在MDF上鉆孔時,要非常小心,你可以輕松打破板。
步驟9:將球粘到框架上
我將乒乓球面板倒置在框架中,然后我涂上膠水乒乓球接觸(或幾乎沒有碰到框架)的每個點。
步驟10:將LED面板安裝到框架
我將LED面板放在球的背面頂部。接下來,我用4個小釘子將面板固定在框架上。我是通過將釘子放在框架內側來做到這一點的。我選擇這樣做,因為它允許我修復一些東西,如果它曾經破壞(它也允許我加倍LED的數量,因為許多流明不存在)
步驟11:電子設備
好的,我(幾乎)沒有經驗Arduino所以這可能不完美。但我嘗試以盡可能簡單的方式做到這一點。
我將連接器焊接到Arduino nano(圖像中的黑色東西)(不是必需的)。
我決定這樣做,所以如果我想要添加按鈕或光依賴電阻(LDR)或其他功能,一切都可以輕松拆開。
接下來,我將RTC連接到Arduino,只需確保時鐘模塊的SDA和SCl連接到Arduino Nano的SDA和SCL。然后連接引腳9和LED燈條數據之間的電阻。
最后,電線連接到LED燈條的末端,以便為LED燈條的末端提供電源,以便防止電壓下降。
是的,它真的很簡單。
為了提供所有功能,我切斷了一根USB線,可以將Arduino nano連接到一半并連接5V兩條電纜的一側連接到LED燈條和切成兩半的USB電纜。我對另一方做了同樣的事情。這樣我就可以在不通過Arduino供電的情況下為LED燈條供電。
舊燈泡的電纜用于連接5V 10A電源和時鐘。
我也是在框架一側底部鉆一個洞,讓電源線穿過。這使得時鐘可以平放在墻上,同時如果愿意的話仍然能夠站在表面上。
唯一要做的就是編寫一些代碼。
步驟12:代碼
上傳代碼時,請確保電源已關閉!
時鐘前模塊知道當前時間,必須在模塊上設置時間。幸運的是,有一些代碼可以做到這一點。在僅添加4行代碼并安裝DS1307RTC模塊后,我們可以運行此命令(SetTime_on_ds3231_nano.ino,鏈接到原始代碼/關于如何在DS3231RTC上設置時間的指令)代碼以將Arduino上的時間設置為PC的時間。
設置時間后,我們可以開始考慮為這個時鐘編寫一些代碼。我在程序中使用了2個庫,FastLED庫和DS3232RTC庫。這兩個庫將為您完成幾乎所有工作,并允許編程經驗很少的人編寫程序。
在這里,您可以看到我在此Instructable頂部的視頻中使用的代碼,在大多數圖片中。 (timeWhiteBackgroundRainbow.ino)
#include
#include
#define LED_PIN 9
#define NUM_LEDS 128
DS3232RTC myRTC(false);
tmElements_t tm;
CRGB leds[NUM_LEDS];
CHSV colour( 0, 255, 180);
int counter=0;
const int Digits[10][10] =
{
{7,8,10,11,14,18,22,24},
{14,16,18,22,24},
{7,8,9,11,14,16,18,24},
{7,9,11,14,16,18,22,24},
{9,10,11,16,18,22,24},
{7,9,10,11,14,16,18,22},
{7,8,9,14,15,16,18,22},
{7,11,14,16,17,24},
{7,8,9,10,11,14,16,18,22,24},
{7,9,10,11,14,16,17,24},
};
void setup()
{
pinMode(17, OUTPUT); //ground and v5 for clock module
pinMode(16, OUTPUT);
digitalWrite(17, HIGH);
digitalWrite(16, LOW);
FastLED.addLeds《WS2812, LED_PIN, GRB》(leds, NUM_LEDS);
myRTC.begin();
}
//function that uses the Digit aray to display numbers between 0 and 100
void displaynumber( int place , int number){
for (int i = 0 ; i 《 10 ; i++) {
if (Digits[number/10][i] != 0) {
leds[(Digits[number/10][i]+place)] = CRGB(255,255,255);;
}
if (Digits[number%10][i] != 0) {
leds[(Digits[number%10][i]+28+place)] = CRGB(255,255,255);;
}
}
}
void loop(){
RTC.read(tm);
//changes the colour of background every 10 cycles
if (counter《10){
counter++;
}else{
colour.hue = (colour.hue+1)%256;
counter=0;
}
// sets background to rainbow colours
for ( int i=0; i《 128;i++){
colour.hue = (colour.hue+1)%256;
leds[i]= colour;
}
colour.hue = (colour.hue+128)%256;
displaynumber(0,tm.Hour);
displaynumber(70,tm.Minute);
//display colons
if ( tm.Second%2 == 0 ){
leds[64] = CRGB(255,255,255);
leds[66] = CRGB(255,255,255);
}
FastLED.show();
}
我認為守則相對較短,但當然可以改進。它只是從RTC讀取時間并顯示該時間。應點亮以形成數字的LED的位置在矩陣“數字”中硬編碼。例如,Digits [0]包含應該點亮以形成零的LED的位置。
我還提供了我制作的其他程序,它們是對上述程序的輕微改動。程序‘CycleThroughDigits.ino’只計算9999,以演示所有數字的外觀。程序‘onlyTime.ino’只顯示更改顏色的時間,沒有背景顏色。最后,‘FastledExampleCode.ino’是由FastLED庫提供的一些代碼,用于演示一些簡單的動畫。
步驟13:添加您想要的每個功能
這個項目不僅僅是一個基本的時鐘,你可以添加按鈕,讓它根據光線改變亮度,讓它只顯示一些顏色,制作它對音樂有反應,用ESP連接到wifi。它基本上是連接到顯示器的Arduino,一切皆有可能
-
led
+關注
關注
242文章
23834瀏覽量
673867 -
時鐘
+關注
關注
11文章
1898瀏覽量
133198
發布評論請先 登錄
光洋股份擬收購銀球科技
BGA封裝焊球推力測試解析:評估焊點可靠性的原理與實操指南


時空刻度:LED電子時鐘系統如何重塑現代節奏

羅徹斯特電子針對BGA封裝的重新植球解決方案

開源項目!手把手教你制作一個互動式LED墻壁時鐘!
深入解析:燈具球壓測試

帶你理解二極管的原理和作用

身臨其境的沉浸式裸眼3D球幕影院開啟360度觀影體驗的視覺盛宴

乒乓球架構中LMX2820的高隔離、快速頻率切換應用說明


AI看奧運 | 從巴黎奧運會看人工智能的應用和發展

BGA連接器植球工藝研究

評論