Raspberry Pi QT Creator ve WiringPi ile Raspberry Pi de PWM kontrol By Umut Kazanç Posted on 15 Mayıs 2017 9 min read 2 0 7,528 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba Arkadaşlar; Bu yazımda sizlere QT ile nasıl görsel form oluşturulur ve wiringPi kütüphanesi nasıl eklenir onları anlatacağım. Daha önceden Netbeans IDE ile konsol tipi uygulama hazırlamıştık. Tabi netbeans e ilerleyen yazılarımda devam edeceğim. Fakat bazen bize masaüstü görsel form olan uygulamalarda gerekli oluyor. Bunları windowsta Visual Studio ile yaparız fakat Linux tabanlı bir işletim sisteminde çalışmaz. Bunun için sizlere QT Creator den bahsedeceğim. Bende sizlerle uygulama yaparak öğreneceğim. İlk olarak çok kanallı PWM ile başlamak istedim. Amaç form hazırlamak ve nesneleri birbirine bağlamak. WiringPi nin Software PWM ile 5 kanal led kontrol edeceğiz, isterseniz 3 kanalına RGB led bağlayabilirsiniz. ilk önce QT Creator kurulumu ile başlayalım. sudo nano /etc/apt/sources.list dosyasını açarak en alt satıra bunları ekliyoruz ve kaydedip çıkıyoruz. deb http://twolife.be/raspbian/ wheezy main backports deb-src http://twolife.be/raspbian/ wheezy main backports sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-key 2578B775 Install the required key Qt5 and esoteric requirements installed sudo apt-get update sudo apt-get install qt5-default qt5-qmake libegl1-mesa libgles2-mesa sudo apt-get install qt5-qmake sudo apt-get install qtcreator Kurulum işlemleri bittikten sonra QT Creator u açabiliriz. İlk önce Raspberry Pi yi eklememiz gerekiyor. Bunun için Tools -> Options açarak, Build & Run seçeneğinden Kits sekmesini seçiyoruz. Name kısmına vereceğiniz ismi yazabilirsiniz. Daha sonra altta yer alan Compiler seçeneğinin aktif olmadığını göreceksiniz. Sağındaki Manage… e bastığınızda karşınıza aşağıdaki ekran gelecektir. Çıkan ekranda ADD -> GCC seçip Apply ve OK dedikmi Pi miz eklenmiş olacaktır artık yeni projeye geçebiliriz. New Project e tıkladığımızda çıkan ekranda resimdeki gibi seçip ilerki sayfaya geçeceğiz. Bu kısımda ise projemizin adını ve yolunu seçip ileri sayfaya geçtiğimizde eklediğimiz pi yi seçiyoruz. Daha sonraki ekranda dosya isimlerini değiştirmeden next e bastığımızda karşımıza boş bir proje açılacaktır. Sol menüden dosyalarımızı göreceksiniz. Buradan mainwindow.ui yi seçip ilk önce form nesnelerini hazırlayacağız daha sonra kodlamaya geçeceğiz. Karşımıza boş bir form gelecektir. ilk önce PWM kontrolünü sağlamak için ekrana 5 adet Vertical Slider ekleyeceğiz Vertical Slider default olarak value değeri 0-99 gelmektedir. zaten pwn range kontrolünü de 100 yapacağımız için bu nesnelerin ayarlarını yapmaya gerek kalmayacak. Şimdi gelelim kodlamaya, 1. vertical slider a sağ tıklayıp çıkan menüde Go to slot a bastığımızda aşağıdaki ekran gelecektir. Biz yazılımda değiştiğinde bir şey yapmasını istiyoruz o yüzden valueChanged(int) ı seçip OK yi tıklıyoruz. Burada kodlama ekranına otomatik geçiş yapacaktır ve bizi seçtiğimiz fonksiyonun içerisine götürecektir. Buraya yapacağımız komutları yazacağız fakat ondan önce wiringPi yi QT ye eklememiz gerekmektedir. Sol taraftan .pro dosyasını açarak en alt satıra bu kodları ekleyeceğiz LIBS += -L/usr/local/lib -lwiringPi LIBS += -L/usr/local/lib -lwiringPiDev INCLUDEPATH += /usr/local/include Daha sonra mainwindow.cpp yi açarak h dosyalarımızı include edelim ve tanımlamalarımızı yapalım #include <wiringPi.h> #include <softPwm.h> #define LED1 21 #define LED2 22 #define LED3 23 #define LED4 24 #define LED5 25 #define PWMrange 100 Daha sonra portları ayarlamak için aşağıdaki kodları ui->setupUi(this); nin altına ekleyelim. Yani yükleme sırasında portlar init edilecek. //sistemden port ayarlanir system(“gpio mode 0”); system(“gpio export 21 out”); system(“gpio export 22 out”); system(“gpio export 23 out”); system(“gpio export 24 out”); system(“gpio export 25 out”); wiringPiSetup(); //pwm tanitilir softPwmCreate(LED1,0,PWMrange); softPwmCreate(LED2,0,PWMrange); softPwmCreate(LED3,0,PWMrange); softPwmCreate(LED4,0,PWMrange); softPwmCreate(LED5,0,PWMrange); Şimdi yukarıda oluşturduğumuz VerticalSlider fonksiyonun içerisinde ledlere slider in value değerini göndereceğiz. Bu işlemleri 5 led için yapacağız. void MainWindow::on_verticalSlider_valueChanged(int value) { softPwmWrite(LED1,value); } void MainWindow::on_verticalSlider_2_valueChanged(int value) { softPwmWrite(LED2,value); } void MainWindow::on_verticalSlider_3_valueChanged(int value) { softPwmWrite(LED3,value); } void MainWindow::on_verticalSlider_4_valueChanged(int value) { softPwmWrite(LED4,value); } void MainWindow::on_verticalSlider_5_valueChanged(int value) { softPwmWrite(LED5,value); } Kodlama kısmı bitmiştir, programımızı derleyip çalıştırabiliriz. Bunun için sol alttaki play tuşuna bastığımızda hatamız yok ise program derlenip açılacaktır. İlerleyen konularla görüşmek üzere, Kolay gelsin. İlerleyen konularla görüşmek üzere, Kolay gelsin.