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

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

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

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

Q&A

2回答

1847閲覧

Arduino 液晶に何も表示されません。

anisaxis

総合スコア0

Arduino

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

0グッド

0クリップ

投稿2023/07/02 22:50

編集2023/07/03 03:41

イメージ説明### 実現したいこと

  • Arduinoを使って液晶に画像や文字を表示させたいです

前提

Arduino初心者です。

秋月で下記のMSP2807というTFT液晶モジュールを購入しました。
https://akizukidenshi.com/catalog/g/gM-16265/

下記のURLの通り、
http://try3dcg.world.coocan.jp/note/spi/ILI9341.html

LCDモジュール ArduinoUNO
VCC 3.3V
GND GND
CS D10
RESET D9
DC D8
SDI(MOSI) D11
CSK D13
LED 3.3V
SDO(MISO) D12
に配線しました。

コードもここに載っている通り、記述しました。
しかし、液晶自体は白く光りはするのですが、表示されるはずの画像や文字が何も表示されません。
本来であれば、下記のYoutubeのように色とりどりに光るようです。
https://youtu.be/JGIdd8FkQFk

他のサイトやAdafruit ILI9341のgraphictest?というスケッチ例も試してみましたが、結果は同じでした。
どうしたら表示されるか教えてください

該当のソースコード

Arduino

1ソースコード(一部) 2```// ILI9341 SPI Graphics TEST 3#include SPI.h> 4#include "image2.h" 5#include "font8x16.h" 6 7#define TFT_CLK 13 8#define TFT_MISO 12 9#define TFT_MOSI 11 10#define TFT_DC 8 11#define TFT_RST 9 12#define TFT_CS 10 13// BackLightはHIGH固定にするのでソフトがらは制御しない 14#define TFT_BL 7 15 16// SPISettings settings = SPISettings(8000000, MSBFIRST, SPI_MODE0); // 8MHzで合ってるよね?変だと思ったら修正してください。 17 18// ▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼ 19void setup() { 20 SPI.begin(); //SPIを初期化、SCK、MOSI、SSの各ピンの動作は出力、SCK、MOSIはLOW、SSはHIGH 21 SPI.setClockDivider(SPI_CLOCK_DIV2); 22 SPI.setBitOrder(MSBFIRST); 23 SPI.setDataMode(SPI_MODE0); 24// SPI.beginTransaction(settings); // M5StampやRaspberryPi PICOで使う時はコッチの設定でないとコンパイルが通らない 25 26 // --- ST3375 INITIAL 27 pinMode(TFT_CS, OUTPUT); 28 pinMode(TFT_DC, OUTPUT); 29 pinMode(TFT_RST, OUTPUT); 30 31 // --- HARDWARE Reset 32 digitalWrite(TFT_RST, LOW); 33 delay(20); 34 digitalWrite(TFT_RST, HIGH); 35 delay(20); // このdelayは必要 36 37 // --- ILI9341 動作設定 38 digitalWrite(TFT_CS, LOW); // TFTセレクト 39 40 digitalWrite(TFT_DC, LOW); // Command mode 41 SPI.transfer(0x01); //<< SOFTWARE RESET 42 delay(150); // ※このdelayはなくても大丈夫かも 43 44 SPI.transfer(0x13) ; //<< Normal Display Mode ON 45 46 SPI.transfer(0x36) ; //<< Memory Access Control 47 digitalWrite(TFT_DC, HIGH); // Data mode 48 SPI.transfer(0x48) ; // MX = ON , GBR = ON (縦画面,左から右に表示) 49 50 digitalWrite(TFT_DC, LOW); // Command mode 51 SPI.transfer(0x3a) ; //<< COLMOD: Pixel Format Set 52 digitalWrite(TFT_DC, HIGH); // Data mode 53 SPI.transfer(0x55) ; //<< 16Bits / 1Pixcel 54 55 digitalWrite(TFT_DC, LOW); // Command mode 56 SPI.transfer(0x11) ; //<< Sleep Out 57 58 delay(60); // 【重要】このdelayは絶対に必要:電源が不安定な場合は長めに(120ms位に)する 59 60 SPI.transfer(0x29) ; //<< Display ON 61 62 digitalWrite(TFT_CS, HIGH); // TFT解放 63} 64 65// ▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼▲▼ 66void loop() { 67 for (int i=0;i<5;i++) { 68 uint16_t color = 0x0000 ; 69 switch(i) { 70 case 0: color = 0x0000 ; break ; 71 case 1: color = 0xF800 ; break ; 72 case 2: color = 0x07E0 ; break ; 73 case 3: color = 0x001F ; break ; 74 case 4: color = 0xFFFF ; break ; 75 } 76 // --- 画面塗りつぶし 77 digitalWrite(TFT_CS, LOW); //TFTセレクト 78 79 digitalWrite(TFT_DC, LOW); // Command mode 80 SPI.transfer(0x2a); //<< Column Address Set 81 digitalWrite(TFT_DC, HIGH); // Data mode 82 SPI.transfer16(0); // 開始カラム 0 83 SPI.transfer16(239); // 終了カラム 239 84 85 digitalWrite(TFT_DC, LOW); // Command mode 86 SPI.transfer(0x2b); //<< Page Address Set 87 digitalWrite(TFT_DC, HIGH); // Data mode 88 SPI.transfer16(0); // 開始ページ 0 89 SPI.transfer16(319); // 終了ページ 319 90 91 digitalWrite(TFT_DC, LOW); // Command mode 92 SPI.transfer(0x2c); //<< Memory Write 93 digitalWrite(TFT_DC, HIGH); // Data mode 94 for (int y = 0 ; y < 320 ; y++) { 95 for (int x = 0 ; x < 240 ; x++) { 96 uint16_t data = color ; 97 SPI.transfer16(color); 98 } 99 } 100 digitalWrite(TFT_CS, HIGH); //TFT解放 101 delay(500) ; 102 } 103} 104} 105 106 107### 試したこと 108ジャンパー線の断線を疑い、全て新品のジャンパー線に差し替えました。 109持っている2つのArduinoUno両方で試しましたが、駄目でしあ。 110様々なサイトを参考にして、色々な配線、色々なプログラムを試しました。 111 112### 補足情報(FW/ツールのバージョンなど) 113 114Arduino Uno 互換ボード 115Arduino IDE 2.1.1 116液晶 ︎▼ 117ILI9341搭載2.8インチSPI制御タッチパネル付TFT液晶 MSP2807 118電源電圧範囲:3.3V~5V 119・消費電流:約90mA 120・LCDサイズ:2.8インチ(43.2×57.6mm) 121・ドライバIC:ILI9341 122・駆動方式:a-SiTFT 123・ドット数:320×240×(RGB) 124・色数:16bit(RGB565) 125・通信方式:4線式SPI 126・基板寸法:50.0×86.0mm 127・ロジック電圧:3.3V(TTL) 128・バックライト:白色LED

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

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

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

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

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

thkana

2023/07/02 23:48

ココをこうすればあら不思議、動き始めましたよ...というような話を期待しないでくださいね。 「URLの通りにやりました」というのは...やったつもりになっているだけで、そうなっていないということはないですか? なんらかの前提条件をすっ飛ばしていたりしませんか? 例えば、 http://try3dcg.world.coocan.jp/note/spi/ILI9341.html には --- ArduinoUNOなどの5V系のマイコンで使用する場合にはレベルシフタが必要です。 --- との記述がありますが、質問ではそれには全く触れられていませんね。そこはどうなっていますか? 3.3V入力に5V突っ込むとデバイスが破壊されることもあります(確実に壊れるとまではいいません)。 > 配線しました。 間違いが無いこと、断線やショートがないことは何らかの方法で確認していますか? もちろん、何らかのパーツ故障の可能性もゼロではないです。(他の全ての要因が正しいなら故障としか考えられない、ということになります) > 他のサイトやAdafruit ILI9341のgraphictest?というスケッチ例も試してみましたが、結果は同じでした。 ソフトを差し替えても状況が変わらないなら、ハード的な問題の可能性が大きくなります。
anisaxis

2023/07/03 03:51

僕の持っているArduinoUnoには3.3V出力があります。そこに刺して配線していました。 試したことの記述が不足していたので、質問を編集しました🙇‍♂️ 何度も何度も配線は指さし確認をしました。 ジャンパー線の断線を疑い、全て新品にとりかえたりArduinoUnoに問題があるかも、と思い持っているもう1つのArduinoUnoでも試したりしました。
guest

回答2

0

Arduino uno が手元にないので Raspberrypi Picoで検証しました.

  1. uno 互換ボードの種類によって5V-3.3Vの電源切替スイッチ(ジャンパー)があるので3.3Vにしてください.

2.LCDが表示しない原因は16行目のSPI Settingをコメントアウトしているので,SPI通信設定ができないためだと思います.
3.ちなみに SPI Clockは8MHzでMSP2807は動きました.
検証後は1MHzにもどしましたけど.
SPI Clockは高速ADCのためとかを除いて必要以上に上げないことです.配線の長さにより誤動作しやすくなるため.
ILI9341-DEMO-SIMPLE.zipはOK, DEMO2はダメでした.
ボードが Raspi-picoなのでDEMO2の移植に問題が残っているかもしれません.
File->スケッチ例->Adafruit ILI9341->graphictest->raphictest.ino の動作確認しました.

 

投稿2023/09/22 03:48

pzt023

総合スコア2

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

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

0

1.多分SPIが正しく動いていない可能性が高いです.動いているか検証しましょう.https://support.arduino.cc/hc/en-us/articles/360020366520-How-to-do-a-loopback-test

2.spi clockの周波数を何MHzにしようとしていますか? 16MHz発振ならSPI_CLOCK_DIV2で 1/2にしたら8MHzですよ.  一般的には1MHz以下で検証します.(SPI_CLOCK_DIV16).速くしたいときは正しく動いてから限界を検討をします.

動作確認を確実にするには,安いロジックアナライザで信号波形が正しいか確認してください.検索キーワード: usb 格安ロジアナ.
aliexpressで600円,amazonで1400円.
https://hackmd.io/@seya128/BkqgzxxtB

投稿2023/09/11 00:19

編集2023/09/11 02:09
pzt023

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問