ton_katu
Posts: 88
Joined: Sun Jun 27, 2021 3:28 am

1.8インチTFT(ST7735S)色違い

Wed Jul 28, 2021 6:56 am

1.8インチTFT(ST7735S)16ビット65Kcolor 色違い

手元のTFTモジュールは、通常RGBの色指定が
BGRになっている。

[ MSP 1803 ]でネット検索ヒットします。
このモジュールのマニュアルを見たが、理解出来ませんでした。

赤を出そうとすると「青」になってしまう。
青を出すには、通常の(0,0,255)ではなく(255,0,0)
にする。

自分で色を指定する場合は、BGRでも対応出来るが
通常の画像ファイル(jpgやpngなど)や
キャプチャ画像を描画する場合、
赤が青になってしまう様に色が違ってしまい、
具合がわるい。

ソフトウエア的に通常のRGB形式で描画出来る様に
したいが、方法は有りませんか?

アドバイスお持ちの方、お願い致します。

ton_katu
Posts: 88
Joined: Sun Jun 27, 2021 3:28 am

Re: 1.8インチTFT(ST7735S)色違い

Thu Jul 29, 2021 12:00 am

やって見たこと

就寝前に思い付き、今朝まで楽しみにしていたが、
単純ではなかった・・・・ :)


ST7735.py の98行目から
色の設定に関係しそうな箇所があります。
RGBがこのTFTモジュールでは、BGRとなって居る為
色表現16進数を赤に青の16進数を入れて観ます。
他も同様に、

赤と青、シアンとイエローの16進数をそれぞれ入れ換えて
見ましたが・・・・



TFTの描画には、
入れ換える前と後では、全く変化は生じませんでした。

勿論、TFTモジュールが「焼ける」様な事象も発生ししません。:)

ここに、触って、TFTの描画に変化が生じないことにガッカリ、
ソレより「ビックリ」ですが
コメントアウトの箇所でもないのに

プログラムに無関係の記述なんてあるのでしょうか?

113行の定義文は各色の階調だと思います・・・・。

他にあるのだろうか?

ton_katu
Posts: 88
Joined: Sun Jun 27, 2021 3:28 am

Re: 1.8インチTFT(ST7735S)色違い

Fri Jul 30, 2021 2:13 am

どうもさっぱり、解りません。

青と赤 シアンとイエローの色違いの修正を試みていますが・・・

このTFTモジュールの描画に、この ST7735.py は使われていると思うのですが

ST7735.py の中で
# Constants for interacting with display registers.
ディスプレイレジスタと対話する為の定数
の項目の中に

70行目 に

ST7735_COLMOD = 0x3A

が有る。
カラーモード に関する定数らしいが
カラーモード」と有るので、ここを弄ってみます。

この値を、変えてもエラーも発生しないし、変えても描画に変化が生じない
更に、コメントアウトしてもTFT描画に変化無く 色違いで「正常に」描画する。

242目辺りにも

self.command(ST7735_COLMOD) # set color mode

が、有る。

ここを、コメントアウトしても、
同様に、エラーも無ければ、TFTの描画も「正常」だ。

さっぱり、解りません。

oriri
Posts: 23
Joined: Sat Nov 21, 2020 4:25 pm

Re: 1.8インチTFT(ST7735S)色違い

Fri Jul 30, 2021 3:22 am

1.8インチTFT(ST7735S) の製品に, 何かプルタブのようなものが付いてるらしいけど
何色でしたか?

3種類の製品があるらしく, タブの色によって, 初期化の方法が異なるそうで

参考: http://blog.boochow.com/article/423965515.html

ton_katu
Posts: 88
Joined: Sun Jun 27, 2021 3:28 am

Re: 1.8インチTFT(ST7735S)色違い

Fri Jul 30, 2021 6:08 am

viewtopic.php?f=82&t=316135

に、書いたとおり
「緑:のタグです。

アルドウイーノではなく、RZPで困ってます。
アルドウイーノのWeb記事は、見ていますが、ヒントは
見つける事が出来ていません。

oriri
Posts: 23
Joined: Sat Nov 21, 2020 4:25 pm

Re: 1.8インチTFT(ST7735S)色違い

Fri Jul 30, 2021 7:45 am

ton_katu wrote:
Fri Jul 30, 2021 6:08 am
アルドウイーノではなく、RZPで困ってます。
アルドウイーノのWeb記事は、見ていますが、ヒントは
見つける事が出来ていません。
  • 製品が複数あること。それぞれ, 初期化方法(指定)が異なること。
  • (指定によっては) 同じような現象が出てるようなこと
を示してるわけですが …
今現在どのような指定になってますか?
(config.txt)

ton_katu
Posts: 88
Joined: Sun Jun 27, 2021 3:28 am

Re: 1.8インチTFT(ST7735S)色違い

Fri Jul 30, 2021 8:05 am

貴殿のおっしゃってる意味が解りません。

viewtopic.php?f=82&t=316135
にも、書いた通り
TFTモジュールは「MSP1803]でネット検索したら、ヒットする製品です。

この、赤・青、関係してシアン・イエローの色違いは
私のところだけで出ている現象では有りません。

ネットを見ると、たくさんヒットします。
ただ、今のところ、どこにもこの現象を解消している
Web記事は目にしていません。

ヒントも見つけられていません。

私が、やっている事は、この掲示板に
書いた通りです。

あなたに、この色違いについての解決方法をお持ちなら、
あなたならどう、解決するのか、是非、お知らせ下さい。

ton_katu
Posts: 88
Joined: Sun Jun 27, 2021 3:28 am

Re: 1.8インチTFT(ST7735S)色違い

Fri Jul 30, 2021 9:41 am

ST7735.pyの親の親のフォルダ、
[ Python_ST7735 ]の中の[ README.md ]に
https://github.com/TexasInstrumentsDIY/Python_ST7735
冒頭で
Python library to control an ST7735 TFT LCD display. Allows simple drawing on the display without installing a kernel module.
と言う文が有ります。
Google翻訳では、
「ST7735 TFTLCDディスプレイを制御するPythonライブラリ。 カーネルモジュールをインストールせずに、ディスプレイに簡単に描画できます。」
となります。

ここで、気になると言うか、意味がハッキリしない点があります。
~~カーネルモジュールをインストールせずに~~
とある点です。

と言うのも、ST7735.pyの中で
ここを「弄ったらダメだろう」というスクリプトに
[ # ]を打って、コマンドラインをキャンセルして描画を実行すると・・・

エラーも出ないし、描画は色違いがあっても「正常」に、TFTモジュールに描画する。

詰まり、[ ST7735.py ]は、TFT描画には関係していないのではと
思えるのです。

ここで言う、 「カーネルモジュール」とは、何でしょうか?

この文の kernel module とは、
もしかしたら、[ ST7735.py ]の事でしょうか?

もし、そうなら、ST7735.pyの中をどんなに「弄っても」
赤青問題解消には、関係しない事になるのではとなります。
実際、現象は、そうなっています。

ton_katu
Posts: 88
Joined: Sun Jun 27, 2021 3:28 am

Re: 1.8インチTFT(ST7735S)色違い

Fri Jul 30, 2021 11:17 pm

イメージ描画スクリプトで、

image.split() で画像をR,G,Bの各バンドに分割
image.merge() で再構成

出来ると言う事で、画像を色バンドごとに分けて、再構成して
通常のR,G,Bに出来る様ですが・・・・やって見ると・・・

b,g,r=image.split()
image = image.merge('RGB', (r, g, b))

line 60, in <module>
b,g,r=image.split()
ValueError: too many values to unpack

とエラー。

アンパックするには、何かが(「r,g,b」)多すぎると、言っている様です。

赤・緑・青の3つのバンド分割したいので、「ここは譲れない線」ですが。 :)
ここで、エラーを言われてもなぁ~ですが・・・・

ton_katu
Posts: 88
Joined: Sun Jun 27, 2021 3:28 am

Re: 1.8インチTFT(ST7735S)色違い

Sat Jul 31, 2021 6:00 am

まじか!

まじか!

解決!!

「犬も歩けば・・・・・」です。

エラー 消え、描画RGBで正常描画。問題解決。

大分、古いが『マンモス うれピー!!!』

たった、1文字追加で、解消。

なんですか!! これっ!!

青に表示されていた部分が、赤に。
顔色も「ピンクの肌色に」
参ったなぁ~~~

まるで。見事な「テーブル・マジック」を見せられたみたい。

マジですか!

スマホ画像は、色が悪いがTFT描画は満足の色合い・描画です。

『青」になっていた、コートが「赤に」(=原画どおり)なってます。

IMG_20210731_153858.jpg
IMG_20210731_153858.jpg (171.72 KiB) Viewed 822 times

ton_katu
Posts: 88
Joined: Sun Jun 27, 2021 3:28 am

Re: 1.8インチTFT(ST7735S)色違い

Thu Sep 09, 2021 1:52 pm

ラズパイOSのアップデートで描画出来なくなって居た

TFT描画、復活! 良かった。嬉しい!

もう出来ないかと諦めもあり 暫く、触っていなかったら、使い方を忘れた!!
脳の老化が激しい! :)

それにしても・・どう言う加減なんだろうか?

ラズパイOSが8月の末でアップデートして
Linux △□ 5.10.60+ #1449 Wed Aug 25 14:59:20 BST 2021 armv6lになった。

諦めて居たが、描画出来ない事が
「咽に刺さった魚の小骨」の様な感じ(ややオーバー)で、いつも気に掛かっていた。

もう一度と、やって見たら、
この1ヶ月間 全く、同じ仕掛けでエラーが出て描画しなかったのに 今は、描画する!! どうなっている?

スマホ画像では、はっきりしないが、
赤地に青丸は緑枠線を太く描き(幅3ピクセル)
ピンクの長方形は1ピクセルの枠
RZPzeroWにて
IMG20210909222243.jpg
IMG20210909222243.jpg (160 KiB) Viewed 331 times

ton_katu
Posts: 88
Joined: Sun Jun 27, 2021 3:28 am

Re: 1.8インチTFT(ST7735S)色違い

Sat Sep 11, 2021 2:36 am

Lチカの「ホタル」(増分)を学習すると、簡単なんだろうが・・・
Lチカを軽視して、「勉強」しなかったので、たったこれだけでも面倒。
TFTの描画では「赤地に青丸(ぬりつぶし)」で
奥から手前で、若干の「立体感」が感じられる、綺麗な発色だが
スマホ画像では、そう見えない。:)
[ Processing]のマウス・デモを「絵ずら」だけ、真似てみた・・・
IMG20210911110252.jpg
IMG20210911110252.jpg (122.53 KiB) Viewed 302 times

ton_katu
Posts: 88
Joined: Sun Jun 27, 2021 3:28 am

Re: 1.8インチTFT(ST7735S)色違い

Wed Sep 15, 2021 3:23 am

座標値を計算で入力出来るという。

参照先
https://pasopet.com/try_to_draw_line_with_python
ありがとうございます。

倣って、座標を計算で入力するようにしてみる.

今回は(X,Y)のX座標値を、range関数で作る。
--------------------
range( [開始値], [終了値]+1, [増分] ):
-----------------------
range関数は、[開始値]から[終了値]まで、[増分]で増加する値を生成できる。
[終了値]は、[終了値]+1を指定するところに注意。

71 for delta in range( 0, 129, 1) :
72 draw.line((( delta, 0),( 128-delta, 128)), fill=(0, 255, 0))

examples内の[shapes.py ]において
70行までは同じ。
71・72で、(青字に)緑の直線を、(0,0)から1ピクセル増分で引いた。
1ピクセルの増分だから塗りつぶしの出来上がりとなる。

これなら、たった2行の記述で済む。便利だ。

73 disp.display() でスクリプトを閉じる。

IMG20210915113802.jpg
IMG20210915113802.jpg (141.71 KiB) Viewed 187 times

Return to “日本語”