チーム1961
課題名
変調Piasoc
研究者名
2-14-16 川本樹
2-14-4 石元 稜
内容
基盤についているVRを回してスピーカーから流れる音楽を自由に変調する。
使用機器
PSoc基盤 1個
PSoc Mini Prog 1個
スピーカー 3つ
ジャンパー線 1本
配線[#v525b1bc]
ソースコード
#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