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

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

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

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

Q&A

解決済

3回答

1934閲覧

ArduinoUno→I2Cモジュール→LCD1602と接続して、文字を表示させたい。

nakapy0918

総合スコア18

Arduino

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

0グッド

0クリップ

投稿2019/03/29 17:56

編集2019/03/29 17:59

出力結果が毎回安定しない。

極めてシンプルにI2Cモジュールを経由してLCD1602に文字を出力しようと試した所、出力結果が安定しない状況です。

どのようなことになっているかと言うと、リセットボタンを押して再実行するたび、

上手く表示されたり、
一部または全てが文字化けしたり、
前回出力が消えず続けて文字が出力されたり、
最初に空白が入って出力されたり、
全ての表示が消えたり、
カーソルが消えたり出たり、

と、同じコードを実行しているにもかかわらず、出力結果がバラバラで安定しないという状況です。

初期不良なのか、使用しているライブラリやコードが間違っているのか、どうにもわからず。
何かこうすればいいよ、というアドバイス等あれば、教えていただけるとありがたく思います。

該当のソースコード

#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2);//0x27であることを確認済み void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Hello, world!"); } void loop(){ }

補足

接続(GND,5V,SDA[A4],SCL[A5])には問題なし、
はんだ付けでのショートしてないかの目視と通電チェックは数回程度ながら確認済み。

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

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

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

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

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

coco_bauer

2019/03/30 01:15

「SDA[A4],SCL[A5])には問題なし」というのは、オシロスコープで波形を見て判断したのでしょうか? GND,DA[A4],SCL[A5])の配線をしているコード(電線)の長さは、どのぐらいですか? プログラムのコードが同じなのに動作が不安定になる原因は、(配線のほうの)コードの接続不良や外部からの電磁ノイズや、電源容量の不足といったハードウェア的な要因の可能性を疑ったほうが良いと思います。
nakapy0918

2019/03/30 09:11

コードの長さを確認してみた所、16cmと20cmと違っていたので、12cmのものを2本繋げた所、かなり安定するようになりました。コードの曲がり具合でまだ文字化けや表示抜け等も起こりますが、固定すれば実用できる範疇にはなると思います。ありがとうございました。
thkana

2019/03/30 09:58

問題を共有した以上、「解決しました」じゃなくて「どうやって解決したのか」もちゃんと共有しましょう。ここは、技術に興味を持った人が集まる場で、回答した人はあなたの現象に技術的に興味を持ったから回答したのです。それで「オチ」を教えないとしたらひどいと思いませんか? #症状からみてちゃんとプルアップしていなかったのだろうと想像しますけれど。
nakapy0918

2019/03/30 17:40

情報が共有されるからこそ、より正しい解決方法があるならそれを記載した方が良いのではと考え、不安定な部分の解消法がないかと調べていた所です。残念なことに一時固定すれば安定するかに思われましたが、再度不安定化しました。Backpackモジュール(PCF8574T)とLCD1602を接続している動画また画像を検索して参考にしてみたものの、線を4本繋げるだけで正常に可動しているように見えるため、やはり初期不良か内部回路のどこかが壊れてしまったのではと考えています。
thkana

2019/03/31 00:23 編集

> より正しい解決方法があるならそれを記載した方が良い そうですね。私もそう思います。しかし、解決したかもという投稿があった時点で何をどうしたら改善した、という具体的な対応が読み取れなかったためコメントしました。 「より正しい」について言えば、teratailのシステムでは事後に訂正が可能ですから間違いを恐れる必要はないと思いますし、「これは原因ではなかった」というのも(あまりうれしくはないですが)一つの情報ですから「なかったコト」にするものでもないでしょう。 それはそれとして。 調べてみると、wireライブラリの中で一応マイコンの内蔵プルアップをOnにしているようです。それでも、外部で例えば10kΩぐらいでSCL/SDAを釣ってみる、というのは試せることの一つだと思います。 あとは、症状的にはどこかの電位がふらついている様子なので、プルアップでなければどこかのハンダ付け不良を疑いたくなるところです。あなたが作業したことろもですが、やけに安い中華な基板の場合には製品上も怪しかったり。
coco_bauer

2019/03/31 02:02

コードの曲がり具合でまだ文字化けや表示抜け等も起こりますというのは、接触不良やプルアップに問題がありそうな感じですね。GNDの接続が接触不良だと信号レベルが不安定になるので、信号線だけでなくGNDも要チェックです。 オシロスコープでSDA[A4],SCL[A5]の波形を見て、上がほぼ電源電圧までいっていればプルアップの問題はないだろうと思います。 後は、I2Cの通信速度を下げることで動作が安定になる可能性があります。
nakapy0918

2019/04/01 00:07

はんだ取り付け部を見直してみた所、今度こそ解決しました。 最初LEDを用いてはんだ取り付け部分が通電してるか確認して、通電していない所は再度付け直しをしていたので、ちゃんと繋がってると考えていたのですが、皆さんのアドバイスを聞いて、それだけでは不十分だと知り、よく見てみた所はんだ量が不均一なように見えたので、一度全部取り除いて再度均一になるよう、丁寧にはんだ付けを行った所、正常に可動することを確認。 自分の不足が原因で申し訳なく思うものの、助けていただいて皆様感謝です。
guest

回答3

0

自己解決

原因ははんだ付け不良にあったようで、一度全部取り除き、
再度均一になるよう丁寧にはんだ付けを行った所、正常に可動することを確認できました。

投稿2019/04/01 00:10

nakapy0918

総合スコア18

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

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

0

まず、リセットではなく、電源ONできちんと表示できるかを見てください
電源ONでは常にうまく表示できている、と言うなら、それはそういうものかもしれません

# LCD1602の初期化がうまくいってない、ということかもしれませんが

投稿2019/03/29 22:48

y_waiwai

総合スコア87774

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

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

0

examples では、Wire.h が必要になってます

#include <Wire.h> #include <LiquidCrystal_I2C.h>

また I2C プルアップ抵抗は入ってますか?

投稿2019/03/29 18:27

koujikuu

総合スコア401

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

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

nakapy0918

2019/03/30 09:27

Wire.hを書いた場合と消した場合で比較した所、現状のコードでは変化はないように見えました。 可変抵抗が入っているようなので、おそらくそれがプルアップ抵抗に当たるのだと思います。
nakapy0918

2019/03/30 17:43

↑訂正、可変抵抗はコントラスト調整用のものでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問