質問: ### 前提・実現したいこと 最終的にArduino Pro Mini(3.3V版)にシフトレジスタ(NJU3711)を接続して4つのモータを動作させるのが目標。今はマイコンからシフトレジスタに指定した順番で8つのLEDを光らせたいと思っています。 ### 発生している問題・エラーメッセージ エラーメッセージは出ていないのですがシフトレジスタのP1~P8(パラレル変換データ出力端子)から出力がでてこない、指定したパターンで出力されません。 ### 該当のソースコード ``` _#define CLK 13 // クロック信号出力ピン _#define STB 10 // ラッチ動作出力ピン _#define DATA 12 // データ信号出力ピン _#define CLR 9 // リセット出力ピン void setup() { pinMode(CLK, OUTPUT) ; //制御するピンは全て出力に設定する pinMode(STB, OUTPUT) ; pinMode(CLR, OUTPUT) ; pinMode(DATA, OUTPUT) ; //ここまでシフトレジスタ用 digitalWrite(STB, HIGH) ; delay(300); } void loop() { digitalWrite(STB, LOW) ; //通信中は,LatchPinをLOWにする shiftOut(DATA, CLK, MSBFIRST, 0b10101010); //LEDを交互に光らせる digitalWrite(STB, HIGH); //送信後はLatchPinをHIGHに戻す } ``` ### 試したこと MSBFIRSTをLSBFIRSTにしてみたり、0b10101010以外のパターンを試したりしました。 指定しているピンが間違えてるとかなのでしょうか?よくわからなくて...
回答: まず、STB信号の扱いが間違っています そして、CLR信号も扱いを間違っていますね #おまけに、shiftOut関数のソースもわからない。 NJU3711のデータシートをよく読みましょう まず、「NJU3711」でぐぐります 検索結果のトップに(これは環境にもよりますんでトップとは限りませんが)、まさにNJU3711のデータシートが引っかかります https://www.njr.co.jp/products/semicon/PDF/NJU3711_J.pdf これを読んでいくと、3ページ目に機能説明があるのがわかります。 そこには、どの信号をどうすると、どういう動作をするか、という説明が書いてあります データシートというのは、メーカが出している公式の仕様書です。 ここに書いてある通りに動き、またはここに書いてあるとおりにしか動かない、というものですね。 さて、あなたのコードはこの通りに動くものでしょうか。