STM32F429 Discovery Dokunmatik Ekranla Servo Motor Kontrolü By Konuk Yazar Posted on 31 Mayıs 2015 7 min read 0 1 9,116 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba arkadaşlar, Bu yazımızda,STM32F429 Discovery üzerinde bulunan dokunmatik ekranla,servo motoru kontrol etmek amaçlanmaktadır.Servo motor hakkında daha önceki yazımızda daha detaylı bilgi vermiştik.Yazımıza buradan ulaşabilirsiniz. Dokunmatik ekranımızın üzerinde bir arayüz tasarladık.Bu arayüzü,segger firmasının emwin gui kütüphaneleriyle gerçekleştirdik.STemWin hakkında detaylı bilgiye buradan ulaşabilirsiniz. Kullanılan Malzemeler -STM32F429 Discovery -1 adet Servo Motor -Jumper Kablolar Servo motorun pwm ucu,boardumuzun PA5 no’lu ucuna bağlanmıştır.Servo motorumuz DC 5 volt ile çalışmaktadır.Bu çalışmada servo’yu harici bir kaynaktan besledik.Sizde harici bir kaynaktan beslemeniz önerilir.Eğer harici kaynaktan beslerseniz,toprakları birleştirmeyi unutmayınız.Aksi takdirde çalışmayacaktır. Kodlar [php] #include "stm32f4xx.h" #include "defines.h" #include "tm_stm32f4_delay.h" #include "tm_stm32f4_disco.h" #include "tm_stm32f4_servo.h" #include "tm_stm32f4_emwin.h" #include "button.h" #include "DIALOG.h" int main(void) { TM_SERVO_t Servo1; BUTTON_Handle hButton, hB1, hB2, hB3, hB4; TEXT_Handle txtInfo; uint8_t i; SystemInit(); TM_DELAY_Init(); TM_DISCO_LedInit(); /* servo 1, TIM2, Channel 1, Pinspack 2 = PA5 */ TM_SERVO_Init(&Servo1, TIM2, TM_PWM_Channel_1, TM_PWM_PinsPack_2); if (TM_EMWIN_Init() != TM_EMWIN_Result_Ok) { while (1) { TM_DISCO_LedToggle(LED_RED); Delayms(100); } } txtInfo = TEXT_CreateEx(0,40, 260, 30, 0, WM_CF_SHOW, TEXT_CF_HCENTER, 900, "SERVO MOTOR KONTROLU"); TEXT_SetFont(txtInfo, GUI_FONT_8X16X1X2 ); TEXT_SetBkColor (txtInfo, GUI_RED); TEXT_SetTextColor(txtInfo, GUI_WHITE); GUI_Exec(); txtInfo = TEXT_CreateEx(0,240, 260, 30, 0, WM_CF_SHOW, TEXT_CF_HCENTER, 900, "www.roboturka.com"); TEXT_SetFont(txtInfo, GUI_FONT_8X16X1X2 ); TEXT_SetBkColor (txtInfo, GUI_WHITE); TEXT_SetTextColor(txtInfo, GUI_BLUE); GUI_Exec(); txtInfo = TEXT_CreateEx(0,280, 260, 30, 0, WM_CF_SHOW, TEXT_CF_HCENTER, 900, "Bilal Kaya"); TEXT_SetFont(txtInfo, GUI_FONT_8X16X1X2 ); TEXT_SetBkColor (txtInfo, GUI_RED); TEXT_SetTextColor(txtInfo, GUI_WHITE); GUI_Exec(); BUTTON_Delete(hButton); GUI_ClearRect(10, 50, 269, 90); /* Butonlari olustur */ hB1 = BUTTON_CreateEx(10, 90, 105, 50, 0, WM_CF_SHOW, 0, GUI_ID_BUTTON1); hB2 = BUTTON_CreateEx(124, 90, 105, 50, 0, WM_CF_SHOW, 0, GUI_ID_BUTTON2); hB3 = BUTTON_CreateEx(10, 150, 105, 50, 0, WM_CF_SHOW, 0, GUI_ID_BUTTON3); hB4 = BUTTON_CreateEx(124, 150, 105, 50, 0, WM_CF_SHOW, 0, GUI_ID_BUTTON4); /* Buton fontlarini ayarla */ BUTTON_SetFont(hB1, &GUI_Font13HB_ASCII); BUTTON_SetFont(hB2, &GUI_Font13HB_ASCII); BUTTON_SetFont(hB3, &GUI_Font13HB_ASCII); BUTTON_SetFont(hB4, &GUI_Font13HB_ASCII); /* Buton yazilarini ayarla */ BUTTON_SetText(hB1, "0-derece"); BUTTON_SetText(hB2, "45-derece"); BUTTON_SetText(hB3, "90-derece"); BUTTON_SetText(hB4, "180-derece"); /* Buton Tarzlar */ /*Butona basilmadiginda arka plan*/ BUTTON_SetBkColor(hB1, BUTTON_CI_UNPRESSED, GUI_DARKGREEN); /* Butona basildiginda arka plan*/ BUTTON_SetBkColor(hB1, BUTTON_CI_PRESSED, GUI_GREEN); /*Butona basilmadiginda arka plan*/ BUTTON_SetBkColor(hB3, BUTTON_CI_UNPRESSED,GUI_DARKGREEN); /* Butona basildiginda arka plan*/ BUTTON_SetBkColor(hB3, BUTTON_CI_PRESSED, GUI_GREEN); /*Butona basilmadiginda arka plan*/ BUTTON_SetBkColor(hB2, BUTTON_CI_UNPRESSED, GUI_DARKGREEN); /* Butona basildiginda arka plan*/ BUTTON_SetBkColor(hB2, BUTTON_CI_PRESSED, GUI_GREEN); /* Butona basilmadiginda arka plan*/ BUTTON_SetBkColor(hB4, BUTTON_CI_UNPRESSED,GUI_DARKGREEN); /* Butona basildiginda arka plan*/ BUTTON_SetBkColor(hB4, BUTTON_CI_PRESSED, GUI_GREEN); GUI_Exec(); while (1) { switch (GUI_GetKey()) { case GUI_ID_BUTTON1: TM_SERVO_SetDegrees(&Servo1, 0); break; case GUI_ID_BUTTON2: TM_SERVO_SetDegrees(&Servo1, 45); break; case GUI_ID_BUTTON3: TM_SERVO_SetDegrees(&Servo1, 90); break; case GUI_ID_BUTTON4: TM_SERVO_SetDegrees(&Servo1, 180); break; default: break; } } } void TM_DELAY_1msHandler(void) { TM_EMWIN_UpdateTouch(); } [/php] Proje Video Proje dosyalarına buradan ulaşabilirsiniz. Saygılar.