17 Eylül 2016 Cumartesi

4-DOF Robot Arm Control Software BETA

4-Dof robot kollarını (MeArm & EezybotArm gibi) bilgiyasardan Arduino yardımı ile kontrol etmek için VB.Net'te ufak çaplı bir uygulama yaptım. Uygulama daha Beta aşamasında olduğu için eksiklikleri ve hataları giderip stabil olana kadar geliştirmeyi planlıyorum.


RAC Software BETA Link : https://drive.google.com/open?id=0B2hUK4p_W4qhVmhXd2FZMmpTMFE

*For global users go Help via program's menu.

13 Eylül 2016 Salı

Matlab Image Processing: Edge Detection Sample

Matlab ile Görüntü İşlemeye yeni başlayanlar için kenar bulma örneği ve aşamaları.

1. Matlab'ta resim açılır, gri tonlarına dönüştürülür.
2. Resim Binary formata dönüştürülür.
3. Gürültü filtresinden geçirilir.
4. Binary formatta kenar bulma işlemi yapılır.
5. Gerçek resimde, bulunan değerler gösterilir.




9 Eylül 2016 Cuma

Google Chrome Pencere Çözünürlüğü


Google Chrome Beta kullananlar veya son gelen güncelleme ile pencere çözünürlüğünden rahatsız olanlar için kısa bir araştırma sonucu aşağıdaki çözümü buldum. 
Google Chrome ayarlarında her ne kadar sayfa içeriğinin boyutu değiştirilse de, malesef arayüz çözünürlüğü ile ilgili bir seçenek yok. Bu durum eski yazı boyutuna alışanlar için büyük bir sorun haline gelebilir.

1. Chrome kısayoluna sağ tıklıyoruz.
2. Özellikler > Uyumluluk > "Yüksek DPI ayarlarında ekran ölçeklendirmeyi devre dışı bırak" seçiyoruz ve Uygula diyerek Chrome'u tekrardan başlatıyoruz.

Herhangi bir değişiklik olmaz ise aşağıdaki yolu deniyoruz.

1. Chrome kısayoluna sağ tıklıyoruz.
2. Hedef yolunun sonuna şu kodu ekliyoruz : /high-dpi-support=1 /force-device-scale-factor=1

Not: Eklediğimiz kodun başında boşluk bırakmaya dikkat etmelisiniz.

Geri bildirim olarak yorum yapabilirsiniz.

8 Eylül 2016 Perşembe

[Arduino & VB.Net Uygulamaları #1] Arduino ve SerialPort


Bu uygulamada VB.Net'te basit bir arayüz oluşturulmuş ve SerialPort yoluyla Arduino UNO üzerinde iletişim kurulmuştur. Basit bir arayüz olarak Windows Form üzerinde ListBox ve Button kullanılmıştır. Resimde gördüğünüz üzere bilgisayar bağlantısı kurulu Arduino ile seçili COM portu üzerinden iletişim sağlanmıştır. İlgili konuyla kendi ara yüzünüzü yaratıp, herhangi bir şekilde Serial Monitor'daki gibi Arduino'nuzu yönlendirebilirsiniz.

VB.Net kodlarımızı incelemeye geçmeden önce aşağıdaki gibi basit bir arayüz oluşturalım ve oluşturduğumuz arayüze ToolBox'tan bir adet de SerialPort ekleyelim.


Görsel ara yüzümüzü oluşturduktan sonra sırasıyla kodlarımızı inceleyelim.

Imports System.IO.Ports
Eklediğimiz SerialPort'un yöntemlerini(methods) kullanabilmek için SerialPort Sınıfı import edildi.

Dim comPort As String
Dim isConnected As Boolean = False
Com Port'unun adı ve bağlantı kontrolü için 2 adet değişken tanımlanıldı.

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    For Each sp As String In My.Computer.Ports.SerialPortNames
        portList.Items.Add(sp)
    Next
End Sub
Program ilk çalıştırıldığında mevcut olan Com Portları ListBox içerisinde sıralandı.

Private Sub portList_SelectedIndexChanged(sender As Object, e As EventArgs) 
Handles portList.SelectedIndexChanged
    If (portList.SelectedItem <> "") Then
        comPort = portList.SelectedItem
    End If
End Sub
Kullanıcının ListBox'tan geçerli bir port seçip seçmediğini kontrol edilip, ilgili değişkene aktarıldı.

Private Sub connectButon_Click(sender As Object, e As EventArgs) Handles
 connectButon.Click
    If Not (isConnected) Then
        If (comPort <> "") Then
            SerialPort1.PortName = comPort
            SerialPort1.BaudRate = 9600
            SerialPort1.DataBits = 8
            SerialPort1.Parity = Parity.None
            SerialPort1.StopBits = StopBits.One
            SerialPort1.Handshake = Handshake.None
            SerialPort1.Encoding = System.Text.Encoding.Default
            SerialPort1.ReadTimeout = 10000
            SerialPort1.Open()
            connectButon.Text = "Dis-Connect"
            onData.Text = comPort & " bağlanıldı."
        Else
            MsgBox("Select a COM Port first!")
        End If
    Else
        SerialPort1.Close()
        connectButon.Text = "Connect"
    End If
End Sub
Connect butonuna tıklanma olayında tek buton üzerinde hem bağlanma hem de bağlantıyı kesme özelliği için Boolean değişkeni kullanıldı. Ardından seçili bir Port'un olup olmadığı kontrol ettirilip, SerialPort bağlantısı için gerekli olan değerler aktarılıp bağlantı sağlanıldı. SerialPort hakkında daha fazla bilgiye ulaşmak için, https://msdn.microsoft.com/tr-tr/library/system.io.ports.serialport

3 Eylül 2016 Cumartesi

Digital Signal Processing


Matlab ortamında dijital sinyal işlemeye başlamadan önce, sinyaller hakkında bilmemiz gerekenlere şöyle bir bakalım.

Bu konu altında üzerinde çalışacağımız iki çeşit sinyal vardır; Sürekli Zamanlı(Continious Time) ve Ayrık Zamanlı(Discrete Time). Şimdi nedir bu sürekli ve ayrık zamanlı sinyaller? Sürekli zamanlı sinyaller adından da anlaşılacağı üzere kesime uğramayan -sürekliliği olan- gerçek hayatta karşılaştığımız, zamanında herkesin defterine çizip üzerinde genliğini, periyodunu gösterdiği Analog sinyallerdir. Ayrık zamanlı sinyaller de dijital ortamda üzerinde çalışacağımız sinyallerdir ki bunlara Dijital sinyaller de denir.

Güncellecenek...

12 Ağustos 2016 Cuma

C++ Operator Overloading

C++'ta basit veri tipleri için tanımlanmış ve bu veri tipleri arasında işlemler yapmamızı sağlayan fonksiyonlara operatör denir.Örneğin; iki integer değerini toplayıp, çıkarmak gibi. Fakat kullanıcı tanımlı veri tiplerinde(örneğin Class) operatör işlemleri için "operator overloading" yapmamız gerek yani bir Class'a ait nesnelerin aralarında operatör işlemlerine sokulması için operatörün class içerisinde tanımlanması gerek. İşte bu olaya "Operator Overloading" denilmektedir.

Peki bu olayı bir Class içerisinde inceleyelim.


Tanımlamamızı yaparken bir fonksiyon gibi önce "return_type" , "operator" , "operator sign" ve arkasından giriş argümanları şeklinde tanımlamalıyız. Sonrasında tıpkı bir fonksiyonda olduğu gibi body kısmını doldurabilirsiniz.

Operator fonksiyon , sınıf üzerinden üretilen nesnede operatör işareti geçtiği zaman işlenmektedir. Ayrıntısını bir örnek üzerinden ele alalım.

/* Simple example to demonstrate the working of operator overloading*/
#include <iostream>
using namespace std;
class temp
{
   private:
      int count;
   public:
       temp():count(5){  }
       void operator ++() { 
        count=count+1; 
       }
       void Display() { cout<<"Count: "<<count; }
};
int main()
{
    temp t;
    ++t;        /* operator function void operator ++() is called */
    t.Display();
    return 0;
}
 Output
Count: 6
Bu örnekte operatör fonksiyon olarak "void operator ++()" kullanılmış.Temp sınıfından bir nesne üretilmiş ve "count" değeri constructor ile "5" atanmış. Sonrasında nesne üzerinden operatör fonksiyon çağırılmış ve nesneye ait olan "count" değeri 1 arttırılmış.