乒乓球LED时钟的制作

电子说

1.2w人已加入

描述

第1步:材料/工具:

时钟

时钟

时钟

材料:

在本地购买:

- Mdf板(80 * 30 cm)

- 用于框架的木材(必须宽5厘米,总长度至少200厘米)

- 128乒乓球球(白色的,最好是乳白色)

- 一些(4)小钉子

- 旧USB线(可以为Arduino nano供电)

- 旧电子设备的电源线

在线购买(中国)

- 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,一切皆有可能

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分