步驟1:收集零件
我很幸運(yùn)有一天上班,發(fā)現(xiàn)了一個托盤。這個托盤伸出來,因?yàn)樗雌饋聿幌衲愕臉?biāo)準(zhǔn),磨機(jī)托盤。它是干凈的,經(jīng)過熱處理的,并且是最不尋常的堅固橡木。
這個項目是由托盤中的一個制成的。 (在我把它帶回家之前我問了老板)
也用過:
12像素ws2812b LED戒指
實(shí)時時鐘(RTC)模塊(使用帶有I2C的DS3231)
兼容Arduino Nano v3.0
亞克力板(5mm)
彩色電線
工具:
電鉆
路由器
可調(diào)節(jié)扁平木頭
電動打磨機(jī)
手鋸
烙鐵
熱膠槍
砂紙
丹麥油
打磨
我開始使用電動打磨機(jī)來拉直和清潔塊木材直到所有的邊緣干凈,光滑。我留下了一些可見的瑕疵,并且它不是完全筆直或正方形,因?yàn)槲蚁M軌蚩吹侥静闹械囊恍v史。
標(biāo)記和切割孔
布線和電纜孔
使用12mm位的路由器,我在塊的底部劃出一個凹槽來隱藏RTC和Arduino 。它的深度約為15毫米,距離任何邊緣都不小于5毫米。我從底部標(biāo)記了中心(ish),并使用10mm鉆頭向上鉆了一半,以便允許LED線。然后使用從LED凹槽中心鉆出的5mm鉆頭,以便從底部鉆出10mm的孔。
后面還有一個4mm的孔,用于接通電源并使用較小的路由器鉆頭為LED環(huán)背面的電線制作一個通道,完成木工。
第2步:丙烯酸圈
為了制作時鐘前面的丙烯酸,我說切割正方形比它必須填充的洞要大的那塊。然后使用電動打磨機(jī)開始我開始移除角落,直到它的形狀和大小正確。然后我移動到手上打磨,所以我沒有過度射擊,不得不重新開始。
這是一個緩慢而乏味的試驗(yàn)和錯誤過程,直到它恰到好處但我認(rèn)為最終結(jié)果是值得的它。我完成了使用非常精細(xì)的砂紙給丙烯酸的前面一個磨砂的外觀。
第3步:焊接
我喜歡在這個場合使用顏色系統(tǒng)來選擇:
紅色為力量(5v)
白色為地
黃色為數(shù)據(jù)
綠色為時鐘
我首先使用上面的系統(tǒng)將3根必要的導(dǎo)線焊接到LED環(huán)上,然后將導(dǎo)線向下推入孔中。由于它不應(yīng)該暴露于任何真正的強(qiáng)迫,我使用一點(diǎn)點(diǎn)熱膠將環(huán)固定到位。 (我可能需要在某個時候更換它)并在邊緣附近只用一點(diǎn)熱膠安裝丙烯酸樹脂。
然后我使用上面的系統(tǒng)將4根電線焊接到RTC上。為了讓事情變得更整潔,我決定從Arduino為RTC提供動力。然后將所有東西連接到Arduino并焊接1根電線用于電源,另一根用于焊接到Arduino。
RTC
SCL(時鐘)到模擬引腳5
SDA(數(shù)據(jù))至模擬引腳4
VCC至5V
GND至Arduino上的任何GND
LED戒指
Din to Digital Pin 6
我有一根舊的USB線掛在身邊決定用它來為時鐘供電。我切斷了通常連接到somthing的末端并將其推過后面的洞。然后在將VCC焊接到Arduino并將LED環(huán)焊接到正極側(cè)并將地線從Arduino和LED焊接到地之前剝?nèi)ゲ內(nèi)ザ瞬?。我以后幾乎沒有熱縮,它看起來很好,
熱膠槍回來后一直保持下來。我決定離開Arduino足夠的游戲,以便我將來可以訪問USB端口進(jìn)行編程,但不會太多,以至于我可能會失敗。
第4步:代碼
您現(xiàn)在應(yīng)該可以將此代碼上傳到Arduino。
如果RTC沒有運(yùn)行,這段代碼將根據(jù)編譯代碼的時間設(shè)置時間,所以一定要點(diǎn)擊上傳按鈕而不是驗(yàn)證。
這也是非常適合設(shè)置時間。
https://www.instructables.com/id/Setting-the-DS130 。..
我從這里借來的大部分代碼Adafruit NeoPixel庫和一些來自我發(fā)現(xiàn)的RTC庫和一些我自己制作的。
// include the library code:
#include
#include
#include
// define pins
#define PIN 6
#define BRIGHTNESS 20 // set max brightness
#define r 5
#define g 5
#define b 5
RTC_DS3231 rtc; // Establish clock object
Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, PIN, NEO_GRB + NEO_KHZ800); // strip object
void setup () {
Wire.begin(); // Begin I2C
rtc.begin(); // begin clock
Serial.begin(9600);
// set pinmodes
pinMode(PIN, OUTPUT);
if (rtc.lostPower()) {
Serial.println(“RTC lost power, lets set the time!”);
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
strip.begin();
strip.show(); // Initialize all pixels to ‘off’
DateTime theTime = rtc.now(); // takes into account DST
byte secondval = theTime.second(); // get seconds
byte minuteval = theTime.minute(); // get minutes
int hourval = theTime.hour();
dot(strip.Color(0,g,0), 50);
}
void loop () {
// get time
DateTime theTime = rtc.now(); // takes into account DST
int minuteval = theTime.minute(); // get minutes
int hourval = theTime.hour(); // get hours
int secondval = theTime.second();
if (minuteval 《= 4 && minuteval 》 0) {
strip.setPixelColor(0, r,0,0);
strip.show();}
else if (minuteval 《= 9) {
strip.setPixelColor(1, r,0,0);
strip.show();}
else if (minuteval 《= 14) {
strip.setPixelColor(2, r,0,0);
strip.show();}
else if (minuteval 《= 19) {
strip.setPixelColor(3, r,0,0);
strip.show();}
else if (minuteval 《= 24) {
strip.setPixelColor(4, r,0,0);
strip.show();}
else if (minuteval 《= 29) {
strip.setPixelColor(5, r,0,0);
strip.show();}
else if (minuteval 《= 34) {
strip.setPixelColor(6, r,0,0);
strip.show();}
else if (minuteval 《= 39) {
strip.setPixelColor(7, r,0,0);
strip.show();}
else if (minuteval 《= 44) {
strip.setPixelColor(8, r,0,0);
strip.show();}
else if (minuteval 《= 49) {
strip.setPixelColor(9, r,0,0);
strip.show();}
else if (minuteval 《= 54) {
strip.setPixelColor(10, r,0,0);
strip.show();}
else if (minuteval 《=59) {
strip.setPixelColor(11, r,0,0);
strip.show();}
delay(1000);
for (int i=0; i《12; i++){
strip.setPixelColor(i, 0,0,0);
strip.show();
}
if (hourval == 0) {
strip.setPixelColor(0, 0,0,b);
strip.show();}
else if (hourval == 1) {
strip.setPixelColor(1, 0,0,b);
strip.show();}
else if (hourval == 2) {
strip.setPixelColor(2, 0,0,b);
strip.show();}
else if (hourval == 3) {
strip.setPixelColor(3, 0,0,b);
strip.show();}
else if (hourval == 4) {
strip.setPixelColor(4, 0,0,b);
strip.show();}
else if (hourval == 5) {
strip.setPixelColor(5, 0,0,b);
strip.show();}
else if (hourval == 6) {
strip.setPixelColor(6, 0,0,b);
strip.show();}
else if (hourval == 7) {
strip.setPixelColor(7, 0,0,b);
strip.show();}
else if (hourval == 8) {
strip.setPixelColor(8, 0,0,b);
strip.show();}
else if (hourval == 9) {
strip.setPixelColor(9, 0,0,b);
strip.show();}
else if (hourval == 10) {
strip.setPixelColor(10, 0,0,b);
strip.show();}
else if (hourval == 11) {
strip.setPixelColor(11, 0,0,b);
strip.show();}
else if (hourval == 12) {
strip.setPixelColor(0, 0,0,b);
strip.show();}
else if (hourval == 13) {
strip.setPixelColor(1, 0,0,b);
strip.show();}
else if (hourval == 14) {
strip.setPixelColor(2, 0,0,b);
strip.show();}
else if (hourval == 15) {
strip.setPixelColor(3, 0,0,b);
strip.show();}
else if (hourval == 16) {
strip.setPixelColor(4, 0,0,b);
strip.show();}
else if (hourval == 17) {
strip.setPixelColor(5, 0,0,b);
strip.show();}
else if (hourval == 18) {
strip.setPixelColor(6, 0,0,b);
strip.show();}
else if (hourval == 19) {
strip.setPixelColor(7, 0,0,b);
strip.show();}
else if (hourval == 20) {
strip.setPixelColor(8, 0,0,b);
strip.show();}
else if (hourval == 21) {
strip.setPixelColor(9, 0,0,b);
strip.show();}
else if (hourval == 22) {
strip.setPixelColor(10, 0,0,b);
strip.show();}
else if (hourval == 23) {
strip.setPixelColor(11, 0,0,b);
strip.show();}
delay(1000);
for (int i=0; i《12; i++){
strip.setPixelColor(i, 0,0,0);
strip.show();
}
// for serial debugging
Serial.print(hourval, DEC);
Serial.print(‘:’);
Serial.print(minuteval, DEC);
Serial.print(‘:’);
Serial.println(secondval, DEC);
}
void dot(uint32_t c, uint8_t wait) {
for (int j=0; j《3; j++) {
for(int i=0; i《12; i++){
strip.setPixelColor(i, c);
strip.show();
delay(wait);
for(int i=0; i《12; i++){
strip.setPixelColor(i, 0, 0, 0);
strip.show();}
}
}
}
第5步:丹麥油
最后和可選步驟是在木材上涂抹一些丹麥油。我真的很喜歡它帶來的顆粒加上它提供了一些防止污漬和水分的保護(hù)。所以我強(qiáng)烈推薦它。
你可以刷它或者我只是用舊布擦拭它。
現(xiàn)在剩下的就是把它插上來欣賞。
-
led
+關(guān)注
關(guān)注
242文章
23840瀏覽量
673960 -
時鐘
+關(guān)注
關(guān)注
11文章
1901瀏覽量
133204
發(fā)布評論請先 登錄
時空刻度:LED電子時鐘系統(tǒng)如何重塑現(xiàn)代節(jié)奏

半導(dǎo)體設(shè)備防震基座制造的環(huán)氧(EPOXY)制作工藝參數(shù)

開源項目!手把手教你制作一個互動式LED墻壁時鐘!
CDC2510C鎖相環(huán)時鐘驅(qū)動器數(shù)據(jù)表

LMK04816具有雙環(huán)PLL的三輸入低噪聲時鐘抖動消除器數(shù)據(jù)表

LMK04208具有雙環(huán)PLL的低噪聲時鐘抖動消除器數(shù)據(jù)表

CDCV857A 2.5V鎖相環(huán)時鐘驅(qū)動器數(shù)據(jù)表

CDCVF2509 3.3V鎖相環(huán)時鐘驅(qū)動器數(shù)據(jù)表

CDCVF2510A鎖相環(huán)(PLL)時鐘驅(qū)動器數(shù)據(jù)表

CDCVF2505時鐘鎖相環(huán)時鐘驅(qū)動器數(shù)據(jù)表

CDCVF2505-Q1時鐘鎖相環(huán)時鐘驅(qū)動器數(shù)據(jù)表

CDCU2A877鎖相環(huán)時鐘驅(qū)動器數(shù)據(jù)表

CDCU877,CDCU877A鎖相環(huán)時鐘驅(qū)動器數(shù)據(jù)表

磁環(huán)電感線圈的纏繞方法
CDCVF25081 3.3V鎖相環(huán)時鐘驅(qū)動器數(shù)據(jù)表

評論