■ ピンがイッパイ!
ノイズが入るserialコンソールは使えないから、やっぱり値の確認のためLCDは取り付けないと。
まぁ、先の作業でLCDは確認済なのでお気楽だ。
さてさて、LCDの12本のピンを順番に・・・・・・おっ! 11,12 がSPIとバッティングしている。
ロータリーエンコーダーで使っているピン・・・・・2, 3 もだ!
大丈夫です、安心してください!他が空いてますよ!
てな感じで、11、12 を 6、7 へ移動。
LiquidCrystal lcd(12, 11, 5, 4, 3, 2) -> LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
2、3は何処へ?
ピン8, 9 が空いているけど、ロータリーエンコーダーを アナログピン A0, A1 へ移動。
よってLCDの ピン2, 3 はそのまま。
A0, A1のPULLUPを忘れずに。
こんな感じて動作確認。
テストなのでALL電池で動かしている。
そして以下、ここまでのフルソースコード。
NJW1159を試したいという方の参考になるとうれしい。(※)
絞りきった状態でも音が出る件も解決させてある。
あまりのボケさに恥ずかしいので説明は伏せるけど以下のコードを読んで理解してくだされ。
#include <LiquidCrystal.h>
#include <SPI.h>
/*
NJW1159 | arduino
CLOCK(14 | 13
DATA (13 | 11
LACTH(15 | 10
* pin12(MISO) reserved by SPI lib.
Rotary Encoder
1-A | A0
2-G | GND
3-B | A1
* PULLUP
Speaker Protector (to do)
ON delay / V protect / OFF cut
Pin 9
LOW -> HIGH | ON delay
HIGH -> LOW | protect & OFF
*/
//RAM
volatile int prevEncoded = 0;
volatile int encoderValue = 0;
volatile int oldEncoderValue = 0;
int encoderPin1 = A0;
int encoderPin2 = A1;
int maxVolumeValue = 127;
int MSB = 0;
int LSB = 0;
int encoded = 0;
int status = 0;
const char* fewattz = “fewattz”;
const char* vMax = “Volume Max”;
const char* vMute = “Volume Mute”;
const char* Max = “Max “;
const char* Mute = “Mute “;
const char* dB = “dB “;
const char* Minus = “-“;
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup(){
lcd.begin(16, 2);
lcd.setCursor(4, 0);
lcd.print(F(“fewattz”));
lcd.setCursor(4, 1);
lcd.print(F(“starting”));
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV8);
SPI.setDataMode(SPI_MODE2);
pinMode(encoderPin1, INPUT_PULLUP);
pinMode(encoderPin2, INPUT_PULLUP);
encoderValue = maxVolumeValue; //Mute
write1159();
delay(3000) ;
oldEncoderValue = encoderValue;
lcd.setCursor(0, 1);
lcd.print(vMute);
}
void loop(){
int result = 0;
// Rotary Encoder
MSB = digitalRead(encoderPin1);
LSB = digitalRead(encoderPin2);
encoded = (MSB << 1) |LSB;
status = (prevEncoded << 2) | encoded;
if(status == 0b1101 || status == 0b0100 || status == 0b0010 || status == 0b1011) result = 1; //CCW
if(status == 0b1110 || status == 0b0111 || status == 0b0001 || status == 0b1000) result = -1; //CW
prevEncoded = encoded; //store this value for next time
if(result != 0){
encoderValue += result;
encoderValue = constrain(encoderValue,0,maxVolumeValue);
if( encoderValue != oldEncoderValue){
lcd.setCursor(8, 1);
if(encoderValue == 0){
lcd.print(Max);
}else if(encoderValue == maxVolumeValue){
lcd.print(Mute);
}else{
lcd.print(Minus);
lcd.print(encoderValue);
lcd.print(dB);
}
oldEncoderValue = encoderValue;
write1159();
}
}
}
void write1159(){
int vrValue = encoderValue;
vrValue = (vrValue << 1) | 0;
digitalWrite(10,LOW); //左側ボリューム
SPI.transfer(vrValue);
SPI.transfer(B00010000);
digitalWrite(10,HIGH);
delay(10);
digitalWrite(10,LOW); //右側ボリューム
SPI.transfer(vrValue);
SPI.transfer(B00000000);
digitalWrite(10,HIGH);
delay(10);
}
※著作権はfewattzに帰属します。
無断掲載は禁止とさせていただきます。
本コードの使用は自己責任です。
使用において発生したいかなる損害にも一切補償しません。
■ 聴いてみよう!
ひとまず、テスト環境のCDプレーヤーとポタアンを、現環境に差し替えて・・・・
LinuxBean → リハビリDAC(USB) → NJW1159 → 現アンプ → スピーカ
スピーカーからお気に入りの楽曲が流れ出す。
おぉ!かなりイイ。
全体的にバランスが良く、音のひとつひとつがハッキリ、クリアだ。
定位もよく、低域の締まり良く鳴っている。
これまでのDS1882とは対照的。
DS1882はどちらかといえば力強く音楽が“オレが、オレが”と張り出てくる感じ。
比べてNJW1159は日本的といえる音作り。繊細で色づけがない。
“個性がない”と言う方もいるかもしれないが、なんにでも合わせられるところがイイ所。
むしろ音楽ソースそのものが橋渡しされている気がして安心感がある。
お次は、ヘッドホンでと。
あっれ~~?
ホワイトノイズがある。テスト環境では無かったんだけど・・・
さっそく原因箇所の切り分け。
1)リハビリDACを外してみる・・・・変わらない。
2)Arduino の電源を切ってみる。(NJW1159のみON)・・・・変わらない
だとするとどうやら犯人はお前、NJW1159。
え~~~?うそだろ~~~~。
スペックシートではノイズレベルは -105dB。聞こえる筈ないんだけど~
ウ~~~~ン。なぜだろう。
テスト環境に戻してみる・・・・・ホワイトノイズは聞こえない。
あれ~~~?
・・・・・
・・・・
・・・
・・
・
テスト環境のポタアンがヘタレだから聞こえないのかな?
ならば、Class-AA-sub を引っ張り出してきて・・・・・
元々のメカニカルVRをフルにして・・・・
パワーオン!
ホワイトノイズ・・・・無~~い~~~!
・・・
・・
・
え~~~?現アンプか~~~。
でもNJW1159を外して、リハビリDACを直結では、The静寂なんだけど。
相性で片付けるのはシャクだなぁ
原因は何だろう。
NJW1159は入出力のインピーダンスが高いようだからその辺かな?
現アンプは、今だバラック配線だからその辺も影響してるかも。
こちらはチョット整理して仕切りなおそう。
Class-AA-subではホワイトノイズもなくいつも通り安心して鳴っているので、しばらくはこちらで視聴。
こちらのアンプはゲインが低いからヘッドホンでもだいぶボリュームを上げないといけない。
ん?・・・ゲインが低くてホワイトノイズが聞こえないだけ?
そんなオチかぁ?
カテゴリー
最近の投稿
- ブラームス バイオリン・ソナタ
- 6J2PハイブリッドAMP for スピーカー(完結編
- 6N23P White Cathode Follower 健康診断
- 6418P HPAハイブリッドアンプ(3
- 2024 謹賀新年
- 6418P HPAハイブリッドアンプ(2
- 6418P HPAハイブリッドアンプ
- 〇〇の秋は?
- リハビリHPAハイブリッド
- XL6009 100Vエクステンダー
- 6N1P ハイブリッド・アンプ(再追試 100V
- 6N1P ハイブリッド・アンプ(アンプ編4
- 6N1P ハイブリッド・アンプ(アンプ編3
- 6N1P ハイブリッド・アンプ(アンプ編2