【SN76477(N)】初音Arduino(回路が発振しない!) | ..あちゃ! no mic's

..あちゃ! no mic's

クラウドファンディング予定~2026年度
何度でもチャレンジ!
ただいまソーラーピックアップのテスト中

SANTA no Mix


助けて!
CRの設定が出来ない。
というより、抵抗が4.7kΩ以上なら、簡単な計算式で周波数が出てくるんだけど、回路を組んでも発振してくれない。
手持ちの部品が少ないので、テキトーにあて込んだんだけど、それがいけなかったか。
アンプもNPNとPNP2種類で、組んであるけど、そこがいけなかったのか。
アナログ音痴なので、とりあえず、Arduinoの力を借りた。
どこにも載っていない。
参考にできるものなし!


ちゃんと音が変わっているんで、Arduinoのノイズをそのまま取り込んでいるだけではなさそうだ。

簡単な仕組みのミュージックオルガンさえも鳴らなかった。
データシートはそんなに難しそうじゃあなかったけど。

端子 設定法  意味
1 デジタル   エンベロープ機能選択端子。
2 電源        電圧の基準端子。
3 デジタル   ノイズ用クロックの外部入力。
4       R (GND)    ノイズ用クロック発振回路の制御入力で抵抗値によってクロック周波数が決まる。
            Hレベルを与えると外部入力が有効。
5 R (GND)   ノイズフィルタのカットオフ周波数決定用抵抗接続端子。
6 C (GND)  RNFと組み合わせてノイズフィルタのカットオフ周波数決定。
7 R (GND)   ディケイ時間設定用抵抗接続端子。
8 C (GND)   アタック・ディケイ時間設定用コンデンサ接続端子。
9 デジタル   サウンド出力禁止ないしワンショットのトリガ。
10 R (GND)   アタック時間設定用抵抗接続端子。
11 R (GND)   アンプリチュード・コントロール抵抗接続端子。
12 R (13)     フィードバック抵抗接続端子。
13 --      オーディオ出力。
14 電源      7.5 Vから10 Vまでの電源電圧を入力することができる。
            5 Vの安定化電源があり、Vregに直接給電する場合には不要。
15 電源      基準電圧入出力端子。安定化された5 Vを供給する端子でもあり
            Vccに与えた電源から安定化した5 Vを出力する端子でもある。
16 アナログ   VCOの発振周波数を決める制御電圧入力。およそ10倍の発振周波数可変能力がある。
17 C (GND)   VCOの発振用コンデンサ接続端子。
18 R (GND)   VCOの発振用抵抗接続端子。
19 アナログ   VCOのデューティ比設定電圧入力。音色を多少変えられる。
20 R (GND)   SLF発振周波数設定用抵抗接続端子。
21 C (GND)  SLF発振周波数設定用コンデンサ接続端子。
22 デジタル   VCOの制御電圧をSLFの三角波出力とするか外部入力とするか決定する。
23 C (GND)  ワンショット時間設定用コンデンサ接続端子。
24 R (GND)  ワンショット時間設定用抵抗接続端子。
25 デジタル   ミキサー入力選択端子B。
26 デジタル   ミキサー入力選択端子A。
27 デジタル   ミキサー入力選択端子C。
28     デジタル   エンベロープ機能選択端子。





int dout0 = 8; // LSB
int dout1 = 9; // 
int dout2 = 10; // 
int dout3 = 11; // MSB
int sindat[]={7,10,12,14,14,14,12,10,7,4,2,0,0,0,2,4};

int i;

void setup() // run once, when the sketch starts
{
pinMode(dout0, OUTPUT); 
pinMode(dout1, OUTPUT); 
pinMode(dout2, OUTPUT); 
pinMode(dout3, OUTPUT); 
}

void loop() // run over and over again
{
for(i=0;i<16;i++){
if (sindat[i] & 0x01) digitalWrite(dout0, HIGH); else digitalWrite(dout0, LOW);
if (sindat[i] & 0x02) digitalWrite(dout1, HIGH); else digitalWrite(dout1, LOW);
if (sindat[i] & 0x04) digitalWrite(dout2, HIGH); else digitalWrite(dout2, LOW);
if (sindat[i] & 0x08) digitalWrite(dout3, HIGH); else digitalWrite(dout3, LOW);
delay(10); // waits for a second
}
}