チーム2051

課題名

曲の演奏

研究者名

Kaito Kaji

概要[#a6651ac0]

timer_pwm2を参考にして
カエルの歌が流れるものを作成した。
チーム2028を参考にしました。

使用機器

PSoC MiniProg
PSoC基盤
スピーカー
USBケーブル

ソースコード

#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; // Pulse Width
int SILENT=0, D=229, L=204, M=182, F=172, S=153, R=136, C=121, DD=115;
int TC=0; //Time Count

void myISR(void)
{
TC += 1; //TC = TC +1
PWM16_1_WritePulseWidth(PW);
if(TC == 1){
LCD_1_Init();
LCD_1_Position(0,0);
LCD_1_PrCString("kaerunouta");
LCD_1_Position(1,0);
LCD_1_PrCString("kaerunoutaga");
PWM16_1_WritePeriod(D);
}
else if(TC == 4)
PWM16_1_WritePeriod(L);
else if (TC == 8)
PWM16_1_WritePeriod(M);
else if(TC == 12)
PWM16_1_WritePeriod(F);
else if(TC == 16)
PWM16_1_WritePeriod(M);
else if (TC == 20)
PWM16_1_WritePeriod(L);
else if(TC == 24)
PWM16_1_WritePeriod(D);
else if(TC == 30)
PWM16_1_WritePeriod(SILENT);

else if(TC == 31){
LCD_1_Init();
LCD_1_Position(0,0);
LCD_1_PrCString("kaerunouta");
LCD_1_Position(1,0);
LCD_1_PrCString("kikoetekuruyo");
PWM16_1_WritePeriod(M);
}
else if(TC == 35)
PWM16_1_WritePeriod(F);
else if (TC == 39)
PWM16_1_WritePeriod(S);
else if(TC == 43)
PWM16_1_WritePeriod(R);
else if(TC == 47)
PWM16_1_WritePeriod(S);
else if (TC == 51)
PWM16_1_WritePeriod(F);
else if(TC == 55)
PWM16_1_WritePeriod(M);
else if (TC == 61)
PWM16_1_WritePeriod(SILENT);

else if(TC == 62){
LCD_1_Init();
LCD_1_Position(0,0);
LCD_1_PrCString("kaerunouta");
LCD_1_Position(1,0);
LCD_1_PrCString("gua gua gua gua");
PWM16_1_WritePeriod(D);
}
else if(TC == 69)
PWM16_1_WritePeriod(SILENT);
else if(TC == 70)
PWM16_1_WritePeriod(D);
else if(TC == 77)
PWM16_1_WritePeriod(SILENT);
else if(TC == 78)
PWM16_1_WritePeriod(D);
else if(TC == 85)
PWM16_1_WritePeriod(SILENT);
else if(TC == 86)
PWM16_1_WritePeriod(D);
else if(TC == 93)
PWM16_1_WritePeriod(SILENT);

else if(TC == 94){
LCD_1_Init();
LCD_1_Position(0,0);
LCD_1_PrCString("kaerunouta");
LCD_1_Position(1,0);
LCD_1_PrCString("gero gero");
PWM16_1_WritePeriod(D);
}
else if(TC == 95)
PWM16_1_WritePeriod(SILENT);
else if(TC == 96)
PWM16_1_WritePeriod(D);
else if(TC == 97)
PWM16_1_WritePeriod(SILENT);

else if(TC == 98)
PWM16_1_WritePeriod(L);
else if(TC == 99)
PWM16_1_WritePeriod(SILENT);
else if(TC == 100)
PWM16_1_WritePeriod(L);
else if(TC == 101)
PWM16_1_WritePeriod(SILENT);

else if(TC == 102){
LCD_1_Init();
LCD_1_Position(0,0);
LCD_1_PrCString("kaerunouta");
LCD_1_Position(1,0);
LCD_1_PrCString("gero gero");
PWM16_1_WritePeriod(M);
}
else if(TC == 103)
PWM16_1_WritePeriod(SILENT);
else if(TC == 104)
PWM16_1_WritePeriod(M);
else if(TC == 105)
PWM16_1_WritePeriod(SILENT);

else if(TC == 106)
PWM16_1_WritePeriod(F);
else if(TC == 107)
PWM16_1_WritePeriod(SILENT);
else if(TC == 108)
PWM16_1_WritePeriod(F);
else if(TC == 109)
PWM16_1_WritePeriod(SILENT);

else if (TC == 110){
LCD_1_Init();
LCD_1_Position(0,0);
LCD_1_PrCString("kaerunouta");
LCD_1_Position(1,0);
LCD_1_PrCString("gua gua gua");
PWM16_1_WritePeriod(M);
}
else if(TC == 114)
PWM16_1_WritePeriod(L);
else if (TC == 118)
PWM16_1_WritePeriod(D);
else if(TC == 122)
PWM16_1_WritePeriod(SILENT);
}


void main(void){
LCD_1_Start();
LCD_1_Position(0,0);
LCD_1_PrCString("kaerunouta");
M8C_EnableGInt;
PWM16_1_Start();
Timer16_1_EnableInt();
Timer16_1_Start();
while(1)
{ };
}


考察

続けて同じ音が入るときSILENTを間に入れないと一音と認識されてしまうので気を付ける。
また、歌詞を日本語にできるとなおよい。

  • 最終更新:2020-11-24 14:34:19

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

認証パスワード