Ana Sayfa STM32F429 Discovery Dokunmatik Ekranla Servo Motor Kontrolü

Dokunmatik Ekranla Servo Motor Kontrolü

7 min read
0
1
2,028

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


#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();
}

 

 Proje Video

Proje dosyalarına buradan ulaşabilirsiniz.

Saygılar.

  • 16F877A İle Servo Motor Kontrolü

    SERVO MOTOR Robotik uygulamalarının temelini oluşturan servo motor R/C tip servo motordur.…
  • STM32F4 Discovery Servo Motor Kontrolü

    Servo motorlarda DC motorların temelini kullanırlar.Fakat buna ek olarak başka bileşenleri…
Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Bilal Kaya
Daha Fazla Göster -  STM32F429 Discovery

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

Harici Bir Kaynaktan ABB Sürücü Nasıl Kontrol Edilir ?

Merhaba arkadaşlar , önceki yazımızda abb sürücüyü(acs355) devreye almayı anlatmıştık.Bu b…