TFT+Dokunmatik Kontrol…

Yayınlandı: 23 Şubat 2014 / İncelemeler
Etiketler:, , , , ,

20120726194618_94079 Günümüzde artık pek çok cihazın arayüzü renkli bir ekran ve onun üzerine konumlandırılmış dokunmatik panellerden oluşmakta. Fizksel tuşların, butonların hızla ortadan kalktığı ve ekranların artık daha etkileşimli olduğu günlerdeyiz.  Ben de ne zamandır uğraşmak istediğim fakat fırsat bulamadığım TFT ve dokunmatik panel ikilisini kullanarak bir iki basit deneme yaptım.  Kullandığım programlar mikroelektronika firmasının ürettiği Visual TFT ve onunla uyumlu çalışan MikroC pro for ARM derleyicisi. Donanım olarak ise ILI9341 kontrolcüye sahip bir 2.8″ boyutlarında bir TFT ekran, STM32F4DISCOVERY kiti ve kendi yapmış olduğum dokunmatik kontrolcüsünü kullandım. Visual TFT aslında bizim için pek çok şeyi hallediyor.  Bize ise kafamızdaki projeyi hayata geçirmek kalıyor.

Aşağıda uygulamalarıma ait videoları görebilirsiniz.

 

yorum
  1. muratpolata dedi ki:

    Hocam merhabalar, elimde STMF407DISCOVERY ve 5″ TFT SSD1963 dokunmatik ekran var.VTFT’nin örnek kodlarını discovery karta uyguladığımda CS,RD,WR,RST,RS ve Data portu olarak GPIOD portunu kullanıyorum ve hata veriyor ve değiştiremiyorum. GPIOF portunu kullanmam lazım sanırım ama kartta F portu yok. Bununla ilgili bir örnek var mı? Ya da nasıl yapabilirim.
    Teşekkür Ederim.

    • mikrodunya dedi ki:

      Custom mod seçip kendiniz belirleyin pinleri.

      • muratpolata dedi ki:

        Hocam,general kısmındaki ayarlar tamam tft kisminda bled to do diyor. Benim ekranda böyle bir sey yok 0 yaziyorum hata veriyor.tft modul connection ayarlarinda bled nedir anlamadim. Touch panel module coonctions ayarlarinda sbit drive left right to do diyor bunlar neden çıkıyor. Amacim sadece ekrana bir resim basmak. Glcd de olduğu gibi.driver.c kisminds bir dunya sey çıkıyor. Ekrana sadece resim basmak için ne yapmam gerekiyor. Karti seciyorum,clock ayari ssd1963 modül onlari seciyorum diğer kisimlarda hep bir sorun çıktı. Yardımcı olursaniz sevinirim.

      • mikrodunya dedi ki:

        Touch kısmını boş bırakın. Bled ise arka ekran aydınlatma ayarıdır onu da boş bırakın. Siz en iyisi bana proje dosyanızı gönderin, müsait olduğum zaman bir bakayım.

  2. muratpolata dedi ki:

    Hocam merhaba, ssd1963_8Bit secince ekrana resim basabildim. Önceden sadece ssd1963 seciyormusum. Simdi ekrana bir buton koyup butona basinca gpiod 12 deki ledi yakmaya çalışıyorum ama beceremdim tabi.butonu mainc ye char tipinde bir sey mi tanimlamam lazim. Birde if(Button==1); led=1; gibi birseyi kabul etmiyor.Birde event kisminda kodu buraya yazin diyor. Iyice çorba oldu. Ekranda butona basip kart ustunde led yakma kodu rica etsem.Çokmu olur acaba. Aslinda bu da modern blink uygulamasi. Bütün kaynaklar önce led yak sondur uygulamasi ile basliyor. Siz direnç hesaplama ile girmissiniz çok güzel ama birde bizi düşünün 🙂

  3. muratpolata dedi ki:

    hocam yanıtla deyince gmailden geldiğini sandım yanlışlıkla oldu.

  4. muratpolata dedi ki:

    Hocam merhaba,Touch Panel kısmında ADC ReadX ve ReadY 8-9, bağlantı kısmında ise GPIOB_ODR.B8|GPIOB_ODR.B9 drive x left 1 drive x right 8,direve y up 9 ve drive y down 0 yazdım.
    void Init_ADC() {
    ADC_Set_Input_Channel(_ADC_CHANNEL_8 | _ADC_CHANNEL_9);
    ADC1_Init();
    Delay_ms(100);

    ADC Threshold Value 1500

    Sizin örnekteki kodları da init fonksiyonlarına yazdım, ekranda calibrasyon çıkıyor ama ekrana dokununca algılamıyor. Bu adc_init1 bağlantılarını ekranda nereye bağlamam gerek. T_CLK,T_CS,T_DIN,T_DO,T_IRQ ve SD kart bağlantısı var başkada zaten pin yok…

    Netten araştırıyorum bilgi de yok ki doğru dürüst, microc nin kütüphanesine bakıyorum bir de yapılmış örneklere daha fazla bilgi çıkmıyor.

    • mikrodunya dedi ki:

      Ekranın arka kısmında kalan, aşağıdaki resimde gösterdiğim 4’lü kablonun ucunu bulunduğu yerden sökeceksiniz.

      Şuradaki kartı satın alacaksınız veya kendiniz yapacaksınız. Çıkardığınız ucu buradaki konnnektöre bağlayacaksınız. Diğer ucu da işlemcinin gerekli pinlerine bağladığınızda dokunmatiği kullanabilirsiniz.

      • muratpolata dedi ki:

        Çok teşekkür ederim Hocam Microe 23$ demiş karta şaka gibi 🙂 En iyisi ben kendim yapayım ve deneyeyim.Direkt ekran kartının üzerinden neden çıkış olmuyor ki microe kendi VTFT kütüphanesine göre ürün satmak için yapmış olamaz sanırım.

      • mikrodunya dedi ki:

        Kartı ben de kendim yaptım 5TL’ye mal oldu. Aslında sizin satın aldığınız kartta touch screen entegresi mevcut. Bu entegre verileri spi ve/veya i2c üzerinden yolluyor. Fakat Mikroelektronika’nın visualtft isimli programı bu entegreleri desteklemiyor. Biz bu yaptığımız kartla touch paneli doğrudan analog olarak okuyoruz.

  5. muratpolata dedi ki:

    Hocam merhaba, ekrana dokunduğum zaman çalışmıyor. Kalibrasyon değerleri var onu manuel yapıyorum ekran açıldığı zaman 2 noktaya dokun diyor ondan sonra koymuş olduğum buton geliyor fakat butona basınca çalışmıyor. Proje dosyasını yükledim rica etsem müsait bir zamanda bakabilir misiniz? Artık pes etmek üzereyim 🙂 Soru sormaya da yüzümüz kalmadı, örnekleri de inceledim ama nerede hata yapıyorum bulamadım. En son kart arızalı falan diyeceğim yenisini alacağım.

    http://s3.dosya.tc/server27/5GQ3Fv/TFTekranButon.rar.html

  6. muratpolata dedi ki:

    Hocam merhaba iyi akşamlar kiti is yerinde biraktim akil sagligim bozulacakti :-)fakat bottom left right ve up olarak yer degistirerek de deneme yaptim. CN2 konnektoru ekrandan gelen kisim orayi yazana gore yaptigim karta bagliyorum. CN1 konnektöru 6 li olan vcc ve gnd bağlı geriye 4 pin kalıyor. Bu 4 pini stm de nereye baglamam lazim. Isi drive a ve drive b bozuyor. Adc pinleri B0,B1,B8 ve B9 bu stm deki pinleri cn1 konnektorunun ilk dordune her çeşit bağladım ama olmadı. Drive a ve drive b ilk pin stm de nereye bagladiniz. Olmadi yarin karti tekrar yapacağım transistorler yoktu muadil kullandim calismadi orginal aldim yine calismadi yapmadığım ne kaldi bilmiyorum.sabriniz icin teşekkür ederim.

      • muratpolata dedi ki:

        Hocam merhaba, dediğinizi de yaptım fakat bir değişiklik olmadı. Yazılımsal bir eksiklik mi var acaba? Neden olmadığını da anlamış değilim. CN1 ve CN 2 iki adet konnektör var.CN2 zaten sökmüş olduğum ekranın arkasındaki kartla alakalı, onunda sırası Yup,Xleft,Ydown,Xright şeklindeydi.bende up=top, left=left,down=bottom, right=right diye bağladım. CN1 konnektörü Vcc ve GND zaten sabit diğer 4 ucun 2 tanesi Analog giriş STM nin 8 ve 9 kanalı olan PB0 ve PB1pinleri. Diğer 2 tane ise çıkış pinleri olan PB8 ve PB9 bunlara da microelectronica DriveA ve DriveB demiş.Bunları yaptım kalibrasyon için ekran geliyor basmayınca çalışmıyor, belirtilen yerlere bastığım zaman kalibrasyonu geçiyor. İleri butonu çıkıyor ama ileri butonuna basınca diğer akrana ledleri yakarak geçemiyorum.

        Bu arada dün telefondan yazdığım için mesaj bende gitmedi göründü 2 kere yazmışım, görüntü kirliliği olmaması açısından istediğiniz mesajları silebilirsiniz. Çok teşekkür ederim…

      • mikrodunya dedi ki:

        Kodlarınızı kontrol ettiğimde herhangi bir eksikliğe rastlamadım. Çok büyük ihtimal ile bağlantılarda problem var.

  7. muratpolata dedi ki:

    Hocam merhabalar bütün bağlantıları falan kontrol ettim tekrardan bir değişiklik olmadı bağlantıların doğru olduğunu düşünüyorum. Ancak kalibrasyonu manuelden presete(Xmin=0 Xmax=800 Ymin=0 Ymax=480 belirliyorum) aldığımda ve butonların boyutunu da 480*800 yani tam ekran yaptığımda butonlar çalışıyor ve ekran değişip ledler yanıyor. Butonların boyutunu küçültünce yine çalışmıyor. Kalibrasyonla alakalı bir sorun olduğunu düşünüyorum. Manuel kalibrasyon yapınca SD kart olmadığı için kalibrasyon değerlerini tutamıyor olabilir mi? Siz de sanırım kart kullanmıyorsunuz değil mi? bir de ekran çok yavaş değişiyor 168Mhz de çalıştırmama rağmen.

  8. adnan 42 dedi ki:

    hocam saygılar öncelikle hizmetleriniz için minnettarız ben visual tft de birkaç tane label yaptık üretilen kodlarda tek label için fonksiyon var değişik label ları nasıl ekranda göstereceğiz yada text değerlerini değiştirip ekrana yeniden nasıl yazacağız komple draw screen yapmadan

    • mikrodunya dedi ki:

      Proje kodlarınızı görmeden yorum yapmam zor.
      Şimdilik sadece şunu söyleyebilirim. DrawLabel(&labelx) şeklinde label bastırılabiliyor ekrana diye hatırlıyorum.

  9. adnan 42 dedi ki:

    Tesekkurler. X yerine label nosunu yazıyoruz galiba. Bu kadar yardım yeterli.

  10. timur dedi ki:

    Merhaba devreyi kurup yükledim TFT Proto kullanıyorum. Kalibrasyon ekranı geliyor, Sırası ile ile dokunuyorum dokunmayı algılıyor. renk seçme ekranına gelince hiçbir dokunmayı algılamıyor.
    Dokunmayı ince uçlu tft kalemi ile yapıyorum elle yanılma olmasın diye fark etmiyor. Sizce sorun neden kaynaklanabilir.

  11. muratpolata dedi ki:

    Hocam Merhabalar, ProgressBarı çalıştırmak için nasıl bir kod yazmak gerekiyor. Mesela button için event kısmında buttona basılınca ne yapılması ile ilgili bir fonksiyon açıyor, komutu oraya yazabiliyoruz. Örneğin buttona basınca led=1; olsun gibi. Fakat progresbar seçilip ekrana yerleştirilince herhangi bir şey gelmiyor. VTFT nin kütüphanesi de yok komutların ne işe yaradığı ve nasıl kullanıldığını da bulamadım. Micropascal ile yazılmış bir kod var onuda pascal bilmediğimden çözemedim. Yardımcı olabilir misiniz?
    Teşekkür ederim iyi çalışmalar…

  12. muratpolata dedi ki:

    Yine yeniden ben 🙂 Hocam Merhabalar microe’nin sitesinde ve internette doğru dürüst bir şey bulamadım.MicroeTeam’ in kendi yapmış olduğu örnekte de aynı problem var. TFT Screen Flicker- ekran titremesi olayı için…RTC ile ekrana saniyeyi bastığı zaman ekran soldan sağa titreme yapıyor. Küçük fontlarda belli-belirsiz ama büyük fontlarda çok rahatsız edici geliyor. Aynı problem anlık ölçüm yapılacak örneğin sıcaklık,nem vs gibi değeri de büyük font ekrana basarken oluyor. Bununla alakalı bir çözüm yazılımsal olarak mümkün müdür?
    ……..
    ……

    TFT_Set_Brush(1,Screen1.Color, 0, 0, 0, 0);
    TFT_Set_Pen(Screen1.Color, 0);
    TFT_Rectangle(Label1.Left, Label1.Top, Label1.Left + 200, Label1.Top + 100);
    DrawLabel(&Label1);
    …..
    ….
    ..

  13. muratpolata dedi ki:

    Hocam bakabildiniz mi? Ben mikroelectronicaya yazdım, bana söyledikleri MCU hızından kaynaklanıyor diyor, yazılımsal olarak düzeltilemez dediler. Ekranı büyük fontlarda yeterince hızlı yenileyemiyormuş. Max 168 MHz olabilir. DrawLabel fonksiyonu labeli silip yeniden bastığı için numaralarda yani rakamsal değerlerde flicker olur diyor. Ama bilmiyorum bana yine de pek mantıklı gelmiyor. Şimdi saatte saat,dakika kısmı her zaman yenilenmiyor, saniye kısmı ise saniyede bir silinip yeniden basılıyor. belki saniye kısmını ayrı basarsak olabilir ama buda korsan çözüm olacak gibi duruyor. Sİz ne düşünüyorsunuz?

    • mikrodunya dedi ki:

      Videoyu izlediğimde ilk aklıma gelen şey, saat,dakika,saniye ve am/pm verileri için ayrı ayrı birer label tanımlamak geldi. Eğer bu verileri bir rtc üzerinden okuyorsanız her seferinde değişim olup olmadığını kontrol ederek, eğer değişim varsa yenileme işlemi yaptırabilirsiniz. Korsan çözüm olmaz. Sonuçta ekranın belirli bir bölgesi yenileniyor ve bu da illa ki zaman kayıplarına sebebiyet verecektir.

  14. burçin dedi ki:

    Merhabalar,
    Esp8266 ile tft 2.8 ekrana merhaba gibi basit bir yazı yazdırmak istiyorum.Bu anlamda basit kod ve bağlantı şeması için yardımcı olabilir misiniz?

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s