チーム2112

課題名

天体観測うっせぇわ

研究者名

Akito Ando
Kenta Ishikawa

使用部品

基盤
PSoC MiniProg
スピーカー
ジャンパー線

概要

天体観測のサビ前とうっせぇわのサビを合わせました。

何が流れているかをLCDで表示しています。

ソースコード

#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,FF=172, FFS=162,SS=153,SSS=145, RR=136, RRS=129,CC=120,CC_=119,
D=114, DS=109, L=102, LF=109, LS=97, M=91, MF=96, F=86, F_F=88, FS=81,
S=76,S_S=72,SF=81, R=68, RF=72, RS=65, C=60, CF=65, DD=57, DDS=54, LL=51, LLF=54, MM=46, MMF=48;
int TC=0; //Time Count
void myISR(void)
{
TC += 1; //TC = TC +1
PWM16_1_WritePulseWidth(PW);
if (TC==1){PWM16_1_WritePeriod(LF);
LCD_Position(0,0);
LCD_PrCString("NOW PLAYING");
LCD_Position(1,0);
LCD_PrCString("tentaikansoku");}
else if (TC==4)PWM16_1_WritePeriod(CF);
else if (TC==5)PWM16_1_WritePeriod(RF);
else if (TC==8)PWM16_1_WritePeriod(LF);
else if (TC==9)PWM16_1_WritePeriod(CF);
else if (TC==10)PWM16_1_WritePeriod(RF);
else if (TC==12)PWM16_1_WritePeriod(LF);
else if (TC==13)PWM16_1_WritePeriod(CF);
else if (TC==14)PWM16_1_WritePeriod(RF);
else if (TC==15)PWM16_1_WritePeriod(F);
else if (TC==16)PWM16_1_WritePeriod(SF);
else if (TC==17)PWM16_1_WritePeriod(F);
else if (TC==18)PWM16_1_WritePeriod(MF);
else if (TC==19)PWM16_1_WritePeriod(MF);
else if (TC==21)PWM16_1_WritePeriod(SILENT);
else if (TC==22)PWM16_1_WritePeriod(LF);
else if (TC==23)PWM16_1_WritePeriod(MF);
else if (TC==24)PWM16_1_WritePeriod(F);
else if (TC==26)PWM16_1_WritePeriod(MF);
else if (TC==28)PWM16_1_WritePeriod(SF);
else if (TC==30)PWM16_1_WritePeriod(F);
else if (TC==32)PWM16_1_WritePeriod(LF);
else if (TC==35)PWM16_1_WritePeriod(CF);
else if (TC==36)PWM16_1_WritePeriod(RF);
else if (TC==39)PWM16_1_WritePeriod(LF);
else if (TC==40)PWM16_1_WritePeriod(CF);
else if (TC==41)PWM16_1_WritePeriod(RF);
else if (TC==43)PWM16_1_WritePeriod(F);
else if (TC==44)PWM16_1_WritePeriod(MMF);
else if (TC==45)PWM16_1_WritePeriod(LLF);
else if (TC==46)PWM16_1_WritePeriod(SILENT);
else if (TC==47)PWM16_1_WritePeriod(RF);
else if (TC==48)PWM16_1_WritePeriod(SF);
else if (TC==50)PWM16_1_WritePeriod(CF);
else if (TC==52)PWM16_1_WritePeriod(RF);
else if (TC==54)PWM16_1_WritePeriod(DD);
else if (TC==56)PWM16_1_WritePeriod(CF);
else if (TC==58)PWM16_1_WritePeriod(LLF);
else if (TC==60)PWM16_1_WritePeriod(DD);
else if (TC==62)PWM16_1_WritePeriod(RF);
else if (TC==64){PWM16_1_WritePeriod(SILENT);
TC = 10000;}
if (TC==10001){PWM16_1_WritePeriod(CC);
LCD_Position(0,0);
LCD_PrCString("NOW PLAYING");
LCD_Position(1,0);
LCD_PrCString("usseewa ");}
else if (TC==10003)PWM16_1_WritePeriod(C);
else if (TC==10005)PWM16_1_WritePeriod(CC);
else if (TC==10007)PWM16_1_WritePeriod(C);
else if (TC==10009)PWM16_1_WritePeriod(CC);
else if (TC==10011)PWM16_1_WritePeriod(C);
else if (TC==10013)PWM16_1_WritePeriod(CC);
else if (TC==10014)PWM16_1_WritePeriod(SILENT);
else if (TC==10015)PWM16_1_WritePeriod(CC);
else if (TC==10016)PWM16_1_WritePeriod(C);
else if (TC==10017)PWM16_1_WritePeriod(R);
else if (TC==10018)PWM16_1_WritePeriod(C);
else if (TC==10019)PWM16_1_WritePeriod(DDS);
else if (TC==10020)PWM16_1_WritePeriod(LL);
else if (TC==10021)PWM16_1_WritePeriod(DDS);
else if (TC==10022)PWM16_1_WritePeriod(C);
else if (TC==10023)PWM16_1_WritePeriod(R);
else if (TC==10025)PWM16_1_WritePeriod(FS);
else if (TC==10027)PWM16_1_WritePeriod(RS);
else if (TC==10029)PWM16_1_WritePeriod(C);
else if (TC==10032)PWM16_1_WritePeriod(CC);
else if (TC==10034)PWM16_1_WritePeriod(C);
else if (TC==10036)PWM16_1_WritePeriod(CC);
else if (TC==10038)PWM16_1_WritePeriod(C);
else if (TC==10040)PWM16_1_WritePeriod(CC);
else if (TC==10042)PWM16_1_WritePeriod(C);
else if (TC==10044)PWM16_1_WritePeriod(CC);
else if (TC==10046)PWM16_1_WritePeriod(SILENT);
else if (TC==10048)PWM16_1_WritePeriod(M);
else if (TC==10049)PWM16_1_WritePeriod(L);
else if (TC==10050)PWM16_1_WritePeriod(M);
else if (TC==10051)PWM16_1_WritePeriod(FS);
else if (TC==10052)PWM16_1_WritePeriod(M);
else if (TC==10053)PWM16_1_WritePeriod(L);
else if (TC==10054)PWM16_1_WritePeriod(CC);
else if (TC==10055)PWM16_1_WritePeriod(L);
else if (TC==10056)PWM16_1_WritePeriod(CC);
else if (TC==10057)PWM16_1_WritePeriod(C);
else if (TC==10058)PWM16_1_WritePeriod(R);
else if (TC==10059)PWM16_1_WritePeriod(C);
else if (TC==10061)PWM16_1_WritePeriod(SILENT);
else if (TC==10062)PWM16_1_WritePeriod(FS);
else if (TC==10064)PWM16_1_WritePeriod(M);
else if (TC==10065)PWM16_1_WritePeriod(L);
else if (TC==10066)PWM16_1_WritePeriod(CC);
else if (TC==10067)PWM16_1_WritePeriod(L);
else if (TC==10068)PWM16_1_WritePeriod(CC);
else if (TC==10071)PWM16_1_WritePeriod(SILENT);
else if (TC==10072)PWM16_1_WritePeriod(CC);
else if (TC==10073)PWM16_1_WritePeriod(CC_);
else if (TC==10074)PWM16_1_WritePeriod(L);
else if (TC==10075)PWM16_1_WritePeriod(M);
else if (TC==10076)PWM16_1_WritePeriod(FS);
else if (TC==10077)PWM16_1_WritePeriod(C);
else if (TC==10079)PWM16_1_WritePeriod(LL);
else if (TC==10080)PWM16_1_WritePeriod(DDS);
else if (TC==10082)PWM16_1_WritePeriod(C);
else if (TC==10083)PWM16_1_WritePeriod(SILENT);
else if (TC==10084)PWM16_1_WritePeriod(C);
else if (TC==10085)PWM16_1_WritePeriod(R);
else if (TC==10088)PWM16_1_WritePeriod(FS);
else if (TC==10089)PWM16_1_WritePeriod(M);
else if (TC==10090)PWM16_1_WritePeriod(L);
else if (TC==10092)PWM16_1_WritePeriod(CC);
else if (TC==10094)PWM16_1_WritePeriod(C);
else if (TC==10096)PWM16_1_WritePeriod(CC);
else if (TC==10098)PWM16_1_WritePeriod(C);
else if (TC==10100)PWM16_1_WritePeriod(CC);
else if (TC==10102)PWM16_1_WritePeriod(C);
else if (TC==10104)PWM16_1_WritePeriod(CC);
else if (TC==10106)PWM16_1_WritePeriod(SILENT);
else if (TC==10108)PWM16_1_WritePeriod(C);
else if (TC==10109)PWM16_1_WritePeriod(C);
else if (TC==10110)PWM16_1_WritePeriod(R);
else if (TC==10111)PWM16_1_WritePeriod(C);
else if (TC==10112)PWM16_1_WritePeriod(DDS);
else if (TC==10113)PWM16_1_WritePeriod(LL);
else if (TC==10114)PWM16_1_WritePeriod(DDS);
else if (TC==10115)PWM16_1_WritePeriod(C);
else if (TC==10116)PWM16_1_WritePeriod(R);
else if (TC==10117)PWM16_1_WritePeriod(C);
else if (TC==10119)PWM16_1_WritePeriod(SILENT);
else if (TC==10120)PWM16_1_WritePeriod(R);
else if (TC==10121)PWM16_1_WritePeriod(C);
else if (TC==10123)PWM16_1_WritePeriod(SILENT);
else if (TC==10124)PWM16_1_WritePeriod(R);
else if (TC==10125)PWM16_1_WritePeriod(R);
else if (TC==10126)PWM16_1_WritePeriod(R);
else if (TC==10127)PWM16_1_WritePeriod(SILENT);
else if (TC==10128)PWM16_1_WritePeriod(R);
else if (TC==10129)PWM16_1_WritePeriod(C);
else if (TC==10131)PWM16_1_WritePeriod(SILENT);
}
void main(void)
{
M8C_EnableGInt;
PWM16_1_Start();
Timer16_1_EnableInt();
Timer16_1_Start();
LCD_Start();
while(1)
{ };
}

モジュール・基盤

<ブロック図>
コメント 2021-05-18 165042.png


<各モジュール設定>
コメント 2021-05-18 165138.png
コメント 2021-05-18 165219.png
コメント 2021-05-18 165258.png

考察

音楽について
続けて同じ音がなる部分について解決できませんでした。
また、休符があるときに音楽に違和感が生じます。

これらはとても細かくTCを区切ることによって解決できるかもしれません。


LCDについて
歌詞を表記する際、前に表記されていたものを上書きする形で更新して表記するので
前に出した文字数分スペースをとり解決しました。
ひらがな、漢字に対応していなかったため、歌詞を追加できませんでした。

参考文献

timer_pwm2
lab2_pwm_lcd
チーム205B

  • 最終更新:2021-05-18 16:57:29

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

認証パスワード