資料介紹
描述
在這個(gè)項(xiàng)目中,讓我們使用蜂鳴器播放一首已知歌曲 Twinkle twinkle little star。
第 1 步:您需要什么
您將使用的零件都包含在此Maker 套件中。
- SwiftIO 板
- 盾
- 蜂鳴器
- 4 針電纜
第二步:關(guān)于音符
在開始閱讀代碼之前,您需要了解一些關(guān)于注釋的信息。
鋼琴鍵盤上共有 88 個(gè)鍵,從 A0 到 C8。這些音符對(duì)應(yīng)不同的頻率。
半音或半音是音符之間的最小間隔,例如,A鍵和A#鍵之間的間隔是半音。兩個(gè)半步構(gòu)成一個(gè)全步,就像A和B之間的間隔一樣。
一個(gè)八度由 12 個(gè)半音組成。它是一個(gè)音符與下一個(gè)同名音符之間的距離,例如,第一個(gè)鍵 A 到第二個(gè)鍵 A 形成一個(gè)八度。
四分音符是音樂中常見的音符長(zhǎng)度,只有一個(gè)節(jié)拍。然后其他音符以此為基礎(chǔ):二分音符有兩個(gè)節(jié)拍,全音符有四個(gè)節(jié)拍,八分音符有一半節(jié)拍,等等。
BPM或每分鐘節(jié)拍用于測(cè)量一段音樂的節(jié)奏。例如,60 BPM 表示一分鐘有 60 次節(jié)拍,每個(gè)節(jié)拍持續(xù) 1 秒。
第 3 步:電路
將屏蔽罩放在 SwiftIO 板的頂部。
將蜂鳴器模塊連接到引腳 PWM2B (D10)。
第 4 步:代碼
文件Twinkle.swift
:
import PWMTone
struct Music {
static let twinkle: [(note: PWMTone.Note, value: Int)] = [
(.C4, 4),
(.C4, 4),
(.G4, 4),
(.G4, 4),
(.A4, 4),
(.A4, 4),
(.G4, 2),
(.F4, 4),
(.F4, 4),
(.E4, 4),
(.E4, 4),
(.D4, 4),
(.D4, 4),
(.C4, 2),
(.G4, 4),
(.G4, 4),
(.F4, 4),
(.F4, 4),
(.E4, 4),
(.E4, 4),
(.D4, 2),
(.G4, 4),
(.G4, 4),
(.F4, 4),
(.F4, 4),
(.E4, 4),
(.E4, 4),
(.D4, 2),
(.C4, 4),
(.C4, 4),
(.G4, 4),
(.G4, 4),
(.A4, 4),
(.A4, 4),
(.G4, 2),
(.F4, 4),
(.F4, 4),
(.E4, 4),
(.E4, 4),
(.D4, 4),
(.D4, 4),
(.C4, 2)
]
}
文件main.swift
:
/* Import the SwiftIO library to use everything in it. */
import SwiftIO
/* Import the board library to use the Id of the specific board. */
import SwiftIOBoard
/* Import this library to set the PWM signal according to the musical notes. */
import PWMTone
var halfStep = 0
/* BPM, beat per minute, measures the tempo of music. */
var bpm = 60
/* Initialize a player. */
let player = PWMTone(PWMOut(Id.PWM2B), bpm: bpm)
while true {
/* Play the music. */
player.play(track: Music.twinkle)
/* Increase the bpm to make the music faster. */
bpm += 40
player.setBPM(bpm)
/* Raise an octave and the pitch sound higher. */
halfStep += 12
player.setFixedHalfStep(halfStep)
sleep(ms: 1000)
}
第 5 步:代碼分析
您可以在項(xiàng)目中找到兩個(gè)文件。
該文件Twinkle.swift
記錄了旋律的音符和每個(gè)音符的持續(xù)時(shí)間。
在文件main.swift
中,您將設(shè)置 PWM 信號(hào)來播放音樂。讓我們來看看它。
import SwiftIO
import SwiftIOBoard
import PWMTone
SwiftIO和SwiftIOBoard是所有這些項(xiàng)目中使用的庫。
您將使用另一個(gè)庫PWMTone。它允許您根據(jù)樂譜設(shè)置 PWM。
var halfStep = 0
該值halfStep
用于更改音高。它等于 0,因此音高保持不變。
var bpm = 60
將 bpm 設(shè)置為 60,因此每個(gè)節(jié)拍將持續(xù)一秒鐘。
let player = PWMTone(PWMOut(Id.PWM2B), bpm: bpm)
初始化播放器。它有三個(gè)參數(shù):
- 第一個(gè)是PWM引腳,
- 第二個(gè)是bpm。
- 第三個(gè)設(shè)置每個(gè)音符之間的間隔,默認(rèn)為 0.1。
player.play(track: Music.twinkle)
此語句是播放音樂。該方法play(track:halfstep)
有兩個(gè)參數(shù)。
-
track
是表示音符和音符長(zhǎng)度的元組數(shù)組。Music.twinkle
指的是寫在文件中的分?jǐn)?shù)Twinkle.swift
。在 struct Music中,有一個(gè)恒定的閃爍存儲(chǔ)音符和音符長(zhǎng)度。所以軌道寫成Music.twinkle
。 -
的
halfStep
默認(rèn)值為 0。稍后您將對(duì)其進(jìn)行設(shè)置。所以你可以在這里忽略它。
bpm += 40
player.setBPM(bpm)
然后增加 bpm 以使速度快一點(diǎn)。此增量是您喜歡的隨機(jī)數(shù)。
halfStep += 12
player.setFixedHalfStep(halfStep)
這兩個(gè)語句旨在提高一個(gè)八度,因此音樂的音高聽起來更高。
第 6 步:運(yùn)行項(xiàng)目
成功下載代碼后,您將聽到蜂鳴器發(fā)出的旋律。音樂會(huì)逐漸變快,音調(diào)會(huì)變高。
- 基于51單片機(jī)的蜂鳴器播放音樂源代碼 55次下載
- 制作帶有蜂鳴器和LCD顯示屏的圣誕歌曲播放器
- 基于Labview制作的音樂播放器源碼分享 70次下載
- 基于51單片機(jī)的音樂播放器
- 基于51單片機(jī)的音樂播放器的制作 105次下載
- 蜂鳴器播放音樂設(shè)計(jì)與實(shí)現(xiàn)(附源碼) 87次下載
- 懂你的音樂播放器C語言程序免費(fèi)下載 5次下載
- 蜂鳴器播放音樂C語言程序免費(fèi)下載 46次下載
- Labview中activeX編的音樂播放器 54次下載
- 基于Android音樂播放器的研究 7次下載
- 基于單片機(jī)的音樂播放器的設(shè)計(jì)與制作 205次下載
- 音樂播放器 38次下載
- 蜂鳴器音樂播放實(shí)驗(yàn) 814次下載
- 基于CPLD的MIDI音樂播放器的設(shè)計(jì)
- 網(wǎng)頁音樂播放器代碼
- 數(shù)字播放器和解碼器 149次閱讀
- 車載播放器怎么選擇格式 1313次閱讀
- 嬰兒搖籃床播放器WT2003H音樂芯片方案 1272次閱讀
- 帶有觸摸開關(guān)和定時(shí)器的音樂鈴電路圖 2414次閱讀
- 如何利用Arduino UNO和SD卡制作音樂播放器 7319次閱讀
- 音樂發(fā)燒友的首選播放器山靈M5s發(fā)布 2147次閱讀
- 新唐科技音樂合成系列介紹 1304次閱讀
- MP3播放器的基本原理及電路組成 1.9w次閱讀
- 蜂鳴器音樂程序與最簡(jiǎn)單蜂鳴器電路圖之FPGA學(xué)習(xí)課程 1.9w次閱讀
- 基于車載播放器的e-Mark輻射騷擾測(cè)試 983次閱讀
- 基于AT89C51SND1C單片機(jī)的MP3播放器的設(shè)計(jì)方案 6464次閱讀
- 利用PWM音頻信號(hào)實(shí)現(xiàn)音樂播放器的應(yīng)用設(shè)計(jì) 3.5w次閱讀
- hifi和無損哪個(gè)音質(zhì)好_關(guān)于無損音樂的幾個(gè)常見誤區(qū) 7.4w次閱讀
- hifi播放器排行榜 3.4w次閱讀
- 基于嵌入式Linux流媒體播放器系統(tǒng)軟硬件解決方案 2740次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多