Ana Sayfa STM32F429 Discovery STM32F429 Discovery Otonom Robotlar için Oynar Robot Gözü

STM32F429 Discovery Otonom Robotlar için Oynar Robot Gözü

7 min read
2
0
958

Merhaba,arkadaşlar yeni ve özgün bir projeyle tekrar karşınızdayız.Bu çalışmamızda temel olarak ultrasonik sensör,servo kontrolü ve dokunmatik ekran için oluşturduğumuz gui arayüzü ile özgün bir proje yapmaya çalıştık.Servomuz sürekli 180 derece açıda dönerek tehlikelerin tespiti için bize yardımcı olmaktadır.Ayrıca,servomuzun üstünde bulunan ultarasonik sensör istenilen mesafede bizi tehlikeli bir cisim olup olmadığı yönünde bizi uyarmaktadır.Tabi buna görsellik katarak daha hoş bir görüntü sağlamaya çalıştık.Bu projede GUI  emwin kütüphanelerini de kullandık.

Emwin’den bahsedecek olursak:

Emwin Segger firmasının yazmış olduğu Grafik Arayüz hazırlama kütüphanesidir.Bu kütüphane aracılığı ile profesyonel arayüzler hazırlayabiliyoruz.Kütüphanenin mouse,klavye,bir çok alfabe,bir çok yazı fontu desteği bulunmaktadır.Ayrıca GuiBuilder aracı ile de sürükle bırak şeklinde kolayca istediğimiz arayüzleri oluşturabiliyoruz.Normalde Emwin ücretli olarak sunulmaktadır.Fakat stm,nxp gibi firmalar kendi mcu larında kullanılması amacıyla emwin kütüphaneleri ücretsiz olarak sunmaktadır.

GUI hazırlamak için çeşitli programlar mevcuttur.Temel olarak GUI Builder programı ile daha hızlı çözümler üretebiliriz.Biz ilk etapta bunu kullanmayacağız.Ama bu kütüphaneleri kartımıza monte etmek bizim için hiç de kolay olmadı.Sonuç olarak bunu başardık ve sizlerin hizmetine sunuyoruz.

 

main kodlarına aşağıdan ulaşabilirsiniz.


#include "stm32f4xx.h"

#include "defines.h"
#include "tm_stm32f4_delay.h"
#include "tm_stm32f4_disco.h"
#include "tm_stm32f4_emwin.h"
#include "button.h"
#include "lcd.h"

#include "DIALOG.h"

#include "defines.h"
#include "tm_stm32f4_hcsr04.h"
#include "tm_stm32f4_pwm.h"
#include <stdio.h>

int main(void) {
float distance;

TEXT_Handle txtInfo,txtInfo1,txtInfo2;
uint8_t i;
TM_PWM_TIM_t TIM2_Data;
uint16_t position = 1000;

SystemInit();

TM_DELAY_Init();
TM_HCSR04_Init();

TM_DISCO_LedInit();
TM_EMWIN_Init();
txtInfo = TEXT_CreateEx(5,100, 260, 30, 0, WM_CF_SHOW, TEXT_CF_HCENTER, 900, "RADAR TAKIP SISTEMI");
TEXT_SetFont(txtInfo, GUI_FONT_8X16X1X2 );
TEXT_SetBkColor (txtInfo, GUI_WHITE);
TEXT_SetTextColor(txtInfo, GUI_RED);

GUI_Exec();

txtInfo = TEXT_CreateEx (5,200, 70, 30, 0, WM_CF_SHOW,TEXT_CF_HCENTER , 900,"DURUM");
TEXT_SetFont(txtInfo, GUI_FONT_8X16X1X2 );
TEXT_SetBkColor (txtInfo, GUI_ORANGE);
TEXT_SetTextColor(txtInfo, GUI_BLUE);

GUI_Exec();

TM_PWM_InitTimer(TIM2, &TIM2_Data, 50);

/* TIM2 üzerindeki Pwm'i baslat,PA5 pini*/
TM_PWM_InitChannel(TIM2, TM_PWM_Channel_1, TM_PWM_PinsPack_2);

/*Servo motor merkez konumunda*/
TM_PWM_SetChannelMicros(TIM2, &TIM2_Data, TM_PWM_Channel_1, 1500);

Delayms(1000);

while(1)
{
distance = TM_HCSR04_Read();

if (position == 1000) {
/* yön degistir */
position = 2000;
if (distance < 30) {

TM_DISCO_LedOn(LED_RED);
TM_DISCO_LedOff(LED_GREEN);
txtInfo1 = TEXT_CreateEx(80, 200, 150, 30, 0, WM_CF_SHOW, TEXT_CF_HCENTER, 900, "TEHLIKE");
TEXT_SetFont(txtInfo1, GUI_FONT_8X16X1X2 );
TEXT_SetBkColor (txtInfo1, GUI_RED);
TEXT_SetTextColor(txtInfo1, GUI_BLACK);

GUI_Exec();

} else if (distance > 30) {

TM_DISCO_LedOn(LED_GREEN);
TM_DISCO_LedOff(LED_RED);

txtInfo2 = TEXT_CreateEx(80, 200, 150, 30, 0, WM_CF_SHOW, TEXT_CF_HCENTER, 900, "TEHLIKE YOK");
TEXT_SetFont(txtInfo2, GUI_FONT_8X16X1X2 );
TEXT_SetBkColor (txtInfo2, GUI_GREEN);
TEXT_SetTextColor(txtInfo2, GUI_BLACK);

GUI_Exec();
}
}
else {
/* yön degistir */
position = 1000;
if (distance < 30) {

TM_DISCO_LedOn(LED_RED);
TM_DISCO_LedOff(LED_GREEN);
txtInfo1 = TEXT_CreateEx(80, 200, 150, 30, 0, WM_CF_SHOW, TEXT_CF_HCENTER, 900, "TEHLIKE");
TEXT_SetFont(txtInfo1, GUI_FONT_8X16X1X2 );
TEXT_SetBkColor (txtInfo1, GUI_RED);
TEXT_SetTextColor(txtInfo1, GUI_BLACK);

GUI_Exec();

}
if (distance > 30) {

TM_DISCO_LedOn(LED_GREEN);
TM_DISCO_LedOff(LED_RED);

txtInfo2 = TEXT_CreateEx(80, 200, 150, 30, 0, WM_CF_SHOW, TEXT_CF_HCENTER, 900, "TEHLIKE YOK");
TEXT_SetFont(txtInfo2, GUI_FONT_8X16X1X2 );
TEXT_SetBkColor (txtInfo2, GUI_GREEN);
TEXT_SetTextColor(txtInfo2, GUI_BLACK);

GUI_Exec();
}
}

/* Servo pozisyonunu ayarlar*/
TM_PWM_SetChannelMicros(TIM2, &TIM2_Data, TM_PWM_Channel_1, position);
Delayms(1500);

}
}

Proje dosyalarına buradan ulaşabilirsiniz….

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Bilal Kaya
Daha Fazla Göster -  STM32F429 Discovery

2 Yorumlar

  1. Ferhat

    10 Şubat 2015 at 20:55

    Bu güzel ve yararlı olan robot gözü projesı ıcın arkadasa tesekkur ederım. Gercekten bu tip çalısmalar bızlerde guzel ve yararlı bilgi , gorsellık , yenı ufuklar sunuyor guzel bir calısma devamını beklıyorum .

    Reply

    • Bilal Kaya

      Bilal Kaya

      25 Nisan 2017 at 10:32

      Faydalı olabildikse ne mutlu bizlere 🙂

      Reply

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…