チーム1961

課題名

変調Piasoc

研究者名

2-14-16 川本樹
2-14-4 石元 稜

内容

基盤についているVRを回してスピーカーから流れる音楽を自由に変調する。


使用機器

PSoc基盤 1個
PSoc Mini Prog 1個
スピーカー 3つ
ジャンパー線 1本

配線[#v525b1bc]

1946_kairo.JPG

ソースコード


#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,DS = 215,LS = 193,FS =162,SS =145 ,RS =128;

int zD=459, zL=409, zM=364, zF=344, zS=306, zR=273, zC=243,zDS = 434,zLS = 386,zFS = 325,zSS =289, zRS = 236;
int wD=918, wL=818, wM=728, wF=688, wS=612, wR=546, wC=486,wDS = 868,wLS = 772,wFS = 650,wSS =578, wRS = 472;
int xD=115, xL=102, xM=91, xF=86, xS= 76, xR=68, xC=61,xDD=57,xDS = 108,xLS = 96,xFS = 91,xSS = 72,xRS = 64;
int yD=57;
int TC=0; //Time Count


void myISR(void)
{
TC += 1; //TC = TC +1
PWM16_1_WritePulseWidth(D);
PWM16_2_WritePulseWidth(PW);
PWM16_3_WritePulseWidth(PW);

if(TC == 1){
  PWM16_1_WritePeriod(RS);
}
else if(TC == 5){
  PWM16_1_WritePeriod(xS);
   PWM16_2_WritePeriod(wLS);
}
else if(TC==9){
  PWM16_2_WritePeriod(zS);
   PWM16_3_WritePeriod(LS);
}
else if (TC==13){
  PWM16_2_WritePeriod(zRS);
   PWM16_3_WritePeriod(S);
}
else if (TC==17){
  PWM16_2_WritePeriod(zM);
   PWM16_3_WritePeriod(SILENT);
}
else if (TC == 21){
  PWM16_1_WritePeriod(xF);
   PWM16_2_WritePeriod(zR);
   PWM16_3_WritePeriod(L);
}
else if(TC == 25){
  PWM16_1_WritePeriod(xS);
   PWM16_2_WritePeriod(zC);
   PWM16_3_WritePeriod(SS);
}
else if(TC == 29){
  PWM16_1_WritePeriod(xF);
   PWM16_2_WritePeriod(wLS);
   PWM16_3_WritePeriod(SILENT);
}
else if(TC==33){
  PWM16_2_WritePeriod(zS);
   PWM16_3_WritePeriod(LS);
}
else if(TC==37){
PWM16_2_WritePeriod(zRS);
  PWM16_3_WritePeriod(S);
}

else if (TC == 41){
  PWM16_1_WritePeriod(xLS);
   PWM16_2_WritePeriod(wL);
   PWM16_3_WritePeriod(SILENT);
}
else if(TC==45){
  PWM16_2_WritePeriod(zS);
   PWM16_3_WritePeriod(LS);
}
else if (TC == 49){
  PWM16_2_WritePeriod(zRS);
   PWM16_3_WritePeriod(S);
 }
else if (TC == 53){
PWM16_1_WritePeriod(RS);
   PWM16_2_WritePeriod(zC);
   PWM16_3_WritePeriod(S);
}
else if(TC == 57){
  PWM16_1_WritePeriod(xS);
   PWM16_2_WritePeriod(wD);
   //PWM16_3_WritePeriod();
}
else if(TC == 59){
  //PWM16_1_WritePeriod();
   PWM16_2_WritePeriod(zM);
   PWM16_3_WritePeriod(zS);
}

else if(TC == 61){
  PWM16_1_WritePeriod(xD);
   PWM16_2_WritePeriod(S);
   PWM16_3_WritePeriod(zC);
}

else if(TC == 65){
  PWM16_1_WritePeriod(xDD);
   //PWM16_2_WritePeriod(M);
   PWM16_3_WritePeriod(R);
}
else if(TC == 67){
  //PWM16_1_WritePeriod(xS);
   PWM16_2_WritePeriod(M);
   PWM16_3_WritePeriod(S);
}
else if(TC == 69){
  PWM16_1_WritePeriod(xS);
   PWM16_2_WritePeriod(wF);
   PWM16_3_WritePeriod(D);
}
else if(TC == 73){
  PWM16_1_WritePeriod(xRS);
   //PWM16_2_WritePeriod(DS);
   PWM16_3_WritePeriod(zF);
}
else if(TC == 75){
  //PWM16_1_WritePeriod(M);
   PWM16_2_WritePeriod(DS);
   PWM16_3_WritePeriod(zF);
}
else if(TC == 77){
  //PWM16_1_WritePeriod(xR);
   PWM16_2_WritePeriod(M);
   PWM16_3_WritePeriod(wF);
}
else if(TC == 85){
  PWM16_1_WritePeriod(xR);
   //PWM16_2_WritePeriod(D);
   PWM16_3_WritePeriod(zF);
}
else if(TC == 87){
  //PWM16_1_WritePeriod(xS);
   PWM16_2_WritePeriod(D);
   PWM16_3_WritePeriod(zF);
}
else if(TC == 89){
  PWM16_1_WritePeriod(xS);
   PWM16_2_WritePeriod(F);
   PWM16_3_WritePeriod(zR);
}
else if(TC==93){
PWM16_1_WritePeriod(xF);
PWM16_2_WritePeriod(wRS);
}
else if(TC==97){
PWM16_2_WritePeriod(zF);
PWM16_3_WritePeriod(L);
}
else if(TC==101){
PWM16_2_WritePeriod(zRS);
PWM16_3_WritePeriod(SS);
}
else if(TC==105){
PWM16_1_WritePeriod(xS);
PWM16_2_WritePeriod(wC);
}
else if(TC==109){
PWM16_2_WritePeriod(zS);
PWM16_3_WritePeriod(F);
}
else if(TC==113){
PWM16_1_WritePeriod(xL);
PWM16_2_WritePeriod(L);
PWM16_3_WritePeriod(S);
}
else if(TC==117){
PWM16_1_WritePeriod(xLS);
PWM16_2_WritePeriod(zD);
}
else if(TC==121){
PWM16_2_WritePeriod(zS);
PWM16_3_WritePeriod(LS);
}
else if(TC==125){
PWM16_2_WritePeriod(D);
PWM16_3_WritePeriod(S);
}
else if(TC==129){
PWM16_1_WritePeriod(xD);
PWM16_2_WritePeriod(wR);
}
else if(TC==133){
PWM16_2_WritePeriod(zFS);
PWM16_3_WritePeriod(LS);
}
else if(TC==137){
PWM16_2_WritePeriod(D);
PWM16_3_WritePeriod(FS);
}
else if(TC==149){//1
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(wC);
}
else if(TC==153){//2
PWM16_1_WritePeriod(yD);
PWM16_2_WritePeriod(M);
PWM16_3_WritePeriod(zF);
}
else if(TC==157){//3
PWM16_1_WritePeriod(yD);
PWM16_2_WritePeriod(R);
PWM16_3_WritePeriod(zC);
}
else if(TC==165){//4
PWM16_1_WritePeriod(xC);
PWM16_2_WritePeriod(wD);
}
else if(TC==167){//5
PWM16_1_WritePeriod(xR);
}
else if(TC==169){//6
PWM16_1_WritePeriod(xS);
PWM16_2_WritePeriod(R);
PWM16_3_WritePeriod(zF);
}
else if(TC==171){//7
PWM16_1_WritePeriod(xR);
}
else if(TC==173){//8
PWM16_1_WritePeriod(xD);
PWM16_2_WritePeriod(R);
PWM16_3_WritePeriod(zC);
}
else if(TC==175){//9
PWM16_1_WritePeriod(xL);
}
else if(TC==177){//10
PWM16_1_WritePeriod(xM);
PWM16_2_WritePeriod(wM);
}
else if(TC==181){//11
PWM16_2_WritePeriod(M);
PWM16_3_WritePeriod(zS);
}
else if(TC==185){//12
PWM16_1_WritePeriod(S);
PWM16_2_WritePeriod(zC);
}
else if(TC==189){//13
PWM16_1_WritePeriod(SILENT);
PWM16_2_WritePeriod(zM);
}
else if(TC==193){//14
PWM16_2_WritePeriod(M);
PWM16_3_WritePeriod(zS);
}
else if(TC==197){//15
PWM16_1_WritePeriod(C);
PWM16_2_WritePeriod(S);
PWM16_3_WritePeriod(zC);
}
else if(TC==201){
PWM16_1_WritePeriod(SILENT);
PWM16_2_WritePeriod(SILENT);
PWM16_3_WritePeriod(SILENT);
}
}

void main(void)
{
  // M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts
   // Insert your main routine code here.

M8C_EnableGInt;
  PWM16_1_Start();
   PWM16_2_Start();
   PWM16_3_Start();
   Timer16_1_EnableInt();
   Timer16_1_Start();
   while(1){};
   /*PGA_Start(PGA_HIGHPOWER);
   ADCINC_Start(ADCINC_HIGHPOWER);
   ADCINC_GetSamples(0);
   while(1){
   while(ADCINC_fIsDataAvailable()==0);
   adc_data=ADCINC_wClearFlagGetData();
   }*/
}

考察

モジュールが6つのチップを用いた基盤においては基盤につなげた3つのスピーカーから音を鳴らすことに成功した。次にモジュールが16つのチップに付け変え、変調の機能を付け加えようといたが、そもそもスピーカーから音楽をならす段階から失敗した。ぴえん。

考えられる原因は以下の通り。
・ハード自体の不具合。
・モジュールを増やしたチップによる細かな設定が変わってしまったため。
・クロックから出るはずのパルスが出ていない、もしくはパルスの幅が長いため。

本来ならば、この後VRを回して変調する機能も加え、DJ気分を謳歌するつもりだったが、またの別の機会にするとしよう。

  • 最終更新:2020-01-14 23:34:41

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

認証パスワード