チーム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();
}
}
}
1720.PNG

考察

私が参考にしたラボは、hello_world、pwm_uart_2、timer_pwm2
  参考にしたチームは、チーム1627、チーム1536 である。

工夫した点としては
  曲を通信によってキーボードで選択できるようにしたことと、
  選択された曲ごとにLCDに、作者と曲名を表示させるようにした。
  乱数を発生させて曲をランダムで再生させることができるようにした。
  しかし、rand関数でただ乱数を発生させてしまうと、同じ乱数を繰り返してしまうので、srand関数で乱数の発生系列を毎回変更するようにした。
  また、より音楽を楽しめるようにスピーカーを2つつなぎ、オクターブが違う音を同時に再生させるようにした。

改善点としては
  スピーカーが2つあることを生かして、きれいなハモリを奏でられるようにすること。
  音楽再生中にLCDに歌詞を表示すること
  さらにスピーカーを増やしていけば、和音を鳴らすこともできるだろう。
  また、音楽再生機なので、一時停止や再生がつけれられれば、もっと質が高い音楽再生機になると思った。
   一度曲が終わると、resetしないかぎり連続して曲を再生させる事が出来ないので、連続再生機能をつけること。
  

  • 最終更新:2017-05-16 17:46:53

このWIKIを編集するにはパスワード入力が必要です

認証パスワード