美文网首页
DIY一个以武大老图书馆外形的电子音乐盒

DIY一个以武大老图书馆外形的电子音乐盒

作者: 创客大杨 | 来源:发表于2019-04-03 12:14 被阅读0次

    【关键词】3D打印;Arduino Nano;无源蜂鸣器;纽扣电池;丙烯颜料

    1. 简介

    2. 手工部分

    2.1 关于建模

    使用Win10自带的3D查看器浏览模型文件

    老图的3D建模工作是土建院的郭泓同学完成的(这个模型也是他参加我校图书馆办的第一届3D打印设计大赛的一等奖作品),据他说是使用 Autodesk 123D Design 软件设计的,不过这个软件现在 AutoDesk 公司似乎已经不更新了。

    我自己比较常用的三维建模软件是 Autodesk Inventor,而作为没有任何基础的同学如果想要入门三维设计,做一些简单的尝试的话,建议试一下 Win10 自带的画图3D,还有就是 AutoDesk 公司的在线建模软件 TinkerCAD ,注册一下就可以使用了(记得注册为教育用户,这样 AutoDesk 公司的几十个软件都可以在三年之内免费使用,这里不详述)。

    虽然已经有了基本的模型,但也不是立马就能用来做音乐盒的外壳,而是在制作的过程中经过反复的手动调整、反复沟通(si)和二次设计,最后才确定了现在的组合方式。

    2.2 3D打印

    打印中

    打印全部的零件差不多花了10余个小时,还是个挺漫长的过程,笔者用的这个打印机精度不算高,出模之后还有一些毛边需要手工用刀片处理下。

    打印出的部件全家福 简单地预组装一下

    2.3 上色

    使用丙烯颜料给模型上色,丙烯的特点是可以用水做溶剂,干燥之后防水而且耐磨、不易脱落,所以很适合DIY的时候用来给塑料或金属制品上色。

    调色也是个学问,也是做了一两次失败的尝试才确定了比较合适的颜料比例,上色的时候先用较粗的画笔大致上一遍,待颜料基本干后,再用较细的笔勾描一下细节。

    上色过程

    3. Arduino部分

    下面到了电子元器件的部分

    电子元器件全家福

    3.1 元器件简介

    • Arduino Nano
    • 无源蜂鸣器
    • 纽扣电池

    3.2 组合与焊接

    连接蜂鸣器并测试 连接纽扣电池盒并测试 焊接触点 整体组合

    3.3 代码部分

    tone() 函数介绍

    蜂鸣器音调和频率的对应关系(待补充)

    将歌曲的简谱按音调和节拍录入为两个数组

    // 列出所有D调的频率
    #define NTD0 -1
    #define NTD1 293
    #define NTD2 329
    #define NTD3 368
    #define NTD4 390
    #define NTD5 438
    #define NTD6 492
    #define NTD7 554
    
    #define NTDL1 147
    #define NTDL2 166
    #define NTDL3 185
    #define NTDL4 196
    #define NTDL5 221
    #define NTDL6 248
    #define NTDL7 278
    
    #define NTDH1 585
    #define NTDH2 657
    #define NTDH3 700
    #define NTDH4 781
    #define NTDH5 882
    #define NTDH6 990
    #define NTDH7 1112
    
    int note[] = {  // 根据简谱列出各频率
        // 东湖之滨,珞珈山上,这是我们亲爱的学堂
        NTD3, NTD4, NTD5, NTD6, NTD5,
        NTD2, NTD4, NTD3, NTD2, NTD1,
        NTD3, NTD4, NTD5, NTD5, NTD5, NTDH3, NTDH2, NTDH1,
        NTD7, NTD6, NTDH2, NTDH1, NTD5,
        // 
        NTDH1, NTD7, NTD6, NTD5, NTD6,
        NTD5, NTD2, NTD4, NTD3, NTD2,
        NTD3, NTD2, NTD3, NTD4, NTD5, NTD6, NTD5,
        NTDH1, NTD7, NTD6, NTD5, NTDH2,
        //
        NTDH3,
        NTDH2, NTDH1, NTDH3,
        NTDH2, NTDH1, NTD6, NTD7, 
        NTDH1, NTD6, NTD5,
        //
        NTD3, NTD4, NTD3, NTD2, NTD1,
        NTDH1, NTDH1, NTD7, NTD6,
        NTD5, NTDH4, NTDH3, NTDH2,
        NTDH1
    };
    
    float durt[] = {  // 根据简谱列出各节拍
        // 从东湖之滨开始
        0.5, 0.5, 0.5, 0.5, 2,
        0.5, 0.5, 0.5, 0.5, 2,
        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
        0.5, 0.5, 0.5, 0.5, 2,
        //
        0.5, 0.5, 0.5, 0.5, 2,
        0.5, 0.5, 0.5, 0.5, 2,
        0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1,
        0.5, 0.5, 0.5, 0.5, 2,
        // 
        4,
        0.75, 0.25, 3,
        0.75, 0.25, 2.5, 0.5,
        0.5, 0.5, 3,
        //
        1.5, 0.5, 0.5, 0.5, 1,
        1, 0.75, 0.25, 2,
        1, 1, 1.5, 0.5,
        4
    };
    
    int length;
    int tonePin = 5;   // 使用5号接口输出声音
    
    void setup() {
        pinMode(tonePin, OUTPUT);  // 设置tonePin(5号引脚)为输出
        length = sizeof(note) / sizeof(note[0]);  // 计算音调数组的长度
    }
    
    void loop() {
        for(int x = 0; x < length; x++) {
            tone(tonePin, note[x]);  // tone()函数接收两个参数,第一个为连接蜂鸣器输出声音的引脚,第二个为声音的音调
            delay(500 * durt[x]);  // 这里用来根据音乐速率调节参数,这首设为500
            noTone(tonePin);  // 关闭声音
        }
        delay(2000);  // 延时2000毫秒(2秒)
    }
    

    4. 大功告成

    相关文章

      网友评论

          本文标题:DIY一个以武大老图书馆外形的电子音乐盒

          本文链接:https://www.haomeiwen.com/subject/yfbabqtx.html