チーム1527

課題名

かごめかごめオンリー歌詞付き再生機

研究者名

Yuya Osaki
Takuya Osima

概要

timer_pwm2とhello_worldを組み合わせて作成した。

かごめかごめを演奏する。

メロディーを流すと同時に歌詞を表示するようにした。

使用機器

PSoC基盤 1個
MiniProg 1個
ジャンパー線 2本
スピーカー 1個

ソースコード


#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){
LCD_1_Position(0,0);
      LCD_1_PrCString("start!");}
else if(TC == 2){
PWM16_1_WritePeriod(R);
LCD_1_Start();
     LCD_1_PrCString("ka");}
else if(TC == 5)
PWM16_1_WritePeriod(SILENT);
else if(TC == 6){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("go");}
else if(TC == 8)
PWM16_1_WritePeriod(SILENT);
else if(TC == 9){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(c);
     LCD_1_PrCString("me");}
else if(TC == 11)
PWM16_1_WritePeriod(SILENT);
else if(TC == 12){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("ka");}
else if(TC == 14)
PWM16_1_WritePeriod(SILENT);
else if(TC == 15){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("go");}
else if(TC == 17)
PWM16_1_WritePeriod(SILENT);
else if(TC == 18){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("me");}
else if(TC == 20)
PWM16_1_WritePeriod(SILENT);
else if(TC == 24){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("ka");}
else if(TC == 26)
PWM16_1_WritePeriod(SILENT);
else if(TC == 27){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("go");}
else if(TC == 28)
PWM16_1_WritePeriod(SILENT);
else if(TC == 29){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("no");}
else if(TC == 30)
PWM16_1_WritePeriod(SILENT);
else if(TC == 31){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("na");}
else if(TC == 33)
PWM16_1_WritePeriod(SILENT);
else if(TC == 35){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(S);
     LCD_1_PrCString("ka");}
else if(TC == 36)
PWM16_1_WritePeriod(SILENT);
else if(TC == 37){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(S);
     LCD_1_PrCString("no");}
else if(TC == 38)
PWM16_1_WritePeriod(SILENT);
else if(TC == 39){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("to");}
else if(TC == 41)
PWM16_1_WritePeriod(SILENT);
else if(TC == 42){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("ri");}
else if(TC == 44)
PWM16_1_WritePeriod(SILENT);
else if(TC == 45){
PWM16_1_WritePeriod(S);
LCD_1_Start();
     LCD_1_PrCString("-");}
else if(TC == 46)
PWM16_1_WritePeriod(SILENT);
else if(TC == 47){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(M);
     LCD_1_PrCString("ha");}
else if(TC == 48)
PWM16_1_WritePeriod(SILENT);
else if(TC == 51){
PWM16_1_WritePeriod(R);
     LCD_1_Start();
      LCD_1_PrCString("i");}
else if(TC == 53)
PWM16_1_WritePeriod(SILENT);
else if(TC == 54){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(S);
     LCD_1_PrCString("tu");}
else if(TC == 56)
PWM16_1_WritePeriod(SILENT);
else if(TC == 57){
PWM16_1_WritePeriod(R);
LCD_1_Start();
     LCD_1_PrCString("i");}
else if(TC == 59)
PWM16_1_WritePeriod(SILENT);
else if(TC == 60){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(S);
     LCD_1_PrCString("tu");}
else if(TC == 62)
PWM16_1_WritePeriod(SILENT);
else if(TC == 63){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("de");}
else if(TC == 65)
PWM16_1_WritePeriod(SILENT);
else if(TC == 66){
PWM16_1_WritePeriod(R);
LCD_1_Start();
     LCD_1_PrCString("a");}
else if(TC == 68)
PWM16_1_WritePeriod(SILENT);
else if(TC == 69){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(M);
LCD_1_PrCString("u");}
else if(TC == 70)
PWM16_1_WritePeriod(SILENT);
else if(TC == 72){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("yo");}
else if(TC == 74)
PWM16_1_WritePeriod(SILENT);
else if(TC == 75){
PWM16_1_WritePeriod(R);
LCD_1_Start();
     LCD_1_PrCString("a");}
else if(TC == 77)
PWM16_1_WritePeriod(SILENT);
else if(TC == 78){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("ke");}
else if(TC == 80)
PWM16_1_WritePeriod(SILENT);
else if(TC == 81){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(c);
     LCD_1_PrCString("no");}
else if(TC == 83)
PWM16_1_WritePeriod(SILENT);
else if(TC == 84){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("ba");}
else if(TC == 86)
PWM16_1_WritePeriod(SILENT);
else if(TC == 87){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("nn");}
else if(TC == 89)
PWM16_1_WritePeriod(SILENT);
else if(TC == 90){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("ni");}
else if(TC == 92)
PWM16_1_WritePeriod(SILENT);
else if(TC == 96){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("tu");}
else if(TC == 98)
PWM16_1_WritePeriod(SILENT);
else if(TC == 99){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(S);
     LCD_1_PrCString("ru");}
else if(TC == 100)
PWM16_1_WritePeriod(SILENT);
else if(TC == 101){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(S);
     LCD_1_PrCString("to");}
else if(TC == 102)
PWM16_1_WritePeriod(SILENT);
else if(TC == 103){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("ka");}
else if(TC == 105)
PWM16_1_WritePeriod(SILENT);
else if(TC == 106){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(S);
     LCD_1_PrCString("me");}
else if(TC == 107)
PWM16_1_WritePeriod(SILENT);
else if(TC == 108){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(S);
     LCD_1_PrCString("ga");}
else if(TC == 109)
PWM16_1_WritePeriod(SILENT);
else if(TC == 110){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("su");}
else if(TC == 112)
PWM16_1_WritePeriod(SILENT);
else if(TC == 113){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("be");}
else if(TC == 114)
PWM16_1_WritePeriod(SILENT);
else if(TC == 115){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(S);
     LCD_1_PrCString("ltu");}
else if(TC == 116)
PWM16_1_WritePeriod(SILENT);
else if(TC == 117){
PWM16_1_WritePeriod(M);
LCD_1_Start();
     LCD_1_PrCString("ta");}
else if(TC == 118)
PWM16_1_WritePeriod(SILENT);
else if(TC == 122){
PWM16_1_WritePeriod(R);
LCD_1_Start();
     LCD_1_PrCString("u");}
else if(TC == 123)
PWM16_1_WritePeriod(SILENT);
else if(TC == 124){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
LCD_1_PrCString("si");}
else if(TC == 125)
PWM16_1_WritePeriod(SILENT);
else if(TC == 126){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("ro");}
else if(TC == 127)
PWM16_1_WritePeriod(SILENT);
else if(TC == 128){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("no");}
else if(TC == 129)
PWM16_1_WritePeriod(SILENT);
else if(TC == 130){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("syou");}
else if(TC == 132)
PWM16_1_WritePeriod(SILENT);
else if(TC == 133){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(c);
     LCD_1_PrCString("menn");}
else if(TC == 135)
PWM16_1_WritePeriod(SILENT);
else if(TC == 136){
PWM16_1_WritePeriod(R);
LCD_1_Start();
     LCD_1_PrCString("da");}
else if(TC == 139)
PWM16_1_WritePeriod(SILENT);
else if(TC == 140){
PWM16_1_WritePeriod(S);
LCD_1_Start();
     LCD_1_PrCString("-");}
else if(TC == 141)
PWM16_1_WritePeriod(SILENT);
else if(TC == 142){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(R);
     LCD_1_PrCString("re");}  
else if(TC == 143){
LCD_1_Position(0,0);
PWM16_1_WritePeriod(SILENT);
     LCD_1_PrCString("end!");}
      

}


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


考察


当初はスピーカーでモスキート音を流し、Processingを用いてPCに文字や図形を映す装置を作成しようとしたが
モスキート音の周波数が授業内で使用したスピーカーの範囲外でモスキート音を流すことができなかったので
歌詞付きの音楽プレーヤーを作ることにした。

より本物のかごめかごめに近づけるために、音と音の間を楽譜を見ながら調節するのが大変だった。
時間があればスイッチのON/OFFでメロディーを流したりキーボードで打ち込みその入力に対するメロディーを流せるようにするなどの工夫をしたい。


  • 最終更新:2015-06-16 14:17:37

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

認証パスワード