チーム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