【關(guān)鍵詞】3D打??;Arduino Nano;無(wú)源蜂鳴器;紐扣電池;丙烯顏料
1. 簡(jiǎn)介
2. 手工部分
2.1 關(guān)于建模

老圖的3D建模工作是土建院的郭泓同學(xué)完成的(這個(gè)模型也是他參加我校圖書館辦的第一屆3D打印設(shè)計(jì)大賽的一等獎(jiǎng)作品),據(jù)他說(shuō)是使用 Autodesk 123D Design 軟件設(shè)計(jì)的,不過(guò)這個(gè)軟件現(xiàn)在 AutoDesk 公司似乎已經(jīng)不更新了。
我自己比較常用的三維建模軟件是 Autodesk Inventor,而作為沒(méi)有任何基礎(chǔ)的同學(xué)如果想要入門三維設(shè)計(jì),做一些簡(jiǎn)單的嘗試的話,建議試一下 Win10 自帶的畫圖3D,還有就是 AutoDesk 公司的在線建模軟件 TinkerCAD ,注冊(cè)一下就可以使用了(記得注冊(cè)為教育用戶,這樣 AutoDesk 公司的幾十個(gè)軟件都可以在三年之內(nèi)免費(fèi)使用,這里不詳述)。
雖然已經(jīng)有了基本的模型,但也不是立馬就能用來(lái)做音樂(lè)盒的外殼,而是在制作的過(guò)程中經(jīng)過(guò)反復(fù)的手動(dòng)調(diào)整、反復(fù)溝通(si)和二次設(shè)計(jì),最后才確定了現(xiàn)在的組合方式。
2.2 3D打印

打印全部的零件差不多花了10余個(gè)小時(shí),還是個(gè)挺漫長(zhǎng)的過(guò)程,筆者用的這個(gè)打印機(jī)精度不算高,出模之后還有一些毛邊需要手工用刀片處理下。


2.3 上色
使用丙烯顏料給模型上色,丙烯的特點(diǎn)是可以用水做溶劑,干燥之后防水而且耐磨、不易脫落,所以很適合DIY的時(shí)候用來(lái)給塑料或金屬制品上色。
調(diào)色也是個(gè)學(xué)問(wèn),也是做了一兩次失敗的嘗試才確定了比較合適的顏料比例,上色的時(shí)候先用較粗的畫筆大致上一遍,待顏料基本干后,再用較細(xì)的筆勾描一下細(xì)節(jié)。

3. Arduino部分
下面到了電子元器件的部分

3.1 元器件簡(jiǎn)介
- Arduino Nano
- 無(wú)源蜂鳴器
- 紐扣電池
3.2 組合與焊接




3.3 代碼部分
tone() 函數(shù)介紹
蜂鳴器音調(diào)和頻率的對(duì)應(yīng)關(guān)系(待補(bǔ)充)
將歌曲的簡(jiǎn)譜按音調(diào)和節(jié)拍錄入為兩個(gè)數(shù)組
// 列出所有D調(diào)的頻率
#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[] = { // 根據(jù)簡(jiǎn)譜列出各頻率
// 東湖之濱,珞珈山上,這是我們親愛(ài)的學(xué)堂
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[] = { // 根據(jù)簡(jiǎn)譜列出各節(jié)拍
// 從東湖之濱開(kāi)始
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號(hào)接口輸出聲音
void setup() {
pinMode(tonePin, OUTPUT); // 設(shè)置tonePin(5號(hào)引腳)為輸出
length = sizeof(note) / sizeof(note[0]); // 計(jì)算音調(diào)數(shù)組的長(zhǎng)度
}
void loop() {
for(int x = 0; x < length; x++) {
tone(tonePin, note[x]); // tone()函數(shù)接收兩個(gè)參數(shù),第一個(gè)為連接蜂鳴器輸出聲音的引腳,第二個(gè)為聲音的音調(diào)
delay(500 * durt[x]); // 這里用來(lái)根據(jù)音樂(lè)速率調(diào)節(jié)參數(shù),這首設(shè)為500
noTone(tonePin); // 關(guān)閉聲音
}
delay(2000); // 延時(shí)2000毫秒(2秒)
}