所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

旋转六角灯笼

江志灏 江志灏 2021-01-13 21:00:03
0
0
简单

复刻方向 

既然是REMAKE再造,我的想法的复刻中国古代皇宫的六角宫灯。复刻的原因好简单,制作灯笼是我校的传统特色课程、,每年的中秋节,学校会组织学生进行传统手工灯笼的制作的教学课程。经调查发现由于传统手工技术的限制,学生制作灯笼的工艺只能用剪纸,或者用矿泉水瓶或塑料,纸片等来做外壳,发光装置普遍用传统的蜡烛。这种制作过程周期比较长,制作灯笼的结构不够稳定,使用的周期不够长,中秋节过后,这些灯笼就就要扔掉,造成一种浪费。同时蜡烛只能一次性使用,不能够循环使用。为解决这些问题,我对灯笼的制作方法进行了改良。我利用3Donecut三维建模软件进行灯笼的三维建模,利用LaserMaker进行灯笼外观设计的深加工,培养了学生的数学计算思维。然后用激光切割机切割出灯笼的外观,改变了传统灯笼外观的制作方式。灯笼发光部分我将传统的蜡烛,改为全彩的ws2812B幻彩灯带,颜色和亮度可以根据需要进行调节,让灯笼可以发射出绚丽多姿的灯光颜色。为了让灯光的效果更好,灯笼的外观采用雕花镂空设计,灯笼的灯柱利用进步电机进行旋转控制,让灯光同过镂空的外观使灯光变得更加丰富多彩。本课程设计培养学生三维建模的能力,能够理解好物体空间的三维关系,培养学生的想象力和创新能力,学生可以根据自己的爱好和想象设计出不同的外观镂空图案,培养学生三维图转二维图再到三维图形的空间变换能力。通过动手实践,外观的制作和拼接培养学生的的动手能力,工程思维,和艺术的审美能力。灯笼发光装置的电路连接,培养的学生对电路原理的理解。编写程序,控制进步电机的旋转和LED灯带的灯光控制,培养了学生的编程思维能力。在灯笼的制作过程中,学生会遇到各种困难和挫折,例如设计出的图纸的尺寸大小不合适,学生要重新设计,培养学生面对挫折,热爱科学,热爱中国传统文化的爱国情感。

步骤1 步骤1
先利用3Done cut三维建模软件进行六角灯笼的三维建模。
projectImage
步骤2 步骤2
将建模好的三维模型进行投影,转换到二维平面。如图2所示
projectImage
步骤3 步骤3
将二维图形以dxf格式导出。如图3所示
projectImage
步骤4 步骤4
将导出的dxf文件在LaserMaker中打开。如图4所示
projectImage
步骤5 步骤5
在LaserMaker中绘制六角灯笼外观的镂空部分。如图5所示
projectImage
步骤6 步骤6
在LaserMaker中绘制六角灯笼的底座结构部分。如图6所示
projectImage
步骤7 步骤7
完成图纸设计后,将图纸导出,放到激光切割机中进行切割。如图7所示
projectImage
步骤8 步骤8
切割完成后拼装六角灯笼的整体外观,如图8所示
projectImage
步骤9 步骤9
组装好外观后,对进步电机的电路进行连接,如图9所示
projectImage
步骤10 步骤10
做到这一步,为了找到合适的灯柱,因我家在农村,所以我到竹园用游标卡尺来测量灯柱半径,找了一根比较合适的竹子作为灯柱如图10所示
projectImage
步骤11 步骤11
将灯柱和LED灯带连接起来,如图11所示
projectImage
步骤12 步骤12
将灯柱和底座用热熔胶枪固定在一起,如图12所示
projectImage
步骤13 步骤13
用mixly编写进步电机的控制程序,程序如图13所示
projectImage
步骤14 步骤14
14、用arduino IDE编写LDE灯带的控制程序,程序如下:

#include #define LED_PIN 5 //连接WS2812B灯带 D5 #define NUM_LEDS 60 //LED数量(可更改) #define BRIGHTNESS 64 //亮度(可更改最大为100) #define LED_TYPE WS2811 #define COLOR_ORDER GRB CRGB leds[NUM_LEDS]; #define UPDATES_PER_SECOND 100 // 此示例显示了设置和使用颜色“调色板”的几种方法 // 使用FastLED. /* // 这些紧凑的调色板为您重新着色提供了简便的方法 // 动态,快速,轻松且开销低的动画。 // // 实际上,使用调色板比理论上更简单,所以首先 // 运行此项目,并观看漂亮的灯光编码。 // 尽管此草图具有八种(或更多)不同的配色方案, // 整个项目在AVR上可编译为大约6.5K程序。 // // FastLED提供了一些预配置的调色板,并使其成为 // 非常容易用调色板组成自己的配色方案。 // // 有关以下内容的更抽象的“理论和实践”的一些注释 // FastLED紧凑调色板的解释位于此文件的底部。 */ CRGBPalette16 currentPalette; TBlendType currentBlending; extern CRGBPalette16 myRedWhiteBluePalette; extern const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM; void setup() { delay( 3000 ); // 上电安全延迟 FastLED.addLeds(leds, NUM_LEDS).setCorrection( TypicalLEDStrip ); FastLED.setBrightness( BRIGHTNESS ); currentPalette = RainbowColors_p; currentBlending = LINEARBLEND; } void loop() { ChangePalettePeriodically(); static uint8_t startIndex = 0; startIndex = startIndex + 1; /* 运动速度 */ FillLEDsFromPaletteColors( startIndex); FastLED.show(); FastLED.delay(1000 / UPDATES_PER_SECOND); } void FillLEDsFromPaletteColors( uint8_t colorIndex) { uint8_t brightness = 255; for( int i = 0; i < NUM_LEDS; i++) { leds[i] = ColorFromPalette( currentPalette, colorIndex, brightness, currentBlending); colorIndex += 3; } } /* // 这里展示了几种不同的调色板。 // // FastLED提供了几种“预设”调色板:RainbowColors_p,RainbowStripeColors_p, // OceanColors_p,CloudColors_p,LavaColors_p,ForestColors_p和PartyColors_p。 // // 另外,您可以手动定义自己的调色板,也可以编写 // 即时创建调色板的代码。 全部显示在这里。 */ void ChangePalettePeriodically() { uint8_t secondHand = (millis() / 1000) % 60; static uint8_t lastSecond = 99; if( lastSecond != secondHand) { lastSecond = secondHand; if( secondHand == 0) { currentPalette = RainbowColors_p; currentBlending = LINEARBLEND; } if( secondHand == 10) { currentPalette = RainbowStripeColors_p; currentBlending = NOBLEND; } if( secondHand == 15) { currentPalette = RainbowStripeColors_p; currentBlending = LINEARBLEND; } if( secondHand == 20) { SetupPurpleAndGreenPalette(); currentBlending = LINEARBLEND; } if( secondHand == 25) { SetupTotallyRandomPalette(); currentBlending = LINEARBLEND; } if( secondHand == 30) { SetupBlackAndWhiteStripedPalette(); currentBlending = NOBLEND; } if( secondHand == 35) { SetupBlackAndWhiteStripedPalette(); currentBlending = LINEARBLEND; } if( secondHand == 40) { currentPalette = CloudColors_p; currentBlending = LINEARBLEND; } if( secondHand == 45) { currentPalette = PartyColors_p; currentBlending = LINEARBLEND; } if( secondHand == 50) { currentPalette = myRedWhiteBluePalette_p; currentBlending = NOBLEND; } if( secondHand == 55) { currentPalette = myRedWhiteBluePalette_p; currentBlending = LINEARBLEND; } } } // 此功能使用完全随机的颜色填充调色板。 void SetupTotallyRandomPalette() { for( int i = 0; i < 16; i++) { currentPalette[i] = CHSV( random8(), 255, random8()); } } /* // 此函数设置了黑白条纹的调色板, // 使用代码。 由于调色板实际上是一个数组 // 16种CRGB颜色,可以使用各种fill_ *函数 // 进行设置。 */ void SetupBlackAndWhiteStripedPalette() { // “遮盖”所有16个调色板条目... fill_solid( currentPalette, 16, CRGB::Black); // 并将每四分之一设置为白色。 currentPalette[0] = CRGB::White; currentPalette[4] = CRGB::White; currentPalette[8] = CRGB::White; currentPalette[12] = CRGB::White; } // 此功能设置了紫色和绿色条纹的调色板。 void SetupPurpleAndGreenPalette() { CRGB purple = CHSV( HUE_PURPLE, 255, 255); CRGB green = CHSV( HUE_GREEN, 255, 255); CRGB black = CRGB::Black; currentPalette = CRGBPalette16( green, green, black, black, purple, purple, black, black, green, green, black, black, purple, purple, black, black ); } /* // 此示例说明如何设置静态调色板 // 存储在PROGMEM(闪存)中,几乎总是 // 比RAM丰富。 像这样的静态PROGMEM调色板 // 占用64个字节的Flash。 */ const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM = { CRGB::Red, CRGB::Gray, // 与红色和蓝色相比,“白色”太亮 CRGB::Blue, CRGB::Black, CRGB::Red, CRGB::Gray, CRGB::Blue, CRGB::Black, CRGB::Red, CRGB::Red, CRGB::Gray, CRGB::Gray, CRGB::Blue, CRGB::Blue, CRGB::Black, CRGB::Black };

步骤15 步骤15
将程序上传到mini红板上面,连接好12V课可充电锂电池。执行效果如图15所示
projectImage
步骤16 步骤16
下面观看一下视频,看一下总体效果。
Makelog作者原创文章,未经授权禁止转载。
0
0
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
|
[[c.comment_content]]