チーム2121

課題名

心の癒しsong

研究者名

Yu Kato
Toki kawakami  

使用基盤

・PSoC評価基盤
・スピーカー

ソースコード


#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#pragma interrupt_handler myISR
int PW =125;
int SILENT=0,D=229,L=204,M=182,F=172,S=153,R=136,C=121,DD=115;
int TC=0;

void myISR(void)
{
TC +=1;
PWM16_1_WritePulseWidth(PW);
if(TC == 1)
PWM16_1_WritePeriod(D);
else if(TC == 3)
PWM16_1_WritePeriod(SILENT);
else if(TC == 4)
PWM16_1_WritePeriod(D);
else if(TC == 6)
PWM16_1_WritePeriod(SILENT);
else if(TC == 7)
PWM16_1_WritePeriod(S);
else if(TC == 9)
PWM16_1_WritePeriod(SILENT);
else if(TC == 10)
PWM16_1_WritePeriod(S);
else if(TC == 12)
PWM16_1_WritePeriod(SILENT);
else if(TC == 13)
PWM16_1_WritePeriod(R);
else if(TC == 15)
PWM16_1_WritePeriod(SILENT);
else if(TC == 16)
PWM16_1_WritePeriod(R);
else if(TC == 18)
PWM16_1_WritePeriod(SILENT);
else if(TC == 19)
PWM16_1_WritePeriod(S);
else if(TC == 24)
PWM16_1_WritePeriod(SILENT);
else if(TC == 25)
PWM16_1_WritePeriod(F);
else if(TC == 27)
PWM16_1_WritePeriod(SILENT);
else if(TC == 28)
PWM16_1_WritePeriod(F);
else if(TC == 30)
PWM16_1_WritePeriod(SILENT);
else if(TC == 31)
PWM16_1_WritePeriod(M);
else if(TC == 33)
PWM16_1_WritePeriod(SILENT);
else if(TC == 34)
PWM16_1_WritePeriod(M);
else if(TC == 36)
PWM16_1_WritePeriod(SILENT);
else if(TC == 37)
PWM16_1_WritePeriod(L);
else if(TC == 39)
PWM16_1_WritePeriod(SILENT);
else if(TC == 40)
PWM16_1_WritePeriod(L);
else if(TC == 42)
PWM16_1_WritePeriod(SILENT);
else if(TC == 43)
PWM16_1_WritePeriod(D);
else if(TC == 48)
PWM16_1_WritePeriod(SILENT);
else if(TC == 49)
PWM16_1_WritePeriod(S);
else if(TC == 51)
PWM16_1_WritePeriod(SILENT);
else if(TC == 52)
PWM16_1_WritePeriod(S);
else if(TC == 54)
PWM16_1_WritePeriod(SILENT);
else if(TC == 55)
PWM16_1_WritePeriod(F);
else if(TC == 57)
PWM16_1_WritePeriod(SILENT);
else if(TC == 58)
PWM16_1_WritePeriod(F);
else if(TC == 60)
PWM16_1_WritePeriod(SILENT);
else if(TC == 61)
PWM16_1_WritePeriod(M);
else if(TC == 63)
PWM16_1_WritePeriod(SILENT);
else if(TC == 64)
PWM16_1_WritePeriod(M);
else if(TC == 66)
PWM16_1_WritePeriod(SILENT);
else if(TC == 67)
PWM16_1_WritePeriod(L);
else if(TC == 72)
PWM16_1_WritePeriod(SILENT);
else if(TC == 73)
PWM16_1_WritePeriod(S);
else if(TC == 75)
PWM16_1_WritePeriod(SILENT);
else if(TC == 76)
PWM16_1_WritePeriod(S);
else if(TC == 78)
PWM16_1_WritePeriod(SILENT);
else if(TC == 79)
PWM16_1_WritePeriod(F);
else if(TC == 81)
PWM16_1_WritePeriod(SILENT);
else if(TC == 82)
PWM16_1_WritePeriod(F);
else if(TC == 84)
PWM16_1_WritePeriod(SILENT);
else if(TC == 85)
PWM16_1_WritePeriod(M);
else if(TC == 87)
PWM16_1_WritePeriod(SILENT);
else if(TC == 88)
PWM16_1_WritePeriod(M);
else if(TC == 90)
PWM16_1_WritePeriod(SILENT);
else if(TC == 91)
PWM16_1_WritePeriod(L);
else if(TC == 96)
PWM16_1_WritePeriod(SILENT);
else if(TC == 97)
PWM16_1_WritePeriod(D);
else if(TC == 99)
PWM16_1_WritePeriod(SILENT);
else if(TC == 100)
PWM16_1_WritePeriod(D);
else if(TC == 102)
PWM16_1_WritePeriod(SILENT);
else if(TC == 103)
PWM16_1_WritePeriod(S);
else if(TC == 105)
PWM16_1_WritePeriod(SILENT);
else if(TC == 106)
PWM16_1_WritePeriod(S);
else if(TC == 108)
PWM16_1_WritePeriod(SILENT);
else if(TC == 109)
PWM16_1_WritePeriod(R);
else if(TC == 111)
PWM16_1_WritePeriod(SILENT);
else if(TC == 112)
PWM16_1_WritePeriod(R);
else if(TC == 114)
PWM16_1_WritePeriod(SILENT);
else if(TC == 115)
PWM16_1_WritePeriod(S);
else if(TC == 120)
PWM16_1_WritePeriod(SILENT);
else if(TC == 121)
PWM16_1_WritePeriod(F);
else if(TC == 123)
PWM16_1_WritePeriod(SILENT);
else if(TC == 124)
PWM16_1_WritePeriod(F);
else if(TC == 126)
PWM16_1_WritePeriod(SILENT);
else if(TC == 127)
PWM16_1_WritePeriod(M);
else if(TC == 129)
PWM16_1_WritePeriod(SILENT);
else if(TC == 130)
PWM16_1_WritePeriod(M);
else if(TC == 132)
PWM16_1_WritePeriod(SILENT);
else if(TC == 133)
PWM16_1_WritePeriod(L);
else if(TC == 135)
PWM16_1_WritePeriod(SILENT);
else if(TC == 136)
PWM16_1_WritePeriod(L);
else if(TC == 138)
PWM16_1_WritePeriod(SILENT);
else if(TC == 139)
PWM16_1_WritePeriod(D);
else if(TC == 144)
PWM16_1_WritePeriod(SILENT);

if(TC == 1){
LCD_1_Position(0,0);
LCD_1_PrCString("start");
LCD_1_Position(1,0);
LCD_1_PrCString("                  ");
}

else if(TC > 1 && TC <=47){
LCD_1_Position(0,0);
LCD_1_PrCString("kirakirahikaru");
LCD_1_Position(1,0);
LCD_1_PrCString("osoranohoshiyo");
}

else if(TC == 48){
LCD_1_Position(0,0);
LCD_1_PrCString("                  ");
LCD_1_Position(1,0);
LCD_1_PrCString("                  ");
}

else if(TC >= 49 && TC <=95){
LCD_1_Position(0,0);
LCD_1_PrCString("mabatakishiteha");
LCD_1_Position(1,0);
LCD_1_PrCString("minnawomiteru");
}

else if(TC == 96){
LCD_1_Position(0,0);
LCD_1_PrCString("                  ");
LCD_1_Position(1,0);
LCD_1_PrCString("                  ");
}

else if(TC >= 97 && TC <=143){
LCD_1_Position(0,0);
LCD_1_PrCString("kirakirahikaru");
LCD_1_Position(1,0);
LCD_1_PrCString("osoranohoshiyo");
}

else if(TC == 144){
LCD_1_Position(0,0);
LCD_1_PrCString("                  ");
LCD_1_Position(1,0);
LCD_1_PrCString("                  ");
}

else if(TC == 145){
LCD_1_Position(0,0);
LCD_1_PrCString("end");
LCD_1_Position(1,0);
LCD_1_PrCString("                  ");
}

}


void main(void)
{
LCD_1_Start();
M8C_EnableGInt;
PWM16_1_Start();
Timer16_1_EnableInt();
Timer16_1_Start();
while(1)
{};
  // M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts
   // Insert your main routine code here.
}


考察

今回はtimer_pwm2とhello worldとチーム172Aを参考に、心の癒しsongを作成した。
工夫した点としては、チーム172Aのきらきら星は、同じ音が連続で出るとき、音がつながってしまっていた(例えば、ドの音が2回連続で出るとき、ド、ドではなく、ドーというかんじで音が出るようになってた。)ので、音と音の間に何も音を出さないという空白を置くことで改善した。それにより、より精度が高くした。そのほかに、そのメロディーに合う歌詞が流れるように条件文を用いて表した。

  • 最終更新:2021-06-15 14:18:18

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

認証パスワード