This post is also available in:
Dokunmatik Panel Kütüphanesi Kullanımı Genel
Dokunmatik Panel Sürücü Devresi
- Fonksiyonlar
- Örnek Kodlar
- Rezistif Dokunmatik Panel Kullanımı Açık Kaynak Kod Kütüphaneyi Satın Almak için Tıklayınız
- Ücretsiz kütüphane dosyaları (.mcl)
DOKUNMATİK PANEL KÜTÜPHANESİ KULLANIMI
Bu bölümde kütüphanede bulunan fonksiyonlar tek tek açıklanacaktır. Anlaşılamayan noktaları ve hata bildirimlirini ” Soru-Cevap” forumuna yapabilirsiniz
Önemli Notlar:
- Rezistif dokunmatik paneller direnç esasına göre çalışır
- Bu kütüphane 4 tel çıkışlı rezistif dokunmatik panelleri kontrol etmek amacı ile C dili ile MikroC derleyicisinde yazılmıştır
- Kontrol için PIC18 ailesi mikroişlemci seçilmiştir
- Sürücü olarak MikroElektronika firmasının devresi kullanılmıştır.
- Tavsiye olarak , her açılışta kalibrasyon yapılmak istenmiyorsa hesaplanan sapma
payları “Eproma” kayıt edilebilir böylece her açılışta oradan değer okunur ve
sürekli kalibrasyon yapılmasına gerek kalmaz - Dokunmatik kütüphane videosunda göreceğiniz “yazı yazma” ve “pixel “ fonksiyonları kendi yazmış olduğum kütüphaneye aittir. Bu sebeple standart mikroc kütüphanesi kullanıyorsanız o kütüphanenin fonksiyonlarını yazmalısınız ya da buradan indirerek benim kütüphanemi kullanabilirsiniz( MikroC GLCD EKRAN KÜTÜPHANESİ – (SAP1024B – T6963C))
- ÖNEMLİ! – Analog Dijital çevrim ile ilgili olarak referans gerilimi besleme gerilimi olduğu için bu hatta yaşanacak parazitler hesaplamalara negatif olarak yansıyacaktır bu sebeple besleme devrenizi parazitlerden arındırmanız gereklidir ya da bu devreyikullanabilirsiz.(+5v -5v 3.3v SWITCH MOD REGULATOR)
DOKUNMATİK PANEL SÜRÜCÜ DEVRESİ
Devre İçin Gerekli Parçalar
- 1 ADET – 4 Pin FPC konnektör ( dokunmatik panel çıkışı için) – mutlaka kullanılmalı jelatin uç lehim yapılmamalıdır
- 2 ADET – 100 nf Polyester Kondansatör
- 2 ADET – 47K Direnç
- 8 ADET – 1K Direnç
- 2 ADET – 10K Direnç
- 3 ADET – BC546 Transistör
- 2 ADET – BC556 Transistör
PIN TANIMLAMASININ YAPILMASI
Kütüphanedeki fonksiyonların Dokunmatik Panel ile iletişim kurup onu kullanabilmesi için bir takım portların ayarlanması ve bağlantının buna göre yapılması gerekir. Pin bağlantıları ile ilgili aşağıdaki kodları inceleyebilirsiniz
Pin Tanımlama Kodları //DOKUNMATİK PANEL PİNLERİ////////// sbit surucu_a at RA5_bit; //surucu_a pini sbit surucu_b at RB4_bit; //surucu_b pini sbit analog_x at RA0_bit; //analog port ucu pini sbit analog_y at RA1_bit; //analog port ucu pini sbit surucu_a_Direction at TRISA5_bit; //surucu_a pini sbit surucu_b_Direction at TRISB4_bit; //surucu_b pini sbit analog_x_Direction at TRISA0_bit; //analog port ucu pini sbit analog_y_Direction at TRISA1_bit; //analog port ucu pini
Yukarıda bulunan surucu_a , surucu_b , analog_x ve analog_y uçları devre şemasında belirtilmiştir.
1-)FONKSİYONLAR
1A-) D_PANEL_INIT Fonksiyonu
Amacı :
Inıt fonksiyonu, kullandığımız dokunmatik panelin yazılım tarafından analiz edilmesini sağlar bu sebeple burada kullanılan panelin genişliği,yüksekliği belirtilir
Ayrıca dokunmatik panel için PIC in hangi analog kanalından okuma yapılacaksa onlarda belirtilir.
Ana Fonksiyondur mutlaka en başta çağırılmalıdır
Kullanımı:
D_PANEL_INIT(unsigned int Genislik , unsigned int Yukseklik ,unsigned char x_analog_kanali,unsigned char y_analog_kanali) – şeklindedir
-Genislik: Kullanılan panelin pixel olarak genişliğini ifade eder
-Yükseklik : Kullanılan panelin pixel olarak yüksekliğini ifade eer
-x_analog_kanali : PIC in hangi analog kanalı kullanılacaksa (ÖR: AN1 ise 1 yazılır) yazılır
-y_analog_kanali : PIC in hangi analog kanalı kullanılacksa (ÖR: AN0 ise 0yazılır) yazılır
Örnek:
D_PANEL_INIT(240,128,0,1) – Yukarıda pin tanımlamasına bakıldığında X in analog kanalı AN0 ve Y nin analog kanalı AN1 olduğu görülür
1B-) D_PANEL_X_OKUMA ve D_PANEL_Y_OKUMA Fonksiyonları
Amacı:
X ve Y düzleminde okuma yapar ancak büyük bir fark olarak direk kordinatları okumaz dokunulan noktada dokunmatik panelden ölçülen ham analog (işlem
görmemiş) değerleri okur
Dokunulan alanın değerlerini “float “değerinde geri döndürür.
Kullanımı:
D_PANEL_X_OKUMA( ) – şeklindedir parametre almaz
D_PANEL_Y_OKUMA( ) – şeklindedir parametre almaz
1C-) D_PANEL_DOKUNULDU_MU Fonksiyonu
Amacı:
Panele dokunulup dokunulmadığını sorgular, dokunulmuşsa 1 ,dokunulmamışsa 0 değerini geri döndürür
Kullanımı:
D_PANEL_DOKUNULDU_MU(unsigned int hassasiyet) – şeklindedir
-hassasiyet : “hassasiyet” parametresi okunması istenen tavan değeri belirtir örneğin; “hassasiyet =10 ” ise 10 degerinin üstüne çıkılırsa dokunulmuş sayar böylece dokunma hassasiyeti ayarlanabilir
Örnek:
Eğer panele dokunulduysa işlemleri gerçekleştir
if(D_PANEL_DOKUNULDU_MU(50)==1)//hassasiyet 50 ayarlandı değer 50 yi aşarsa 1 değer geri dönecektir { işlem }
1D-) D_PANEL_KALIBRASYON_NOKTA_1-2-3-4 Fonksiyonları
Amacı:
Dokunmatik paneli kalibre eder.
Kalibrasyon için gerekli dört noktadan değer toplar. Her fonksiyon başarılı olarak sona erdiğinde 1 değeri geri döndürür. Bu değer kalibrasyon hesaplamalarında
kullanılacak ham değerlerdir
Kullanımı:
D_PANEL_KALIBRASYON_NOKTA_1( ) – şeklinde kullanılır parametre almaz
D_PANEL_KALIBRASYON_NOKTA_2( ) – şeklinde kullanılır parametre almaz
D_PANEL_KALIBRASYON_NOKTA_3( ) – şeklinde kullanılır parametre almaz
D_PANEL_KALIBRASYON_NOKTA_4( ) – şeklinde kullanılır parametre almaz
Örnek:
NOT: Bu fonksiyonlar aşağıdaki gibi bir harici fonksiyon içinde kullanılmalıdır. Çünkü kullanıcıya dokunması gereken noktalar oluşturulmalıdır. Bu noktalar oluşturulurken hangi ekran kütüphanes kullanılıyorsa onun fonskiyonları ile noktalar oluşturulmalıdır.
Fonksiyon main in üstünde tanımlanmalıdır.
void kalbire_et()//herhangi bir isim verilebilir kalibrasyon zamanı bu isim ile çağırılacak { do{ SAP1024_YAZI_YAZMA(1,8,"1.Noktaya Dokunun");//SAP1024B GLCD kutuphanesi ile oluşturulmuş yazı SAP1024_PIXEL((GENISLIK_D*20)/100,(YUKSEKLIK_D*80)/100,1);//SAP1024B GLCD kütüphanesi ile dokunulması istenen piksel aktifleştiriliyor }while(D_PANEL_KALIBRASYON_NOKTA_1()!=1);//dokunulan noktanın verisi alınıyor sap1024_lcd_temizle(); do{ SAP1024_YAZI_YAZMA(1,8,"2.Noktaya Dokunun"); SAP1024_PIXEL((GENISLIK_D*20)/100,(YUKSEKLIK_D*20)/100,1); }while(D_PANEL_KALIBRASYON_NOKTA_2()!=1); sap1024_lcd_temizle(); do{ SAP1024_YAZI_YAZMA(1,8,"3.Noktaya Dokunun"); SAP1024_PIXEL((GENISLIK_D*80)/100,(YUKSEKLIK_D*20)/100,1); }while(D_PANEL_KALIBRASYON_NOKTA_3()!=1); sap1024_lcd_temizle(); do{ SAP1024_YAZI_YAZMA(1,8,"4.Noktaya Dokunun"); SAP1024_PIXEL((GENISLIK_D*80)/100,(YUKSEKLIK_D*80)/100,1); }while(D_PANEL_KALIBRASYON_NOKTA_4()!=1); sap1024_lcd_temizle(); }
1E-) D_PANEL_KALIBRASYON_HESAPLAMA Fonksiyonu
Amacı:
Kalibrasyon değerlerinin elle girilip herseferinde kalibrasyon işleminin yapılmaması için kullanılır
Kullanımı:
D_PANEL_KALIBRASYON_HESAPLAMA( ) – şeklinde kullanılır herhangi bir parametre almaz
NOT: Kalibrasyon otomatik olarak yapıldı ise çağırılmasına gerek yoktur. Her seferinde kalibrasyon işlemine vakit ayrılmak istenmiyorsa aşağıda belirtilen global değişkenlerin değerleri okunur not alınır yada harici bir belleğe yazılarak buradan geri çağırılırsa tekrar kalibrasyon hesabı yapılmasına gerek kalmaz.
• sapma_a
• sapma_b
• sapma_c
• sapma_d
Bu değişkenler global olarak tanımlanmışlardır ve “float” tipindedirler.
1F-) D_PANEL_KONUM_X ve D_PANEL_KONUM_Y Fonksiyonları
Amacı:
Dokunulan noktanın GLCD deki tam olarak kordinatını verir. Örnek olarak 240×128 bir ekranda sol üst köşeye dokunulunca x=0 y=0 değerini verirken sağ alt köşeye dokununca x=240 y=120 değerini veri
Kullanımı:
NOT: İki fonksiyon ham analog değerlerin işlenmiş halini bize verir. Küsüratların gözükmemesi için “int” olarak değer döndürür.
D_PANEL_KONUM_X( )
D_PANEL_KONUM_Y( )
1G-) D_PANEL_KORDINAT_KONTROL Fonksiyonu
Amacı:
Kolaylaştırıc fonksiyon olarak tasarlandı. Amacı lcd de oluşturulacak bir butonun kordinatlarının kolayca belirlenmesidir.
Örnek olarak başlangıç pozisyonu (10,10) olan ve boyutu 30×30 px olan (genişlik x yükseklik) resmimizin değerlerini parametrelere giriyoruz. Bu bilgilere göre
fonksiyon sınırları tespit eder . Sınırların içerisinde bir noktaya dokulursa 1 değeri gönderir dokunulmuyorsa 0 degeri gönderilir . Bu şekilde eklediğimiz bir
butonu bilgilerini ve konumunu girerek rahatça kullanabiliriz.
Kullanımı:
D_PANEL_KORDINAT_KONTROL(unsigned char simge_x,unsigned char simge_y,unsigned char simge_genislik_px,unsigned char simge_yukseklik_px) -şeklindedir.
-simge_x: ekranda görütlenecek simgenin sol üst başlangıç noktası x değeri
-simge_y: ekranda görütlenecek simgenin sol üst başlangıç noktası ydeğeri
-simge_genislik_px: ekranda görüntülenecek simgenin genisliği piksel olarak
-simge_yukseklik_px: ekranda görüntülenecek simgenin yüksekliği piksel olara
Örnek:
/*x,y(100,100) konumundan başlayarak 10px X 10px boyutunda bir bölge belirlenmiştir. Bu bölgeye dokunulduğu anda koşul işler ve içeriğindeki işlemleri gerçekleştirir*/ if(D_PANEL_KORDINAT_KONTROL(100,100,10,10)==1) { işlemler }
2-)ÖRNEK KODLAR
2A-) Basit dokunmatik tahta yapımı
Dokunmatik Tahta Kodları while(1) { x1=D_PANEL_KONUM_X();//dokunulan noktanın x konumunu verir y1=D_PANEL_KONUM_Y();//dokunulan noktanın y konumunu verir if(D_PANEL_DOKUNULDU_MU(50)==0)//panele dokunuldumu? { SAP1024_PIXEL(x1,y1,0); } SAP1024_PIXEL(x1,y1,1); delay_ms(5); }
2B-) Buton Örneği
Buton Örneği ve Konum Yazdırma Kodları while(1) { if(D_PANEL_KORDINAT_KONTROL(100,100,10,10)==1) { SAP1024_YAZI_YAZMA(5,14,"resme bastin"); delay_ms(500); SAP1024_LCD_TEXT_TEMIZLE(); } inttoSTR(D_PANEL_KONUM_X(),yazi); SAP1024_YAZI_YAZMA(5,8,yazi); inttoSTR(D_PANEL_KONUM_Y(),yazi); SAP1024_YAZI_YAZMA(5,10,yazi); }
2C-) Tam Program
Tüm Program Kodları char SAPTRIS at trisd;//data portları char SAPDATA_giris at portd; char SAPDATA_cikis at latd; sbit SAP1024_RD at RC1_bit ; //GLCD RD UCU BAĞLANTI PİNİ sbit SAP1024_CE at rc2_bit ; //GLCD CE UCU BAĞLANTI PİNİ sbit SAP1024_CD at Rc3_bit ; //GLCD C/D UCU BAĞLANTI PİNİ sbit SAP1024_RST at Rc4_bit ; //GLCD RST UCU BAĞLANTI PİNİ sbit SAP1024_FS at Rc5_bit ; //GLCD FS UCU BAĞLANTI PİNİ sbit SAP1024_WR at RC0_bit ; //GLCD wr UCU BAĞLANTI PİNİ sbit SAP1024_RD_Direction at TRISC1_bit; //GLCD RD UCU BAĞLANTI PİNİ sbit SAP1024_CE_Direction at TRISC2_bit; //GLCD CE UCU BAĞLANTI PİNİ sbit SAP1024_CD_Direction at TRISC3_bit; //GLCD C/D UCU BAĞLANTI PİNİ sbit SAP1024_RST_Direction at TRISC4_bit; //GLCD RST UCU BAĞLANTI PİNİ sbit SAP1024_FS_Direction at TRISC5_bit; //GLCD FS UCU BAĞLANTI PİNİ sbit SAP1024_WR_Direction at TRISC0_bit; //GLCD FS UCU BAĞLANTI PİNİ //DOKUNMATİK PANEL PİNLERİ////////// sbit surucu_a at RA5_bit; //dokunmatik panel surucu_a pini sbit surucu_b at RB4_bit; //dokunmatik panel surucu_b pini sbit analog_x at RA0_bit; //dokunmatik panel analog port ucu pini sbit analog_y at RA1_bit; //dokunmatik panel analog port ucu pini sbit surucu_a_Direction at TRISA5_bit; // surucu_a pini sbit surucu_b_Direction at TRISB4_bit; // surucu_b pini sbit analog_x_Direction at TRISA0_bit; //analog port ucu pini sbit analog_y_Direction at TRISA1_bit; //analog port ucu pini void kalbire_et() { do { SAP1024_YAZI_YAZMA(1,8,"1.Noktaya Dokunun"); SAP1024_PIXEL((GENISLIK_D*20)/100,(YUKSEKLIK_D*80)/100,1); }while(D_PANEL_KALIBRASYON_NOKTA_1()!=1); sap1024_lcd_temizle(); do { SAP1024_YAZI_YAZMA(1,8,"2.Noktaya Dokunun"); SAP1024_PIXEL((GENISLIK_D*20)/100,(YUKSEKLIK_D*20)/100,1); }while(D_PANEL_KALIBRASYON_NOKTA_2()!=1); sap1024_lcd_temizle(); do { SAP1024_YAZI_YAZMA(1,8,"3.Noktaya Dokunun"); SAP1024_PIXEL((GENISLIK_D*80)/100,(YUKSEKLIK_D*20)/100,1); }while(D_PANEL_KALIBRASYON_NOKTA_3()!=1); sap1024_lcd_temizle(); do { SAP1024_YAZI_YAZMA(1,8,"4.Noktaya Dokunun"); SAP1024_PIXEL((GENISLIK_D*80)/100,(YUKSEKLIK_D*80)/100,1); }while(D_PANEL_KALIBRASYON_NOKTA_4()!=1); sap1024_lcd_temizle(); } void main() { char yazi[8]; int x1,y1; //GENEL PORT AYARLARI ADCON0=0x09; ADCON1&=0xF0; cmcon|=7; //------------------ SAP1024_INIT(240,128,8); ADC_Init(); D_PANEL_INIT(240,128,0,1); kalbire_et(); SAP1024_DORTGEN(100,100,110,110,1,1); while(1) { x1=D_PANEL_KONUM_X(); y1=D_PANEL_KONUM_Y(); if(D_PANEL_DOKUNULDU_MU(50)==0) { SAP1024_PIXEL(x1,y1,0); } SAP1024_PIXEL(x1,y1,1); delay_ms(5); if(D_PANEL_KORDINAT_KONTROL(100,100,10,10)==1) { SAP1024_YAZI_YAZMA(5,14,"resme bastin"); delay_ms(500); SAP1024_LCD_TEXT_TEMIZLE(); } inttoSTR(D_PANEL_KONUM_X(),yazi); SAP1024_YAZI_YAZMA(5,8,yazi); inttoSTR(D_PANEL_KONUM_Y(),yazi); SAP1024_YAZI_YAZMA(5,10,yazi); } }
“DOKUNMATİK PANEL KÜTÜPHANESİ KULLANIMI” VİDEO DERS
Gerekli Dosyalar
- 4 Tel Rezistif Dokunmatik Panel MikroC Kütüphanesi – AÇIK KAYNAK KOD – (Satın Almak için Tıklayınız)
- 4 Tel Rezistif Dokunmatik Panel MikroC Kütüphanesi – .mcl – (ÜCRETSİZ)
Bağlantıyı Görmek İçin Giriş Yapın ya da Ücretsiz Üye Olun
Dokümanlar
- Calibration in touch-screen systems
- Calibration procedure for a resistive touchscreen system based on the STMPE811
- MMSE-Based Multipoint Calibration Algorithm for Touch Screen Applications
- Study on Calibration Algorithm of Embedded Touch Screen
- Mikroelektronikanın Dokunmatik Panel Yazısı
- BC546 Datasheet
- BC556 Datasheet
This post is also available in: