本帖最后由 jiangzhihao 于 2020-10-12 21:50 编辑
“激光来造物,开源乐分享” 激光切割造物项目教学案例
教学案例名称:六角旋转灯笼 项目作品类别:工程结构类 作者:江志灏 单位:广州市花都区花山镇思明小学 涉及学科或专业领域:工程,科学,技术,艺术,数学,编程。
一、项目作品设计与制作学习概述 制作灯笼是我校的传统特色课程、,每年的中秋节,学校会组织学生进行传统手工灯笼的制作的教学课程。经调查发现由于传统手工技术的限制,学生制作灯笼的工艺只能用剪纸,或者用矿泉水瓶或塑料,纸片等来做外壳,发光装置普遍用传统的蜡烛。这种制作过程周期比较长,制作灯笼的结构不够稳定,使用的周期不够长,中秋节过后,这些灯笼就就要扔掉,造成一种浪费。同时蜡烛只能一次性使用,不能够循环使用。为解决这些问题,我对灯笼的制作方法进行了改良。我利用3Donecut三维建模软件进行灯笼的三维建模,利用LaserMaker进行灯笼外观设计的深加工,培养了学生的数学计算思维。然后用激光切割机切割出灯笼的外观,改变了传统灯笼外观的制作方式。灯笼发光部分我将传统的蜡烛,改为全彩的ws2812B幻彩灯带,颜色和亮度可以根据需要进行调节,让灯笼可以发射出绚丽多姿的灯光颜色。为了让灯光的效果更好,灯笼的外观采用雕花镂空设计,灯笼的灯柱利用进步电机进行旋转控制,让灯光同过镂空的外观使灯光变得更加丰富多彩。本课程设计培养学生三维建模的能力,能够理解好物体空间的三维关系,培养学生的想象力和创新能力,学生可以根据自己的爱好和想象设计出不同的外观镂空图案,培养学生三维图转二维图再到三维图形的空间变换能力。通过动手实践,外观的制作和拼接培养学生的的动手能力,工程思维,和艺术的审美能力。灯笼发光装置的电路连接,培养的学生对电路原理的理解。编写程序,控制进步电机的旋转和LED灯带的灯光控制,培养了学生的编程思维能力。在灯笼的制作过程中,学生会遇到各种困难和挫折,例如设计出的图纸的尺寸大小不合适,学生要重新设计,培养学生面对挫折,热爱科学,热爱中国传统文化的爱国情感。作品图片如下:
1
二、教学设计 (一)学习内容分析 本案例涉及到的相关知识如下: 1、对三维建模软件3Donecut的基本了解和使用。 2、对LaserMaker软件进行二维平面建模。 3、激光切割机的使用。 4、学生对三维空间结构关系的认识,对灯笼整体结构的了解。 5、ws2812B幻彩灯带电子元件的认识和基本电路连接方法。 6、Mixly图形化编程和Arduino IDE编程的思维能力。 通过以上知识的学习,知识与技能,包括对认识灯笼外观设计界面和逻辑编程界面的认识。思维能力的培养,包括设计思维,建立在灯笼的外观设计,建立对积木式编程的趣味性和可玩性的认识。 计算思维能力的培养,体现在对mxily硬件编程的程序设计的数学逻辑推理,及解决实际问题的数学逻辑思维。工程思维能力的培养,学生对整个电路的搭建,和整个作品的的结构需要建立初步的工程思维能力。 社会责任与道德素养的培养,要遵守信息法律法规,信息伦理道德规范,作品内容要做到文明健康,使用网络上的图片素材要尊重图片版权。通过课程学习,让学生掌握三维建模的能力,平面设计能力和艺术审美能力,具备对电子电路的基本认识,和编程思维的建立。通过制作活动,学生能掌握三维建模的基本原理,平面建模的基本步骤,动手实践能力和整体审美能力有所提高,掌握解决问题的编程思维能力。 (二)学习者分析 此案例中,学生的编程能力和电路搭建能力的基本情况是,学生通过前期arduino 开源硬件学习,和Scartch图形化编程的学习,在对电路搭建和编程能力有一定的基础。大多数学生对各种电子元件有一定的认识,对基本电路的搭建有一定的了解,已经具备简单的电路组装能力,并且能够运用这一能力来解决简单问题。学生已经对Mixly图形化编程软件的基本命令有所了解,会动手编写简单的程序。在这个基础上,进行三维建模,平面设计建模的课程教学,使小学生更好的掌握设计思维,计算思维,工程思维,技术和艺术相结合。在教学的过程中,小学生的动手能力不够强,组装的时候需要老师个别指导,数据测量不够准确,导致建模切割出来的成品有误差,所以要重新修改进行设计,在这个过程中浪费的很多时间。针对这个问题,老师要加强学生实际尺寸测量的的锻炼,测量记录的数据要简单精确。因为使用激光切割机作业,有一定的危险性,为保障学生的安全,在激光切割机的使用过程中,必须要有老师在一旁指导学生进行使用,防止意外事故的发生。 (三)学习目标分析 通过此项目的学习 激发学生对激光切割工艺的兴趣,体验用激光切割技术技术结合mixly和arduino IED 编程技术相结合控制的各种电子元件的乐趣,学会感受做研究的吸引力,并培养学生不怕失败、勇于创新的科学态度。
(四)学习重难点 教学重点:用LaserMaker进行旋转灯笼的设计。 教学难点;用arduino IED 软件编写程序。
(五)教学方法选择与设计 教学方法;1先用3Done cut三维建模软件进行六角灯笼的三维建模。 2、将三维图形转化为二维平面图形。 3、利用LaserMaker进行对灯笼的外观设计。 4、用激光切割机将制作图纸进行切割,将切割零件进行组装。 5、用linkboy 3.6软件进行模拟电路搭建。 6、用mixly软件编写进步电机的程序。 7、用arduino IDE软件编写LED灯带的程序。 8、将电子元件与六角灯笼组装起来,这样就给一件作品赋予了灵魂。
(六)教学资源与工具设计 教学资源与工具设计: 3Done cut三维建模软件,LaserMaker建模软件,linkboy 3.6、仿真电路软件,mixly编程软件,arduino IDE 编程软件。
(七)教学过程 《六角灯笼的的三维建模》教学设计
1、先利用3Done cut三维建模软件进行六角灯笼的三维建模。如图1所示
图(1) 2、将建模好的三维模型进行投影,转换到二维平面。如图2所示
图(2)
3、将二维图形以dxf格式导出。如图3所示
图(3) 4、将导出的dxf文件在LaserMaker中打开。如图4所示
图(4) 5、在LaserMaker中绘制六角灯笼外观的镂空部分。如图5所示
图(5) 6、在LaserMaker中绘制六角灯笼的底座结构部分。如图6所示 图(6) 7、完成图纸设计后,将图纸导出,放到激光切割机中进行切割。如图7所示
8、切割完成后拼装六角灯笼的整体外观,如图8所示 图(8) 9、组装好外观后,对进步电机的电路进行连接,如图9所示
图(9) 10、做到这一步,为了找到合适的灯柱,因我家在农村,所以我到竹园用游标卡尺来测量灯柱半径,找了一根比较合适的竹子作为灯柱如图10所示 图(10) 11、将灯柱和LED灯带连接起来,如图11所示
2
图(11) 12、将灯柱和底座用热熔胶枪固定在一起,如图12所示
3
图(12) 13、用mixly编写进步电机的控制程序,程序如图13所示:
4
图(13) 14、用arduino IDE编写LDE灯带的控制程序,程序如下: #include <FastLED.h> #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<LED_TYPE, LED_PIN, COLOR_ORDER>(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 = 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 = 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、将程序上传到mini红板上面,连接好12V可充电锂电池。执行效果如图15所示: 图(15) 至此,本教案完成。 全课小结; 通过这次课的学习,同学们对激光切有了一定的认识,编程能力,和三维建模能力有一定的提高。同学们学会了将想法和创意通过激光切割技术及编程技术将创意变为现实。在此案例中,学生的创作能力和动手能力得到提高,吸引了同学们对创客的热爱,锻炼了同学们勇于面对挫折,热爱科学的精神。 演示视频: |