質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

2回答

802閲覧

シフトレジスタ(NJU3711)をArduino Pro Miniで動作させたいのですが困っています。

AIUE-kun

総合スコア9

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2018/08/12 05:39

編集2021/07/16 07:03

前提・実現したいこと

最終的にArduino Pro Mini(3.3V版)にシフトレジスタ(NJU3711)を接続して4つのモータを動作させるのが目標。今はマイコンからシフトレジスタに指定した順番で8つのLEDを光らせたいと思っています。

発生している問題・エラーメッセージ

エラーメッセージは出ていないのですがシフトレジスタのP1~P8(パラレル変換データ出力端子)から出力がでてこない、指定したパターンで出力されません。

該当のソースコード

Arduino

1_#define CLK 13 // クロック信号出力ピン 2_#define STB 10 // ラッチ動作出力ピン 3_#define DATA 12 // データ信号出力ピン 4_#define CLR 9 // リセット出力ピン 5 6void setup() { 7 pinMode(CLK, OUTPUT) ; //制御するピンは全て出力に設定する 8 pinMode(STB, OUTPUT) ; 9 pinMode(CLR, OUTPUT) ; 10 pinMode(DATA, OUTPUT) ; //ここまでシフトレジスタ用 11 digitalWrite(STB, HIGH) ; 12 delay(300); 13} 14 15void loop() { 16 17 digitalWrite(STB, LOW) ; //通信中は,LatchPinをLOWにする 18 shiftOut(DATA, CLK, MSBFIRST, 0b10101010); //LEDを交互に光らせる 19 digitalWrite(STB, HIGH); //送信後はLatchPinをHIGHに戻す 20 21}

試したこと

MSBFIRSTをLSBFIRSTにしてみたり、0b10101010以外のパターンを試したりしました。
指定しているピンが間違えてるとかなのでしょうか?よくわからなくて…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2018/08/12 13:44

shiftOut関数のソースコードを提示してください
guest

回答2

0

ベストアンサー

見たところCLRの出力が指定されていません。Lowになっていてリセット状態のままなのではないでしょうか。

また、これは今回の問題の原因ではありませんが、STBのHigh/Lowも逆じゃないですかね。
今のままだとシフト中の中途半端な値が出力されてしまいます。

投稿2018/08/12 13:48

ikadzuchi

総合スコア3047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AIUE-kun

2018/08/15 15:02

ソースコードを以下のものに変更して予備で買っておいた別のシフトレジスタで試したら無事動作しました。 CLRの出力が指定出来ていなかったこととシフトレジスタそのものが不調だったみたいです。 void loop() { digitalWrite(CLR,HIGH); digitalWrite(STB, HIGH) ; //通信中は,LatchPin,CLRをHIGHにする shiftOut(DATA, CLK, MSBFIRST, 0b10101010); //LEDを交互に光らせる digitalWrite(STB, LOW); //送信後はLatchPinをLOWに戻す }
guest

0

まず、STB信号の扱いが間違っています
そして、CLR信号も扱いを間違っていますね

#おまけに、shiftOut関数のソースもわからない。

NJU3711のデータシートをよく読みましょう


まず、「NJU3711」でぐぐります
検索結果のトップに(これは環境にもよりますんでトップとは限りませんが)、まさにNJU3711のデータシートが引っかかります
https://www.njr.co.jp/products/semicon/PDF/NJU3711_J.pdf
これを読んでいくと、3ページ目に機能説明があるのがわかります。
そこには、どの信号をどうすると、どういう動作をするか、という説明が書いてあります

データシートというのは、メーカが出している公式の仕様書です。
ここに書いてある通りに動き、またはここに書いてあるとおりにしか動かない、というものですね。

さて、あなたのコードはこの通りに動くものでしょうか。

投稿2018/08/12 13:48

編集2018/08/12 21:45
y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikadzuchi

2018/08/12 13:52

低評価の理由: ・「間違っています」と否定するだけで正解を書かない ・Arduinoの標準関数についてググらない
y_waiwai

2018/08/12 13:54

正解を教えようとはつゆほどもおもってません。 質問者に、「理解」していただきたいので。 どうぞ低評価をつけてくださいw
ikadzuchi

2018/08/12 14:16

質問者のことを考えて言っているのではありませんwwwwwwwwwwwwwwww。 正解をぼかした回答は価値が無いばかりか、正誤の判断に無駄な労力を使わせるので、見る人全てにとって不利益を生みますwwwwww。
y_waiwai

2018/08/12 14:20

少なくともあなたには不利益なようですね。がんばりましょう。応援していますw
ikadzuchi

2018/08/12 14:33

はい、態度とか気に障ってとても不利益です。がんばります。応援してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問