チーム171A
課題名
デュアルスピーカー音楽再生器
研究者名
磯村 俊輔
概要
Tera termから
aを押してからEnterを押すと 会いたかった
bを押してからEnterを押すと BE MY BABY
cを押してからEnterを押すと チャルメラの歌
dを押してからEnterを押すと He is a pirate
eを押してからEnterを押すと 君が代
mを押してからEnterを押すと 明治大学校歌
rを押してからEnterを押すと 上の曲をランダムで再生する。
が、ふたつのスピーカーから1オクターブ違う音が流れる。(時間の都合上、君が代と校歌のみ2つのスピーカーから流れる。)
使用機器
PSoC基盤 1個
MiniProg 1個
ジャンパー線 6本
スピーカー 2個
シリアル通信ケーブル 1本
ソースコード 配線[#v525b1bc]
#include <m8c.h>
#include "PSoCAPI.h"
#include <stdlib.h>
#pragma interrupt_handler myISR
int PW = 125;
int SILENT = 0, MR = 273, D = 229, L = 204, M = 182, F = 172, FC = 162, S = 153, R = 136, C = 121, CF = 129, DD = 115, LL =102, MM = 91, FF = 85, SS = 75, RR = 68;
int r = 243, FFC = 81, DDC = 108;
int TC = 0, TC2 = 0;
int n = 0, CN = 0;
void myISR(void)
{
if(n == 1){//明治大学校歌
TC += 1;
PWM16_1_WritePulseWidth(PW);
PWM16_2_WritePulseWidth(PW);
if(TC == 1){
LCD_1_Start();
LCD_1_Position(0,0);
LCD_1_PrCString("meiji kouka");
LCD_1_Position(1,0);
LCD_1_PrCString("song: meiji univ");
}
if(TC == 1)
{
PWM16_1_WritePeriod(r);
PWM16_2_WritePeriod(r/2);
}
else if(TC == 5)
{
PWM16_1_WritePeriod(L);
PWM16_2_WritePeriod(L/2);
}
else if(TC == 9){
PWM16_1_WritePeriod(M);
PWM16_2_WritePeriod(M/2);
}
else if(TC == 13){
PWM16_1_WritePeriod(FC);
PWM16_2_WritePeriod(FC/2);
}
else if(TC == 17){
PWM16_1_WritePeriod(S);
PWM16_2_WritePeriod(S/2);
}
else if(TC == 21){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 23){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 33){
PWM16_1_WritePeriod(L);
PWM16_2_WritePeriod(L/2);
}
else if(TC == 36){
PWM16_1_WritePeriod(M);
PWM16_2_WritePeriod(M/2);
}
else if(TC == 37){
PWM16_1_WritePeriod(FC);
PWM16_2_WritePeriod(FC/2);
}
else if(TC == 41){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 45){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 49){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 53){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 65){
PWM16_1_WritePeriod(FFC);
PWM16_2_WritePeriod(FFC/2);
}
else if(TC == 68){
PWM16_1_WritePeriod(MM);
PWM16_2_WritePeriod(MM/2);
}
else if(TC == 69){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 72){
PWM16_1_WritePeriod(SILENT);
PWM16_2_WritePeriod(SILENT);
}
else if(TC == 73){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 76){
PWM16_1_WritePeriod(SILENT);
PWM16_2_WritePeriod(SILENT);
}
else if(TC == 77){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 81){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 85){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 87){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 97){
PWM16_1_WritePeriod(FC);
PWM16_2_WritePeriod(FC/2);
}
else if(TC == 100){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 101){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 105){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 109){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 113){
PWM16_1_WritePeriod(FC);
PWM16_2_WritePeriod(FC/2);
}
else if(TC == 117){
PWM16_1_WritePeriod(M);
PWM16_2_WritePeriod(M/2);
}
else if(TC == 129){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 131){
PWM16_1_WritePeriod(MM);
PWM16_2_WritePeriod(MM/2);
}
else if(TC == 133){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 145){
PWM16_1_WritePeriod(FC);
PWM16_2_WritePeriod(FC/2);
}
else if(TC == 147){
PWM16_1_WritePeriod(S);
PWM16_2_WritePeriod(S/2);
}
else if(TC == 149){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 156){
PWM16_1_WritePeriod(SILENT);
PWM16_2_WritePeriod(SILENT);
}
else if(TC == 157){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 161){
PWM16_1_WritePeriod(FC);
PWM16_2_WritePeriod(FC/2);
}
else if(TC == 163){
PWM16_1_WritePeriod(S);
PWM16_2_WritePeriod(S/2);
}
else if(TC == 165){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 169){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 173){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 175){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 179){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 181){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 193){
PWM16_1_WritePeriod(FFC);
PWM16_2_WritePeriod(FFC/2);
}
else if(TC == 196){
PWM16_1_WritePeriod(MM);
PWM16_2_WritePeriod(MM/2);
}
else if(TC == 197){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 201){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 204){
PWM16_1_WritePeriod(SILENT);
PWM16_2_WritePeriod(SILENT);
}
else if(TC == 205){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 209){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 213){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 215){
PWM16_1_WritePeriod(FC);
PWM16_2_WritePeriod(FC/2);
}
else if(TC == 225){
PWM16_1_WritePeriod(L);
PWM16_2_WritePeriod(L/2);
}
else if(TC == 228){
PWM16_1_WritePeriod(M);
PWM16_2_WritePeriod(M/2);
}
else if(TC == 229){
PWM16_1_WritePeriod(FC);
PWM16_2_WritePeriod(FC/2);
}
else if(TC == 233){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 237){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 241){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 245){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 257){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 261){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 269){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 273){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 276){
PWM16_1_WritePeriod(DDC);
PWM16_2_WritePeriod(DDC/2);
}
else if(TC == 277){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 285){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 288){
PWM16_1_WritePeriod(SILENT);
PWM16_2_WritePeriod(SILENT);
}
else if(TC == 289){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 291){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 299){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 301){
PWM16_1_WritePeriod(FC);
PWM16_2_WritePeriod(FC/2);
}
else if(TC == 305){
PWM16_1_WritePeriod(S);
PWM16_2_WritePeriod(S/2);
}
else if(TC == 307){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 311){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 315){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 319){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 323){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 327){
PWM16_1_WritePeriod(FFC);
PWM16_2_WritePeriod(FFC/2);
}
else if(TC == 330){
PWM16_1_WritePeriod(MM);
PWM16_2_WritePeriod(MM/2);
}
else if(TC == 331){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 342){
PWM16_1_WritePeriod(SILENT);
PWM16_2_WritePeriod(SILENT);
}
else if(TC == 343){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 346){
PWM16_1_WritePeriod(MM);
PWM16_2_WritePeriod(MM/2);
}
else if(TC == 347){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 355){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 358){
PWM16_1_WritePeriod(SILENT);
PWM16_2_WritePeriod(SILENT);
}
else if(TC == 359){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 361){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 362){
PWM16_1_WritePeriod(SILENT);
PWM16_2_WritePeriod(SILENT);
}
else if(TC == 363){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 365){
PWM16_1_WritePeriod(FC);
PWM16_2_WritePeriod(FC/2);
}
else if(TC == 369){
PWM16_1_WritePeriod(S);
PWM16_2_WritePeriod(S/2);
}
else if(TC == 371){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 375){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 379){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 383){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 387){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 391){
PWM16_1_WritePeriod(FFC);
PWM16_2_WritePeriod(FFC/2);
}
else if(TC == 394){
PWM16_1_WritePeriod(MM);
PWM16_2_WritePeriod(MM/2);
}
else if(TC == 395){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 407){
PWM16_1_WritePeriod(L);
PWM16_2_WritePeriod(L/2);
}
else if(TC == 410){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 411){
PWM16_1_WritePeriod(LL);
PWM16_2_WritePeriod(LL/2);
}
else if(TC == 419){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 423){
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(C/2);
}
else if(TC == 425){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 426){
PWM16_1_WritePeriod(SILENT);
PWM16_2_WritePeriod(SILENT);
}
else if(TC == 427){
PWM16_1_WritePeriod(R);
PWM16_2_WritePeriod(R/2);
}
else if(TC == 429){
PWM16_1_WritePeriod(FC);
PWM16_2_WritePeriod(FC/2);
}
else if(TC == 433){
PWM16_1_WritePeriod(L);
PWM16_2_WritePeriod(L/2);
}
else if(TC == 435){
PWM16_1_WritePeriod(FC);
PWM16_2_WritePeriod(FC/2);
}
else if(TC == 439){
PWM16_1_WritePeriod(M);
PWM16_2_WritePeriod(M/2);
}
else if(TC == 443){
PWM16_1_WritePeriod(L);
PWM16_2_WritePeriod(L/2);
}
else if(TC == 451){
PWM16_1_WritePeriod(SILENT);
PWM16_2_WritePeriod(SILENT);
}
}
else if(n == 2){//会いたかった
TC += 1;
PWM16_1_WritePulseWidth(PW);
if(TC == 1){
LCD_1_Start();
LCD_1_Position(0,0);
LCD_1_PrCString("aitakatta");
LCD_1_Position(1,0);
LCD_1_PrCString("song: AKB48");
}
if(TC == 1)
PWM16_1_WritePeriod(S);
else if(TC == 2)
PWM16_1_WritePeriod(SILENT);
else if(TC == 3)
PWM16_1_WritePeriod(S);
else if(TC == 4)
PWM16_1_WritePeriod(SILENT);
else if(TC == 5)
PWM16_1_WritePeriod(S);
else if(TC == 6)
PWM16_1_WritePeriod(SILENT);
else if(TC == 7)
PWM16_1_WritePeriod(S);
else if(TC == 8)
PWM16_1_WritePeriod(SILENT);
else if(TC == 9)
PWM16_1_WritePeriod(DD);
else if(TC == 17)
PWM16_1_WritePeriod(S);
else if(TC == 18)
PWM16_1_WritePeriod(SILENT);
else if(TC == 19)
PWM16_1_WritePeriod(S);
else if(TC == 20)
PWM16_1_WritePeriod(SILENT);
else if(TC == 21)
PWM16_1_WritePeriod(S);
else if(TC == 22)
PWM16_1_WritePeriod(SILENT);
else if(TC == 23)
PWM16_1_WritePeriod(S);
else if(TC == 24)
PWM16_1_WritePeriod(SILENT);
else if(TC == 27)
PWM16_1_WritePeriod(DD);
else if(TC == 33)
PWM16_1_WritePeriod(S);
else if(TC == 34)
PWM16_1_WritePeriod(SILENT);
else if(TC == 35)
PWM16_1_WritePeriod(S);
else if(TC == 36)
PWM16_1_WritePeriod(SILENT);
else if(TC == 37)
PWM16_1_WritePeriod(S);
else if(TC == 38)
PWM16_1_WritePeriod(SILENT);
else if(TC == 41)
PWM16_1_WritePeriod(S);
else if(TC == 42)
PWM16_1_WritePeriod(SILENT);
else if(TC == 43)
PWM16_1_WritePeriod(DD);
else if(TC == 49)
PWM16_1_WritePeriod(LL);
else if(TC == 51)
PWM16_1_WritePeriod(SILENT);
else if(TC == 65)
PWM16_1_WritePeriod(S);
else if(TC == 66)
PWM16_1_WritePeriod(SILENT);
else if(TC == 67)
PWM16_1_WritePeriod(S);
else if(TC == 68)
PWM16_1_WritePeriod(SILENT);
else if(TC == 69)
PWM16_1_WritePeriod(S);
else if(TC == 70)
PWM16_1_WritePeriod(SILENT);
else if(TC == 71)
PWM16_1_WritePeriod(S);
else if(TC == 72)
PWM16_1_WritePeriod(SILENT);
else if(TC == 75)
PWM16_1_WritePeriod(DD);
else if(TC == 81)
PWM16_1_WritePeriod(S);
else if(TC == 82)
PWM16_1_WritePeriod(SILENT);
else if(TC == 83)
PWM16_1_WritePeriod(S);
else if(TC == 84)
PWM16_1_WritePeriod(SILENT);
else if(TC == 85)
PWM16_1_WritePeriod(S);
else if(TC == 86)
PWM16_1_WritePeriod(SILENT);
else if(TC == 87)
PWM16_1_WritePeriod(S);
else if(TC == 88)
PWM16_1_WritePeriod(SILENT);
else if(TC == 91)
PWM16_1_WritePeriod(DD);
else if(TC == 97)
PWM16_1_WritePeriod(S);
else if(TC == 98)
PWM16_1_WritePeriod(SILENT);
else if(TC == 99)
PWM16_1_WritePeriod(S);
else if(TC == 100)
PWM16_1_WritePeriod(SILENT);
else if(TC == 101)
PWM16_1_WritePeriod(S);
else if(TC == 102)
PWM16_1_WritePeriod(SILENT);
else if(TC == 103)
PWM16_1_WritePeriod(S);
else if(TC == 104)
PWM16_1_WritePeriod(SILENT);
else if(TC == 107)
PWM16_1_WritePeriod(DD);
else if(TC == 113)
PWM16_1_WritePeriod(LL);
else if(TC == 115)
PWM16_1_WritePeriod(SILENT);
else if(TC == 121)
PWM16_1_WritePeriod(DD);
else if(TC == 125)
PWM16_1_WritePeriod(C);
else if(TC == 129)
PWM16_1_WritePeriod(DD);
else if(TC==139)
PWM16_1_WritePeriod(SILENT);
}
else if(n == 3){//BE MY BABY
TC += 1;
PWM16_1_WritePulseWidth(PW);
if(TC == 1){
LCD_1_Start();
LCD_1_Position(0,0);
LCD_1_PrCString("BE MY BABY");
LCD_1_Position(1,0);
LCD_1_PrCString("song: COMPLEX");
}
if(TC == 1)
PWM16_1_WritePeriod(MM);
else if(TC == 4)
PWM16_1_WritePeriod(SILENT);
else if(TC == 5)
PWM16_1_WritePeriod(MM);
else if(TC == 9)
PWM16_1_WritePeriod(LL);
else if(TC == 11)
PWM16_1_WritePeriod(DD);
else if(TC == 12)
PWM16_1_WritePeriod(SILENT);
else if(TC == 13)
PWM16_1_WritePeriod(DD);
else if(TC == 25)
PWM16_1_WritePeriod(SILENT);
else if(TC == 33)
PWM16_1_WritePeriod(R);
else if(TC == 37)
PWM16_1_WritePeriod(DD);
else if(TC == 41)
PWM16_1_WritePeriod(LL);
else if(TC == 43)
PWM16_1_WritePeriod(DD);
else if(TC == 44)
PWM16_1_WritePeriod(SILENT);
else if(TC == 45)
PWM16_1_WritePeriod(DD);
else if(TC == 57)
PWM16_1_WritePeriod(SILENT);
else if(TC == 65)
PWM16_1_WritePeriod(MM);
else if(TC == 68)
PWM16_1_WritePeriod(SILENT);
else if(TC == 69)
PWM16_1_WritePeriod(MM);
else if(TC == 73)
PWM16_1_WritePeriod(LL);
else if(TC == 75)
PWM16_1_WritePeriod(DD);
else if(TC == 76)
PWM16_1_WritePeriod(SILENT);
else if(TC == 77)
PWM16_1_WritePeriod(DD);
else if(TC == 89)
PWM16_1_WritePeriod(SILENT);
}
else if(n == 4){//チャルメラの歌
TC += 1;
PWM16_1_WritePulseWidth(PW);
if(TC == 1){
LCD_1_Start();
LCD_1_Position(0,0);
LCD_1_PrCString("charumera");
LCD_1_Position(1,0);
LCD_1_PrCString("song: ojisan");
}
if(TC == 1)
PWM16_1_WritePeriod(D);
else if(TC == 3)
PWM16_1_WritePeriod(L);
else if(TC == 5)
PWM16_1_WritePeriod(M);
else if(TC == 11)
PWM16_1_WritePeriod(L);
else if(TC == 13)
PWM16_1_WritePeriod(D);
else if(TC == 17)
PWM16_1_WritePeriod(SILENT);
else if(TC == 23)
PWM16_1_WritePeriod(D);
else if(TC == 24)
PWM16_1_WritePeriod(L);
else if(TC == 25)
PWM16_1_WritePeriod(M);
else if(TC == 26)
PWM16_1_WritePeriod(L);
else if(TC == 27)
PWM16_1_WritePeriod(D);
else if(TC == 28)
PWM16_1_WritePeriod(L);
else if(TC == 37)
PWM16_1_WritePeriod(SILENT);
}
else if(n == 5){//パイレーツ
TC += 1;
PWM16_1_WritePulseWidth(PW);
if(TC == 1){
LCD_1_Start();
LCD_1_Position(0,0);
LCD_1_PrCString("He's a pirate");
LCD_1_Position(1,0);
LCD_1_PrCString("song: David");
}
else if(TC == 3)
PWM16_1_WritePeriod(D);
else if(TC == 5)
PWM16_1_WritePeriod(L);
else if(TC == 8)
PWM16_1_WritePeriod(L);
else if(TC == 10)
PWM16_1_WritePeriod(L);
else if(TC == 11)
PWM16_1_WritePeriod(M);
else if(TC == 12)
PWM16_1_WritePeriod(F);
else if(TC == 14)
PWM16_1_WritePeriod(F);
else if(TC == 17)
PWM16_1_WritePeriod(F);
else if(TC == 18)
PWM16_1_WritePeriod(S);
else if(TC == 20)
PWM16_1_WritePeriod(M);
else if(TC == 22)
PWM16_1_WritePeriod(M);
else if(TC == 25)
PWM16_1_WritePeriod(L);
else if(TC == 26)
PWM16_1_WritePeriod(D);
else if(TC == 28)
PWM16_1_WritePeriod(L);
else if(TC == 32)
PWM16_1_WritePeriod(RR);
else if(TC == 34)
PWM16_1_WritePeriod(D);
else if(TC ==36)
PWM16_1_WritePeriod(L);
else if(TC ==38)
PWM16_1_WritePeriod(L);
else if(TC == 41)
PWM16_1_WritePeriod(L);
else if(TC == 42)
PWM16_1_WritePeriod(M);
else if(TC == 44)
PWM16_1_WritePeriod(F);
else if(TC == 46)
PWM16_1_WritePeriod(F);
else if(TC == 49)
PWM16_1_WritePeriod(F);
else if(TC == 50)
PWM16_1_WritePeriod(S);
else if(TC == 52)
PWM16_1_WritePeriod(M);
else if(TC == 54)
PWM16_1_WritePeriod(M);
else if(TC == 57)
PWM16_1_WritePeriod(L);
else if(TC == 58)
PWM16_1_WritePeriod(D);
else if(TC == 60)
PWM16_1_WritePeriod(L);
else if(TC == 64)
PWM16_1_WritePeriod(SILENT);
else if(TC == 49)
PWM16_1_WritePeriod(F);
else if(TC == 50)
PWM16_1_WritePeriod(S);
else if(TC == 52)
PWM16_1_WritePeriod(M);
else if(TC == 54)
PWM16_1_WritePeriod(M);
else if(TC == 57)
PWM16_1_WritePeriod(L);
else if(TC == 58)
PWM16_1_WritePeriod(D);
else if(TC == 60)
PWM16_1_WritePeriod(L);
else if(TC == 64)
PWM16_1_WritePeriod(SILENT);
}
else if(n == 6){//国歌
TC += 1;
PWM16_1_WritePulseWidth(PW);
PWM16_2_WritePulseWidth(PW);
if(TC == 1){
LCD_1_Start();
LCD_1_PrCString("kimigayo");
}
else if(TC == 2){
PWM16_1_WritePeriod(L); PWM16_2_WritePeriod(L/2); } else if(TC==9){ PWM16_1_WritePeriod(D); PWM16_2_WritePeriod(D/2); } else if(TC==17){ PWM16_1_WritePeriod(L); PWM16_2_WritePeriod(L/2); } else if(TC==25){ PWM16_1_WritePeriod(M); PWM16_2_WritePeriod(M/2);//OK } else if(TC==33){ PWM16_1_WritePeriod(S); PWM16_2_WritePeriod(S/2); } else if(TC==41){ PWM16_1_WritePeriod(M); PWM16_2_WritePeriod(M/2); } else if(TC==49){ PWM16_1_WritePeriod(L); PWM16_2_WritePeriod(L/2);//OK } else if(TC==65){ PWM16_1_WritePeriod(M); PWM16_2_WritePeriod(M/2); LCD_1_Init(); } else if(TC==73){ PWM16_1_WritePeriod(S); PWM16_2_WritePeriod(S/2); } else if(TC==81){ PWM16_1_WritePeriod(R); PWM16_2_WritePeriod(R/2); } else if(TC==87){ PWM16_1_WritePeriod(S); PWM16_2_WritePeriod(S/2); } else if(TC==92){ PWM16_1_WritePeriod(R); PWM16_2_WritePeriod(R/2);// } else if(TC==100){ PWM16_1_WritePeriod(LL); PWM16_2_WritePeriod(LL/2); LCD_1_Init(); } else if(TC==108){ PWM16_1_WritePeriod(C); PWM16_2_WritePeriod(C/2); } else if(TC==115){ PWM16_1_WritePeriod(R); PWM16_2_WritePeriod(R/2); } else if(TC==123){ PWM16_1_WritePeriod(S);//1行目 PWM16_2_WritePeriod(S/2); } else if(TC==131){ PWM16_1_WritePeriod(M); PWM16_2_WritePeriod(M/2); LCD_1_Init(); } else if(TC==139){ PWM16_1_WritePeriod(S); PWM16_2_WritePeriod(S/2); } else if(TC==147){ PWM16_1_WritePeriod(R); PWM16_2_WritePeriod(R/2);// } else if(TC==163){ PWM16_1_WritePeriod(LL); PWM16_2_WritePeriod(L/2); } else if(TC==171){ PWM16_1_WritePeriod(DD); PWM16_2_WritePeriod(R/2); } else if(TC==178){ PWM16_1_WritePeriod(LL); PWM16_2_WritePeriod(L/2);// } else if(TC==194){ PWM16_1_WritePeriod(M); PWM16_2_WritePeriod(L/2); LCD_1_Init(); } else if(TC==202){ PWM16_1_WritePeriod(S); PWM16_2_WritePeriod(S/2); } else if(TC==210){ PWM16_1_WritePeriod(R); PWM16_2_WritePeriod(R/2); } else if(TC==218){ PWM16_1_WritePeriod(S); PWM16_2_WritePeriod(S/2);// } else if(TC==226){ PWM16_1_WritePeriod(M); PWM16_2_WritePeriod(M/2); LCD_1_Init(); } else if(TC==240){ PWM16_1_WritePeriod(S); PWM16_2_WritePeriod(S/2); } else if(TC==245){ PWM16_1_WritePeriod(L);//2 PWM16_2_WritePeriod(L/2); } else if(TC==261){ PWM16_1_WritePeriod(R); PWM16_2_WritePeriod(F); LCD_1_Init(); } else if(TC==269){ PWM16_1_WritePeriod(DD); PWM16_2_WritePeriod(R); } else if(TC==277){ PWM16_1_WritePeriod(LL); PWM16_2_WritePeriod(R);// } else if(TC==293){ PWM16_1_WritePeriod(DD); PWM16_2_WritePeriod(DD/2); LCD_1_Init(); } else if(TC==301){ PWM16_1_WritePeriod(LL); PWM16_2_WritePeriod(LL/2); } else if(TC==309){ PWM16_1_WritePeriod(R); PWM16_2_WritePeriod(R/2); } else if(TC==317){ PWM16_1_WritePeriod(S); PWM16_2_WritePeriod(S/2);// } else if(TC==325){ PWM16_1_WritePeriod(R); PWM16_2_WritePeriod(R/2); } else if(TC==333){ PWM16_1_WritePeriod(S); PWM16_2_WritePeriod(S/2); } else if(TC==337){ PWM16_1_WritePeriod(M); PWM16_2_WritePeriod(M/2); } else if(TC==341){ PWM16_1_WritePeriod(L); PWM16_2_WritePeriod(L/2); } else if(TC==356) { PWM16_1_WritePeriod(SILENT); PWM16_2_WritePeriod(SILENT);
}
}
}
void play(void)
{
M8C_EnableGInt;
PWM16_1_Start(); Timer16_1_EnableInt(); Timer16_1_Start(); while(1) {};
}
void main(void)
{
char * strPtr;
UART_CmdReset();
UART_IntCntl(UART_ENABLE_RX_INT);
Counter8_WritePeriod(155);
Counter8_WriteCompareValue(77);
Counter8_Start();
UART_Start(UART_PARITY_NONE);
M8C_EnableGInt;
PWM16_1_Start();
UART_CPutString("\r\nPSoC Music\r\n");
while(1)//PCからのコマンド判定
{
CN++;
if(UART_bCmdCheck())
{
if(strPtr = UART_szGetParam())
{ UART_CPutString("Command = > "); UART_PutString(strPtr); UART_CPutString("<\r\n"); if(*strPtr=='m'){ //明治大学校歌 n=1; play(); } else if(*strPtr=='a'){ //会いたかった n=2; play(); } else if(*strPtr=='b'){ //be my baby n=3; play(); } else if(*strPtr=='c'){ // チャルメラ n=4; play(); } else if(*strPtr=='d'){ //パイレーツ n=5; play(); } else if(*strPtr=='e'){ //国歌 n=6; play(); } else if(*strPtr=='r'){ //ランダムで上のどれかを表示 srand(CN); n=rand()%6 + 1; play(); } }
UART_CmdReset();
}
}
}
考察
私が参考にしたラボは、hello_world、pwm_uart_2、timer_pwm2
参考にしたチームは、チーム1627、チーム1536 である。
工夫した点としては
曲を通信によってキーボードで選択できるようにしたことと、
選択された曲ごとにLCDに、作者と曲名を表示させるようにした。
乱数を発生させて曲をランダムで再生させることができるようにした。
しかし、rand関数でただ乱数を発生させてしまうと、同じ乱数を繰り返してしまうので、srand関数で乱数の発生系列を毎回変更するようにした。
また、より音楽を楽しめるようにスピーカーを2つつなぎ、オクターブが違う音を同時に再生させるようにした。
改善点としては
スピーカーが2つあることを生かして、きれいなハモリを奏でられるようにすること。
音楽再生中にLCDに歌詞を表示すること
さらにスピーカーを増やしていけば、和音を鳴らすこともできるだろう。
また、音楽再生機なので、一時停止や再生がつけれられれば、もっと質が高い音楽再生機になると思った。
一度曲が終わると、resetしないかぎり連続して曲を再生させる事が出来ないので、連続再生機能をつけること。
- 最終更新:2017-05-16 17:46:53