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

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

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

Kivyは、Pythonを用いたNUI開発のためのオープンソースフレームワーク。マルチタッチなど多くの入力に対応したNUIアプリなどを開発することができます。多くの環境で動作するクロスプラットフォームです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

3527閲覧

ラズパイに搭載したLCDパネルから取得されるx,y座標の値が違う

polinky310

総合スコア3

Kivy

Kivyは、Pythonを用いたNUI開発のためのオープンソースフレームワーク。マルチタッチなど多くの入力に対応したNUIアプリなどを開発することができます。多くの環境で動作するクロスプラットフォームです。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/16 16:17

前提・実現したいこと

ラズパイに搭載した3.5"LCDパネルをタッチすると、スイッチをON/OFFするものを作りたいと思ってします。以下のページを参考に、まずは同じものを作ろうと思いました。python,kivyは始めたばかりです。
http://independence-sys.net/main/?p=4363

使用しているLCDパネルは、ラズパイの大きさと同じ3.5"のパネルです。指またはペンで押すとマウスと同じ動作をし、ラズパイデスクトップ上では問題なく操作が出来ています。

★質問の内容
当LCDパネルを使い、kivy上でマウスの座標を取得すると、x,yの座標が誤って取得されるのですが、設定ファイルはあるのでしょうか?

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

上記のpython+kivyプログラムを起動させると動くには動くのですが、「リレーをON」ボタンを押すとOFFの動作が行われ、「リレーをON」の少し上部を押すと、ONの動作が行われます。

マウス座標を取得するプログラムを作成して4隅を突いてみたところ、
左上 pos=(0.93, 0.96) 右上 pos=(0.90, 0.07)
左下 pos=(0.07, 0.93) 右下 pos=(0.04, 0.06)
のような値が取得され、本来ならkivyはWindowsとは異なり第1象限の値となるとのことで、
左上 pos=(1,0)   右上 pos=(1,1)
左下 pos=(0,0)   右下 pos=(0,1)
のようにならなければならないと思います。つまりy座標が逆に取得されているようなのですが、これを修正するkivy、またはLCDパネルの設定ファイルはあるのでしょうか?
もし無い場合、プログラムをどのように修正すれば正常に座標を取得することが出来るのでしょうか?

該当のソースコード

Python

1from kivy.app import App 2from kivy.uix.widget import Widget 3 4class KurikkuInput(Widget): 5 def on_touch_down(self, touch): 6 print(touch) 7 8class IntroKivy(App): 9 def build(self): 10 return KurikkuInput() 11 12if __name__ == "__main__": 13 IntroKivy().run()

試したこと

マウスをUSBポートに接続して座標が得られないかを試してみたのですが、マウスクリックでは何もイベントが発生しませんでした。

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

Python:3.7.3
kivy:
LCDパネル:Elecrow 3.5インチTFT LCD ディスプレイ 解像度480*320 タッチスクリーン モニター

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

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

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

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

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

guest

回答2

0

polinky310さん、

このデバイスは持っていないので、こちらで確認できませんでしたが、、

メーカーのページにドライバとタッチスクリーンのキャリブレーションの仕方が書いてあります。こちらは、試しましたか?
https://www.elecrow.com/wiki/index.php?title=3.5_Inch_480x320_TFT_Display_with_Touch_Screen_for_Raspberry_Pi

こちらからは、バイナリでのドライバ配布のようなので、解決しない場合は、メーカーに問い合わせた方がよいかもしれません。

投稿2020/05/17 04:30

mt08

総合スコア1825

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

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

polinky310

2020/05/17 17:50

mt08さん、お世話になります。 キャリブレも行ってみました。通常状態ではタッチの部分にポインタが移動します。 試しにパラメータ中のX軸Y軸交換フラグを変更すると、右にタッチするとポインタは左に移動します。 でもkivy上で動かすと、動作に変更がなく別の部分が反応します。 ドライバに480x320の付くものと付かないものがあるようなので、その違いも含め、メーカに問い合わせをしました。 ご回答ありがとうございました。
guest

0

そのタッチパネルのことについてはよー知りませんが、
抵抗膜式のタッチパネルは、抵抗の分圧比で出力されるため、素の出力は、0~1のアナログ値として出てきます

画面上の特定の位置のタッチで出力がどれだけになるのかをみて、それをもとに画素位置に変換する必要があります

投稿2020/05/16 23:12

y_waiwai

総合スコア87774

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

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

polinky310

2020/05/17 17:44

y_waiwaiさん、お世話になります。 kivyを動作させない状態ではタッチした部分にポインタが移動し、きちんと反応します。 もう一度、最初のインストールからやってみます。ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問