STM32F4 Discovery STM32F4 Discovery Dokunmatik Ekran Buton Uygulaması By Konuk Yazar Posted on 14 Mayıs 2015 6 min read 3 0 5,872 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba arkadaşlar, STM32F4 Discovery ile dokunmatik ekran buton uygulaması ile karşınızdayız.Kullanmış olduğumuz dokunmatik ekran ve kütüphane ile ilgili daha önce sizlere bilgi vermiştik.Önceki bilgilere buradan erişebilirsiniz. Bu uygulamamızda temel olarak yapmak istediğimiz şey,dokunmatik ekranda buton oluşturup,bu butonlarla boardumuzun üzerinde bulunan ledleri kontrol etmek istiyoruz. Kodlar aşağıda belirtilmiştir. [php] #include "stm32f4xx.h" #include "delay.h" #include "SSD1289.h" #include "touch_7846.h" #include "Julija.h" uint16_t Xpos; uint16_t Ypos; uint16_t a; uint16_t Width; uint16_t Height; uint16_t Length; uint16_t position; uint8_t Direction; u16 bktouch = 0; u16 bk1touch = 0; u16 bk2touch = 0; GPIO_InitTypeDef GPIO_InitStructure; void Delay(__IO uint32_t nCount); void GPIO_Setup(void); void GPIO_Setup(void) { /* GPIOD Clocku aktif hale getiriliyor… */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); /* PD12,PD13,PD14 ve PD15 çikis olarak ayarlaniyor. GPIO Bus hizi 100 MHz… */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &GPIO_InitStructure); } void LCD_DrawButton1(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height,int position) { LCD_SetTextColor(LGRAY); // Buton Arka Plan Rengi LCD_DrawFullRect( Xpos, Ypos,Width,Height); // Koordinat tanimlamalari // dikdörtgenin üst ve sol kenarina cizgi ciz LCD_SetBackColor(LGRAY); if(position==0) LCD_SetTextColor(MAROON); else LCD_SetTextColor(BLACK); LCD_DrawLine( Xpos, Ypos, Width, LCD_DIR_HORIZONTAL); LCD_DrawLine( Xpos, Ypos, Height, LCD_DIR_VERTICAL); if(position!=0) LCD_SetTextColor(MAROON); else LCD_SetTextColor(BLACK); } void LCD_DrawButton(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height,int position) { LCD_SetTextColor(DGRAY); LCD_DrawFullRect( Xpos, Ypos,Width,Height); // dikdörtgenin üst ve sol kenarina cizgi ciz if(position==0) LCD_SetTextColor(WHITE); else LCD_SetTextColor(BLACK); LCD_DrawLine( Xpos, Ypos, Width, LCD_DIR_HORIZONTAL); LCD_DrawLine( Xpos, Ypos, Height, LCD_DIR_VERTICAL); if(position!=0) LCD_SetTextColor(DGRAY); else LCD_SetTextColor(BLACK); } int main(void) { GPIO_Setup(); Delay(0x3FFFFF); LCD_Init(); Delay(0x3FFFFF); touch_init(); LCD_Clear(MAROON); while(1) { LCD_StringLine(30, 70, "Hayat Paylasinca Guzel"); LCD_StringLine(50, 280, "www.roboturka.com"); LCD_StringLine(70, 250, "By Bilal Kaya"); if((short int)Pen_Point.X0>70 && (short int)Pen_Point.X0<170&& (short int)Pen_Point.Y0>120 && (short int)Pen_Point.Y0<170) { if(bktouch==1) { GPIO_SetBits(GPIOD, GPIO_Pin_13); // LCD_DrawButton1(70,170,100,30,1); LCD_CharSize(20); LCD_SetTextColor(BLACK); LCD_StringLine(90, 130, "BUTON 1"); // LCD_SetTextColor(GREEN); // LCD_StringLine(18,200, "AKTIF"); bktouch=0; } } else { if(bktouch==0) { GPIO_ResetBits(GPIOD, GPIO_Pin_13); LCD_DrawButton1(70,120,100,50,0); LCD_CharSize(16); LCD_SetTextColor(BLACK); LCD_StringLine(90, 140, "BUTON 1"); // LCD_SetTextColor(RED); // LCD_StringLine(18, 200, "PASIF"); bktouch=1; } } if((short int)Pen_Point.X0>70 && (short int)Pen_Point.X0<170&& (short int)Pen_Point.Y0>171 && (short int)Pen_Point.Y0<220) { if(bk1touch==1) { GPIO_SetBits(GPIOD, GPIO_Pin_12); // LCD_DrawButton1(70,170,100,30,1); LCD_CharSize(20); LCD_SetTextColor(BLACK); LCD_StringLine(90, 190, "BUTON 2"); // LCD_SetTextColor(GREEN); // LCD_StringLine(18,200, "AKTIF"); bk1touch=0; } } else { if(bk1touch==0) { LCD_DrawButton1(70,170,100,50,0); LCD_CharSize(16); LCD_SetTextColor(BLACK); LCD_StringLine(90, 185, "BUTON 2"); bk1touch=1; GPIO_ResetBits(GPIOD, GPIO_Pin_12); } } Convert_Pos(); } } [/php] Proje dosyalarına buradan ulaşabilirsiniz.