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

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

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

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

Q&A

2回答

2237閲覧

Arduino UNOでTFT液晶を使用したい

HiroPokeHero

総合スコア45

Arduino

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

0グッド

0クリップ

投稿2019/07/14 08:23

編集2019/07/20 05:49

実現したいこと

Arduino UNOでTFT液晶を使用したい、
現時点で正常に動作しないからプログラム?か配線のデバッグをしたい

前提

エラーはないが、画面が明るくならない。
4.7kΩの抵抗を使う部分は10kΩ2本を並列で代替。
2.2kΩの抵抗を使う場合は1kΩ2本を直列で代替。

サイトなどを参考にチャレンジ中
http://okiraku-camera.tokyo/blog/wp-content/uploads/2017/10/A_PRO_MINI_IL9341_TFT1.png

該当のソースコード

#include <avr/sleep.h> #include <Adafruit_GFX.h> #include <Adafruit_ILI9341.h> #define TFT_RST 6 #define TFT_DC 7 #define TFT_CS 5 #define LED_PIN 4 Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC); #define TFT_ROTATION 3 // J2端子側を左に見たとき左上が、1: (319, 239) or 3 : (0, 0)。 #include "tsc2046_spi.h" tsc2046_spi TS(8, ILI9341_TFTWIDTH, ILI9341_TFTHEIGHT, TFT_ROTATION); void getTextMetrics(char* cpText, uint16_t& tw, uint16_t& th) { int16_t tx, ty; tft.getTextBounds(cpText, 0, 0, &tx, &ty, &tw, &th); } bool onTouch(int x, int y) { char tmp[32]; static uint16_t text_h = 0; static uint16_t text_w = 0; enum {POS_X = 10, POS_Y = 20 }; tft.setTextSize(1); tft.setTextColor(ILI9341_BLACK); if (text_h == 0) { memset(tmp, 'W', sizeof(tmp)); tmp[sizeof(tmp) - 1] = 0; getTextMetrics((char*)tmp, text_w, text_h); sprintf(tmp, "%d,%d,%d,%d", POS_X, POS_Y, text_w, text_h); Serial.println(tmp); } int rx, ry, rz; TS.read_pos_raw(rx, ry, rz); tft.fillRect(POS_X, POS_Y, text_w, text_h, ILI9341_WHITE); sprintf(tmp, "x=%d, y=%d, rx=%d, ry=%d", x, y, rx, ry); tft.setCursor(POS_X, POS_Y); tft.println(tmp); return true; // 連続検出させる。 } void setup() { ADCSRA &= 0x7f; // ADC禁止。MSB を 0に。 ACSR |= 0x80; // アナログコンパレータ禁止 delay(50); Serial.begin(115200); pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, 0); pinMode(2, INPUT_PULLUP); digitalWrite(TFT_RST, 0); delay(10); digitalWrite(TFT_RST, 1); delay(10); tft.begin(); tft.setRotation(TFT_ROTATION); tft.fillScreen(ILI9341_WHITE); tft.setTextColor(ILI9341_BLUE); tft.setTextSize(2); tft.println("A_PROMINI_XPT2046"); TS.setHandler(onTouch); } void isr() {} void loop() { Serial.println("start sleep"); delay(100); digitalWrite(LED_PIN, 0); //tft.tft_sleep(); attachInterrupt(0, isr, FALLING); set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); MCUCR |= 0x60; MCUCR = (MCUCR & 0xdf) | 0x40; sleep_cpu(); detachInterrupt(0); // タッチ検出 digitalWrite(LED_PIN, 1); //tft.tft_wakeup(); TS.touch_loop(); }

試したこと

配線のチェック等

もっと試したいが、液晶のピン部分の温度が高くなるため、
なにかデバッグするいい方法がないか検討中

補足情報(FW/ツールのバージョンなど)

OS  : Windows10、
IDE  : Arduino1.8.9
ボード: ArduinoUno

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

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

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

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

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

thkana

2019/07/14 09:27

そのプログラム、Sleepに入ってそれっきり...になりそうな気がするのですが、Sleepから抜けるトリガはなんですか? > 液晶のピン部分の温度が高くなる これ、詳しく。特定のピン? 全部のピン? どういう条件で(常時? なにかしたら?)、どのくらいの温度(ほんのり温かい? 触ってられないくらい?)になるということでしょう?
HiroPokeHero

2019/07/14 10:43

>これ、詳しく。特定のピン? 全部のピン? まあまあ高熱です。 触ってられないので、全部のピンかどれか1つかはわかりませんでした。 Setup()の時点でSleepに入ってしまうということでしょうか??
thkana

2019/07/14 12:18

http://okiraku-camera.tokyo/blog/?p=6487 の写真でみる限り、ピン付近には部品もないし、基板のパターンとコネクタピンだけでそんな発熱するって一体どれだけの電流が流れてるんだか。あれで触っていられないくらい熱い、というのは、明らかに異常です。壊れているかも知れませんね。 そのブログを読んでいて、5V入力ダメみたいな話が出てて、そこ大丈夫かな、などと思ってましたけどそんなレベルじゃないですね。 Sleepは...あなたの意図はどうなんですか? それに合わせてあるんじゃないんですか?
HiroPokeHero

2019/07/15 08:42

Sleepはタッチパネルを操作していない場合にディスプレイをOFFにして、 タッチパネルの操作があったと時にWakeUpするようにするためとのことです。 ただ、まずはディスプレイが正しく動くことを確認するために省エネ機能はOFF仕様と思い、コメントアウトにしています。
thkana

2019/07/15 11:31

いや、そっちじゃなくて sleep_cpu(); の方。 やっていることの意味がわからないなら、理解していないプログラムでハードを評価しようというのは間違った方針だと思いますが。 AdafruitのILI9341ライブラリを入れてるのなら、そこのExamplesに入っているどれかとかで試してみたら。LEDの制御は追加するか常時点灯にしないといけないかも知れませんけれど。
thkana

2019/07/15 11:41

というか。 配線のチェックをして間違いがないというのなら、そんなに熱くなるのは液晶モジュールが壊れています。 現物を見ていないで言うのもナンですけど、そのモジュールでなにかを確認しようというのは無駄、じゃないですか?
HiroPokeHero

2019/07/18 10:11

以下の流れで進めてみます。 1.LEDだけで点灯 2.サンプルをつかってILI9341のみ制御   (タッチパネルを使わず、液晶だけつかう) 3.サンプルを使ってタッチパネルのみ使用   (液晶を無視して、タッチパネルの情報を取得) 4.全てを統合
guest

回答2

0

まずはとにかくその液晶パネルのデータシートを読みましょう。
バックライト電源にどういう抵抗を付け、どういう電圧をかけるべきかはそれに書いてあります

はなしはそれからですぜ

投稿2019/07/14 12:51

y_waiwai

総合スコア87747

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

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

HiroPokeHero

2019/07/14 14:59

データシートにはその辺りのことは書いてないですね。 なので、成功している人の回路を真似するしかないと考えました。
y_waiwai

2019/07/14 15:30

本当に書いてないのか、書いてあるんだけど理解できないのかはこちらからはわかりませんが、 真似するしかないなら真似すればいいのでは。真似しないでどーこーいってもどうしようもないでしょ。 それが正しいかは別にしてもw
guest

0

デバッグ用ということならLEDの制御の必要はないでしょうから、LCDモジュールのLEDピンは直電源につないでしまえばよいのでは? 少なくともバックライトは点灯するはずでしょう?

投稿2019/07/14 09:28

thkana

総合スコア7629

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

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

HiroPokeHero

2019/07/14 10:46

そうなんですか? 一度可変抵抗を使ってみたりしましたが、 暑くなったので「これは直接つないだらいけないのでは?」 と思い、 抵抗をつけたりトランジスタをつけたりしました。 トランジスタの回路図は先に示したサイトの受け売りですが。
thkana

2019/07/14 12:36 編集

参照先サイトを信じて、回路を理解しているなら、3Vなら直結でも大丈夫、とわかるはずです。5Vも多分。 (データシートも探してみましたが私は見つけられませんでした)
HiroPokeHero

2019/07/14 14:51

3ボルトではありませんが3テン3ボルトに繋いでます。 トランジスタは保護用の回路と思っています。 直に接続したら点灯してました! ただ、真っ白だったので、電流が流れすぎていると感じ、参照先サイトの通りに接続しました。 直に接続した時も熱くなってました。
thkana

2019/07/15 11:38

> トランジスタは保護用の回路と思っています。 違うけど... まずはLCDの制御はおいといて、D4ピンを1秒周期でH/L切り替えするとかでバックライトLEDが点滅するか確認してみる、とか。 もしかしたら、その「熱くなる」くらいの異常電流で電圧降下してマイコンがまともに動いていないんじゃないか、という恐れも。
HiroPokeHero

2019/07/17 08:44

違うんですね。 参照サイトに電圧が流れすぎないようにとあったので、保護用だとおもっていました。
HiroPokeHero

2019/07/17 08:45

まずは、ディスプレイのLEDを単なるLEDとして点灯させてみます!!
thkana

2019/07/17 15:56

> 参照サイトに電圧が流れすぎないようにとあった そんなこと書いてないです。 --- バックライトを点けたままでは一晩で電池があがってしまうので、トランジスタを組合せたスイッチング回路でオン/オフできるようにした。 --- あるいは --- PNPのエミッタ-コレクタ間には、負荷(液晶のバックライト)が決まっているので30mA以上の電流が流れることはない。 --- とあります。どこにも、トランジスタ回路で何らかの保護をおこなっているとは書いてないと思いますが、私の見落としですか? そもそも、「電圧」は「流れ」ません。電圧は「掛かる」もの。流れるのは「電流」。
HiroPokeHero

2019/07/18 04:18

電圧ではなく、電流ですね
thkana

2019/07/18 05:17

で、「電流がながれすぎないように」という話もありません。
HiroPokeHero

2019/07/18 10:07

電流がたくさん流れてもったいないってことですよね。 理解しました。 おっしゃるように保護ではないこと理解いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問