Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: blcouz - 19 Şubat 2024, 10:49:25

Başlık: stm32 ve 4 wire resistive ts bağlantısı
Gönderen: blcouz - 19 Şubat 2024, 10:49:25
Bir kaç gündür başlıkta yazdığı gibi nucleo 64(f446) ya arduino uno shield olarak tasarlanmış bir ekran bağlamaya çalışıyorum. Sorun şu dokunmatiği hiç bir şekilde çalıştıramıyorum. Şuanda aslında dokunmayı algılama kısmındayım .
Bir app note ta gördüğüm algoritmayı uygulamaya çalışıyorum fakat sonuç alamıyorum. Algoritma  şu şekilde X+ ve X- yi GND ye bağla Y+ ve Y- yi input ve pull up olacak şekilde ayarla eğer dokunma gerçekleşirse Y+ ve Y- den okuduğumuz dijital değer 0 olacaktır fakat ne yaptıysam da Y+ ve Y- de bu şekilde bir değişim yakalamayadım. Aslında arduino da kendi kütüphanesi var fakat ben stm32cube ide üzerinde çalışıyorum(Ekranda yada dokunmatiğinde problem yok). Aslında basit gibi görünen bu işlemde ben neyi yanlış yapıyor olabilirim bir fikriniz varmı.
Kullandığım shield :

(https://i.ibb.co/Z6tQY8R/629c6833f3a3a94c84a0832341f47f4d883bc368.jpg) (https://ibb.co/Z6tQY8R)


Kullandığım Kart :
https://www.st.com/en/evaluation-tools/nucleo-f446re.html (https://www.st.com/en/evaluation-tools/nucleo-f446re.html)

Yazdığım kod:



(https://i.ibb.co/BGDHXwB/Ekran-g-r-nt-s-2024-02-19-103742.png) (https://ibb.co/BGDHXwB)

(https://i.ibb.co/VY61GWD/Ekran-g-r-nt-s-2024-02-19-104257.png) (https://ibb.co/VY61GWD)
Başlık: Ynt: stm32 ve 4 wire resistive ts bağlantısı
Gönderen: kimlenbu - 19 Şubat 2024, 11:52:51
Kullandığınız ekran ne ? Genelde Resistive touch, kontrolcü çipi ile birlikte gelir, siz sadece registerları okuyup interrupt'ları algılarsınız. Ham şekilde sürülen ekran olduğuna emin misiniz ?
Başlık: Ynt: stm32 ve 4 wire resistive ts bağlantısı
Gönderen: blcouz - 19 Şubat 2024, 11:56:43
Sürücü yok üzerinde malesef
Başlık: Ynt: stm32 ve 4 wire resistive ts bağlantısı
Gönderen: alikeskinkilic - 19 Şubat 2024, 14:01:37
Alıntı yapılan: blcouz - 19 Şubat 2024, 10:49:25Bir kaç gündür başlıkta yazdığı gibi nucleo 64(f446) ya arduino uno shield olarak tasarlanmış bir ekran bağlamaya çalışıyorum. Sorun şu dokunmatiği hiç bir şekilde çalıştıramıyorum. Şuanda aslında dokunmayı algılama kısmındayım .
Bir app note ta gördüğüm algoritmayı uygulamaya çalışıyorum fakat sonuç alamıyorum. Algoritma  şu şekilde X+ ve X- yi GND ye bağla Y+ ve Y- yi input ve pull up olacak şekilde ayarla eğer dokunma gerçekleşirse Y+ ve Y- den okuduğumuz dijital değer 0 olacaktır fakat ne yaptıysam da Y+ ve Y- de bu şekilde bir değişim yakalamayadım. Aslında arduino da kendi kütüphanesi var fakat ben stm32cube ide üzerinde çalışıyorum(Ekranda yada dokunmatiğinde problem yok). Aslında basit gibi görünen bu işlemde ben neyi yanlış yapıyor olabilirim bir fikriniz varmı.
Kullandığım shield :

(https://i.ibb.co/Z6tQY8R/629c6833f3a3a94c84a0832341f47f4d883bc368.jpg) (https://ibb.co/Z6tQY8R)


Kullandığım Kart :
https://www.st.com/en/evaluation-tools/nucleo-f446re.html (https://www.st.com/en/evaluation-tools/nucleo-f446re.html)

Yazdığım kod:



(https://i.ibb.co/BGDHXwB/Ekran-g-r-nt-s-2024-02-19-103742.png) (https://ibb.co/BGDHXwB)

(https://i.ibb.co/VY61GWD/Ekran-g-r-nt-s-2024-02-19-104257.png) (https://ibb.co/VY61GWD)

Eğer arkadaşın dediği gibi bir sürücü ile gelmedi ve 4 kablo ile okuyor ve bunlardan hangisinin x+ hangisinin x- olduğunu biliyor ve buna rağmen x+ yı gnd ye bağlıyorsanız problem buradadır.ayrıca bir sürücüsü yoksa değer dijital değil analog değer okursunuz yani kanalı ADC modülü ile okumalısınız.daha önce kullandığımdan değil de işin bana mantıklı gelen tarafı Y den gelen tarafı ayrı okuyup y eksenindeki koordinatı bulur X ekseninde gelen kordinatı okuyup x eksenini bulursunuz yani x- yi gnd ye bağlayın y- gibi siz nedense x- ile x+ yı birbirine bağlayıp onuda gnd ye bağlamışsınız bence ürünün bilgi sayfasına bir bakın

19 Şubat 2024, 14:06:22
bence şöyle hayal etmelisiniz iki ayrı direnç var x direnci ve y direnci bir bacağını pull up yada down yaparak gerilim bölücü yapıp birleşim yerinden değişen dirence göre analog çıkış alırsınız aynı iki ayrı pot kullanıyormuş gibi.sonrasında map fonksiyonu ile ekranınızın ölçüsüne göre limitleri verirsiniz x ve y koordinatı gelir size
Başlık: Ynt: stm32 ve 4 wire resistive ts bağlantısı
Gönderen: moderasyon - 19 Şubat 2024, 14:19:40
https://www.instructables.com/4-Wire-Touch-Screen-Interfacing-with-Arduino/
https://stackoverflow.com/questions/48670806/stm32-and-4-wire-resistive-touch-screen
https://ww1.microchip.com/downloads/en/AppNotes/doc8091.pdf
Başlık: Ynt: stm32 ve 4 wire resistive ts bağlantısı
Gönderen: blcouz - 19 Şubat 2024, 14:44:23
@alikeskinkilic hocam ilk aşamada dokunma gerçekleşip gerçekleşmediğini algılamak için uğraşıyorum eğer bu aşamayı geçebilirsem adc işine bakacağım. Ne kadar gerekli olup olmadığı tartışılabilir belki ama şuanki hesehim dokunulup dokunulmadığını algılamak.
Başlık: Ynt: stm32 ve 4 wire resistive ts bağlantısı
Gönderen: mehmet - 19 Şubat 2024, 15:31:13
X+ -> GND
X- -> Vcc
Y+ -> input
Y- -> ADC okuma
şeklinde deneyin öncelikle...
Başlık: Ynt: stm32 ve 4 wire resistive ts bağlantısı
Gönderen: alikeskinkilic - 19 Şubat 2024, 16:52:02
Alıntı yapılan: moderasyon - 19 Şubat 2024, 14:19:40https://www.instructables.com/4-Wire-Touch-Screen-Interfacing-with-Arduino/
https://stackoverflow.com/questions/48670806/stm32-and-4-wire-resistive-touch-screen
https://ww1.microchip.com/downloads/en/AppNotes/doc8091.pdf
:) evet yanılmışım hayal ettiğim gibi değilmiş iç bağlantıları unutun dediklerimi ??? halbuki benim hayalim hala bana daha mantıklı geliyor
Başlık: Ynt: stm32 ve 4 wire resistive ts bağlantısı
Gönderen: blcouz - 19 Şubat 2024, 19:16:48
Arduino Uno kartı ile kendi kalibrasyon uygulamasını çalıştırarak Aşaıdaki çıktıyı aldım.
TouchScreen.h GFX Calibration
Making all control and bus pins INPUT_PULLUP
Typical 30k Analog pullup with corresponding pin
would read low when digital is written LOW
e.g. reads ~25 for 300R X direction
e.g. reads ~30 for 500R Y direction

Testing : (A1, D7) = 34
Testing : (A2, D6) = 24
ID = 0x9486

cx=914 cy=956 cz=460  X, Y, Pressure
cx=914 cy=570 cz=499  X, Y, Pressure
cx=918 cy=198 cz=599  X, Y, Pressure
cx=553 cy=953 cz=348  X, Y, Pressure
cx=564 cy=195 cz=586  X, Y, Pressure
cx=220 cy=947 cz=239  X, Y, Pressure
cx=198 cy=564 cz=438  X, Y, Pressure
cx=196 cy=195 cz=558  X, Y, Pressure

*** COPY-PASTE from Serial Terminal:
const int XP=6,XM=A2,YP=A1,YM=7; //320x480 ID=0x9486
const int TS_LEFT=938,TS_RT=180,TS_TOP=968,TS_BOT=179;

PORTRAIT  CALIBRATION     320 x 480
x = map(p.x, LEFT=938, RT=180, 0, 320)
y = map(p.y, TOP=968, BOT=179, 0, 480)

LANDSCAPE CALIBRATION     480 x 320
x = map(p.y, LEFT=968, RT=179, 0, 480)
y = map(p.x, TOP=180, BOT=938, 0, 320)
Başlık: Ynt: stm32 ve 4 wire resistive ts bağlantısı
Gönderen: blcouz - 19 Şubat 2024, 22:43:27
Bugün de olmadı başarabilirsem yazarım. hi-z olayı galiba tam olarak olmuyor. emin değilim
Başlık: Ynt: stm32 ve 4 wire resistive ts bağlantısı
Gönderen: blcouz - 21 Şubat 2024, 18:45:54
Pinler doğru fakat TFT nin RD pini bir şekilde olaya dahil oluyor. Sebebini bilmediğim halde eğer RD pinini VCC ye bağlarsam sorun çözülüyor. O vcc ye bağlı değilken dokunmadığımda 3.3V olması gereken Y+ pininden 1.2 V alıyordum onu vcc ye bağlayınca düzeldi.

21 Şubat 2024, 18:46:26
Teşekkür ederim ilgilendiğiniz için.