一、目的與應用
隨著聖誕節到來,讓我們自己製作可以撥放5種不同聖誕歌曲的裝置,並且用LED顯示每個音符。我們用BASIC Stamp控制器搭配我們的5段切換開關(5-Position Switch),當你每次按下開關後BASIC Stamp就會撥放不同的歌曲,並且透過LED顯示歌曲中的每個音符 。
二、所需零件
三、動作說明
四、製作說明
請按照以下電路圖配置
電路實體完成圖
五、程式說明
測試電路
一但接線完成後, 根據下面的測試程式 TestCarolingDevice.bs2 , 並且確認會有下面的動作, 這樣, 才不會待會執行完整程式時, 浪費許多時間去修改程式。
√ 所有LED都會亮
√ 蜂鳴器會發出聲音
√ 所有5段開端, 都會顯示在 Debug Terminal上(up, down, left, right, and pressed)
‘ TestCarolingDevice.bs2
‘ Tests that the Caroling Device is wired correctly.
‘ {$STAMP BS2}
‘ {$PBASIC 2.5}
HIGH 15 ‘ Turn on all LEDs
HIGH 14
HIGH 13
HIGH 12
HIGH 11
FREQOUT 8, 2000, 3000 ‘ Play a tone
DEBUG CLS, ‘ Display directional graph
” “, CR,
” | “, CR,
” – – “, CR,
” | “, CR
‘ Display which direction is pressed on the 5-Position Switch
DO
IF (IN0 = 0) THENDEBUGCRSRXY, 2, 2, “<“ELSEDEBUGCRSRXY, 2, 2, ” ”
IF (IN1 = 0) THENDEBUGCRSRXY, 5, 4, “v”ELSEDEBUGCRSRXY, 5, 4, ” ”
IF (IN2 = 0) THENDEBUGCRSRXY, 8, 2, “>”ELSEDEBUGCRSRXY, 8, 2, ” ”
IF (IN3 = 0) THENDEBUGCRSRXY, 5, 2, “o”ELSEDEBUGCRSRXY, 5, 2, ” ”
IF (IN4 = 0) THENDEBUGCRSRXY, 5, 0, “^”ELSEDEBUGCRSRXY, 5, 0, ” ”
PAUSE 20
LOOP
選擇你的曲調
現在已經確認你的基本電路是OK的,該是選擇你要撥放的歌曲並且製作進入BASIC Stamp裡面。這裡我們利用5段開關,選擇四首歌曲並利用第五段開關關閉每首歌曲。我們選擇了耳熟能詳的的四首歌分別是 We Wish You a Merry Christmas、Jingle Bells、Deck the Halls and O Christmas Tree 接下來我們必須將這四首歌寫成程式並且放在四個不同的程式段。請參考程式下載
下方是利用五段開關,所寫的程式變換
DO
IF (IN0 = 0) THEN
GOSUB Deck_The_Halls
ELSEIF (IN1 = 0) THEN
GOSUB Jingle_Bells
ELSEIF (IN2 = 0) THEN
GOSUB Merry_Christmas
ELSEIF (IN4 = 0) THEN
GOSUB Christmas_Tree
ELSE
PAUSE 20
ENDIF
LOOP
為了節省EEPROM的空間,利用LOOKUP and LOOKDOWN指令去決定頻率
Get_Frequency:
LOOKDOWN noteLetter, [ “C”, “d”, “D”, “e”, “E”,
“F”, “g”, “G”, “a”, “A”,
“b”, “B”, “R”, “Q” ], offset
LOOKUP offset, [ 4186, 4435, 4699, 4978, 5274,
5588, 5920, 6272, 6645, 7040,
7459, 7902, 0, 0 ], noteFreq
RETURN