VVVF部分のパラメータはkasoku.hに書いている。
- Kasoku.hの中身
- VVVF配列(下の配列)の作り方
配列は二つの部分に分かれている。上配列でVVVFの音色の切替ポイント示している。下配列がVVVFの音階とモーターの強さの配列である。
注意)このページのソースをスケッチにコピーすると表示のために全角スペースなどを使っているのでエラーになる。
注意)このページのソースをスケッチにコピーすると表示のために全角スペースなどを使っているのでエラーになる。
- 上の配列 progmem_ref_kasoku[10]
const PROGMEM int progmem_ref_kasoku[10] = { 0,//0:E231 5,//1:E231和音 10,//2:113系 15,//3:207系 20,//4:シンプルなもの 25,//5:京急 40,//6:test 45,//7:test 50,//8:test 55,//終わり+1 };
- 下の配列 progmem_kasoku[55][8]
//速度領域始め、終わり、周波数始め、終わり、周波数2始め、2終わり、Duty始め、終わり const PROGMEM int progmem_kasoku[55][8] = { //0:E231元に近いもの { 0, 100,1008,1008,1008,1008, 0, 508}, { 101, 150,1008,1500,1008,1500, 508, 610}, { 151, 512, 461, 914, 461, 914, 458, 661}, { 513, 700, 914, 914, 461, 914, 661,1017}, { 701,1023, 914, 914, 914, 914,1023,1023}, //1:E231パルス幅変更で音に深みを持たせたつもりのもの { 0, 100, 750, 750,1500,1500, 0, 508}, { 101, 150, 750,1500,1500,3000, 508, 610}, { 151, 512, 345, 685, 691,1371, 458, 661}, { 513, 700, 685, 685,1371,1371, 661,1017}, { 701,1023, 685, 685,1371,1371,1023,1023}, //2:113系 { 0, 512, 345, 685, 691,1500, 0, 512}, { 513, 700, 685, 685,1500,1500, 513, 700}, { 701,1019, 685, 685,1500,1500, 701,1019}, {1020,1021, 685, 685,1500,1500,1020,1021}, {1022,1023, 685, 685,1500,1500,1022,1023}, //3:207系 { 0, 100, 350,1000, 350,1000, 0, 100}, { 101, 200, 400,1000, 400,1000, 70, 200}, { 201, 300, 450,1000, 450,1000, 140, 300}, { 301, 512, 450,1000, 900,1500, 240, 512}, { 513,1023,1000,1200,1500,2400, 513,1023}, //4:シンプルなもの { 0, 255, 225, 750, 450,1500, 0, 255}, { 256, 511, 375, 685, 750,1500, 220, 511}, { 512, 767, 375, 685, 750,1500, 480, 767}, { 768,1021, 685, 685,1500,1500, 768,1021}, {1022,1023, 685, 685,1500,1500,1022,1023}, //5:京急 ドレミファ { 0, 10, 349, 349, 349, 349, 0, 20},//F { 11, 20, 392, 392, 392, 392, 21, 40},//G { 21, 25, 440, 440, 440, 440, 41, 50},//A { 26, 30, 466, 466, 466, 466, 51, 60},//Bb { 31, 35, 523, 523, 523, 523, 61, 70},//C { 36, 40, 587, 587, 587, 587, 71, 80},//D { 41, 45, 622, 622, 622, 622, 81, 90},//Eb { 46, 50, 698, 698, 698, 698, 91, 100},//F { 51, 55, 783, 783, 783, 783, 101, 110},//G { 56, 100, 783, 783, 783, 783, 110, 150},//一定音 { 101, 130, 880,1125,1760,2250, 170, 200},//ノコギリ1 { 131, 160, 750,1100,1500,2200, 185, 230},//ノコギリ2 { 161, 190, 600, 900,1500,1800, 210, 260},//ノコギリ3 { 191,1022, 550,1000,1100,2000, 230,1022},//ノコギリ4長い {1022,1023,1000,1000,2000,2000,1022,1023}, //6:テスト用 ・・・・(省略)・・・・ };
VVVF音は音に厚みを出すため、2和音を使用しているが、混じって二つの周波数の真ん中の周波数になる。
例えば、750Hzと1500Hzの音を出すとする。
すると、750[Hz]の音の周期は1333[us]、1500[Hz]の周期は667[us]で、この二つの周期が交互にくるので、合成の周期は1000[us](=(1333[us]+667[us])/2))となる。なお、周期1000[us]のとき周波数は1000[Hz]である。
イメージグラフが書ける表はこちら。
この表は、5段のもののため、ドレミファVVVFみたいのを作るときは、もう少し段数を増やす必要がある。
モーター指示値に対するモーター出力値の表がある理由は、E231、ドレミファVVVFなどは同じ音階の音が続きながらモーター回転数だけ上がるためと、PWM周波数が高いと低い場合に比べモーター出力が非力なため、それを調整するためである。
表のイメージは以下。

次へ Melody部分の編集
例えば、750Hzと1500Hzの音を出すとする。
すると、750[Hz]の音の周期は1333[us]、1500[Hz]の周期は667[us]で、この二つの周期が交互にくるので、合成の周期は1000[us](=(1333[us]+667[us])/2))となる。なお、周期1000[us]のとき周波数は1000[Hz]である。
イメージグラフが書ける表はこちら。
この表は、5段のもののため、ドレミファVVVFみたいのを作るときは、もう少し段数を増やす必要がある。
モーター指示値に対するモーター出力値の表がある理由は、E231、ドレミファVVVFなどは同じ音階の音が続きながらモーター回転数だけ上がるためと、PWM周波数が高いと低い場合に比べモーター出力が非力なため、それを調整するためである。
表のイメージは以下。

次へ Melody部分の編集
最新コメント