步骤1:收集零件
我很幸运有一天上班,发现了一个托盘。这个托盘伸出来,因为它看起来不像你的标准,磨机托盘。它是干净的,经过热处理的,并且是最不寻常的坚固橡木。
这个项目是由托盘中的一个制成的。 (在我把它带回家之前我问了老板)
也用过:
12像素ws2812b LED戒指
兼容Arduino Nano v3.0
亚克力板(5mm)
彩色电线
工具:
电钻
路由器
可调节扁平木头
电动打磨机
手锯
烙铁
热胶枪
砂纸
丹麦油
打磨
我开始使用电动打磨机来拉直和清洁块木材直到所有的边缘干净,光滑。我留下了一些可见的瑕疵,并且它不是完全笔直或正方形,因为我希望能够看到木材中的一些历史。
标记和切割孔
布线和电缆孔
使用12mm位的路由器,我在块的底部划出一个凹槽来隐藏RTC和Arduino 。它的深度约为15毫米,距离任何边缘都不小于5毫米。我从底部标记了中心(ish),并使用10mm钻头向上钻了一半,以便允许LED线。然后使用从LED凹槽中心钻出的5mm钻头,以便从底部钻出10mm的孔。
后面还有一个4mm的孔,用于接通电源并使用较小的路由器钻头为LED环背面的电线制作一个通道,完成木工。
第2步:丙烯酸圈
为了制作时钟前面的丙烯酸,我说切割正方形比它必须填充的洞要大的那块。然后使用电动打磨机开始我开始移除角落,直到它的形状和大小正确。然后我移动到手上打磨,所以我没有过度射击,不得不重新开始。
这是一个缓慢而乏味的试验和错误过程,直到它恰到好处但我认为最终结果是值得的它。我完成了使用非常精细的砂纸给丙烯酸的前面一个磨砂的外观。
第3步:焊接
我喜欢在这个场合使用颜色系统来选择:
红色为力量(5v)
白色为地
黄色为数据
绿色为时钟
我首先使用上面的系统将3根必要的导线焊接到LED环上,然后将导线向下推入孔中。由于它不应该暴露于任何真正的强迫,我使用一点点热胶将环固定到位。 (我可能需要在某个时候更换它)并在边缘附近只用一点热胶安装丙烯酸树脂。
然后我使用上面的系统将4根电线焊接到RTC上。为了让事情变得更整洁,我决定从Arduino为RTC提供动力。然后将所有东西连接到Arduino并焊接1根电线用于电源,另一根用于焊接到Arduino。
RTC
SCL(时钟)到模拟引脚5
SDA(数据)至模拟引脚4
VCC至5V
GND至Arduino上的任何GND
LED戒指
Din to Digital Pin 6
我有一根旧的USB线挂在身边决定用它来为时钟供电。我切断了通常连接到somthing的末端并将其推过后面的洞。然后在将VCC焊接到Arduino并将LED环焊接到正极侧并将地线从Arduino和LED焊接到地之前剥去并剥去端部。我以后几乎没有热缩,它看起来很好,
热胶枪回来后一直保持下来。我决定离开Arduino足够的游戏,以便我将来可以访问USB端口进行编程,但不会太多,以至于我可能会失败。
第4步:代码
您现在应该可以将此代码上传到Arduino。
如果RTC没有运行,这段代码将根据编译代码的时间设置时间,所以一定要点击上传按钮而不是验证。
这也是非常适合设置时间。
https://www.instructables.com/id/Setting-the-DS130 。..
我从这里借来的大部分代码Adafruit NeoPixel库和一些来自我发现的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步:丹麦油
最后和可选步骤是在木材上涂抹一些丹麦油。我真的很喜欢它带来的颗粒加上它提供了一些防止污渍和水分的保护。所以我强烈推荐它。
你可以刷它或者我只是用旧布擦拭它。
现在剩下的就是把它插上来欣赏。
-
led
+关注
关注
237文章
22420浏览量
645790 -
时钟
+关注
关注
10文章
1479浏览量
130295
发布评论请先 登录
相关推荐
评论