音を鳴らして「ド」のときは「0」、「レ」のときは「1」と表示させたいです。
・今作っているドレミファソラシドは1、2...となっているでしょうか。
・音楽を鳴らしたとき同期するにはどうしたらよいでしょうか?
const char SPK = 2; //sound void setup() { pinMode(SPK, OUTPUT); //sound //h1052g pinMode(3, OUTPUT);//左 pinMode(4, OUTPUT);//真ん中 pinMode(5, OUTPUT);//右 pinMode(6, OUTPUT);//E pinMode(7, OUTPUT);//D pinMode(8, OUTPUT);//C pinMode(9, OUTPUT);//DP pinMode(10, OUTPUT);//B pinMode(11, OUTPUT);//A pinMode(12, OUTPUT);//F pinMode(13, OUTPUT);//G } //sound /*ド 261.6 1911microsec //0番 *レ 293.7 1702microsec //1番 *ミ 329.6 1517microsec //2番 *ファ349.2 1432microsec //3番 *ソ 392.0 1276microsec //4番 *ラ 440.0 1136microsec //5番 *シ 493.9 1012microsec //6番 *ド 523.3 955microsec //7番 */ //float T=1/440; ラの音 1秒440Hz 0.002272/2 = 0.00113636 *1000000 =1136microsec float len[10] = {262 ,294 ,330 ,349 ,392 ,440 ,494 ,523, 220, 247}; float sec[10] = {261.6,293.7,329.6,349.2,392.0,440.0,493.9,523.3,220, 247}; int sound(int t, int c, int d){ for(int j=0; j<=len[t]; j++){ digitalWrite(SPK, HIGH); delayMicroseconds(1/sec[c]/2*1000000L); digitalWrite(SPK, LOW); delayMicroseconds(1/sec[c]/2*1000000L); } delayMicroseconds(d); } //h1502g char LED[8] = {6,7,8,9,10,11,12,13}; char data[10][8] = {{0,0,0,1,0,0,0,1}, //0 {1,1,0,1,0,1,1,1}, //1 {0,0,1,1,0,0,1,0}, //2 {1,0,0,1,0,0,1,0}, //3 {1,1,0,1,0,1,0,0}, //4 {1,0,0,1,1,0,0,0}, //5 {0,0,0,1,1,0,0,0}, //6 {1,1,0,1,0,0,0,1}, //7 {0,0,0,1,0,0,0,0}, //8 {1,1,0,1,0,0,0,0}}; //9 void printLED(int num){ //()内に入る数字を表示する for(int i=0; i<8; i++){ digitalWrite(LED[i], data[num][i]); } } void loop() { //sound(len[],len[],delay)を指定 for(int k=0; k<8; k++){ //ドレミファソラシド for(int j=0; j<50; j++){ sound(k, k, 100); printLED(k); digitalWrite(5,1); delay(1); digitalWrite(5,0); printLED(k); digitalWrite(4,1); delay(1); digitalWrite(4,0); printLED(k); digitalWrite(3,1); delay(1); digitalWrite(3,0); delay(5); } } /* //曲 さくら sound(6, 6, 50); sound(6, 6, 50); sound(7, 7, 100); sound(6, 6, 50); sound(6, 6, 50); sound(7, 7, 100); sound(6, 6, 50); sound(7, 7, 50); sound(8, 8, 50); sound(7, 7, 50); sound(6, 6, 50); sound(7, 7, 25); sound(6, 6, 25); sound(5, 5, 100); */ } }
あなたの回答
tips
プレビュー