My First Android Application (Puzzle)

Hello, my friends;
I wanted to share a news that was important to me after a long break. Finally, I took my first step toward becoming an android application developer. For this beginning, I decided to choose a pilot application and learn a number of tools for android application developers on this application rather than attempting long theoretical research processes. So I started developing a simple yet fun puzzle application. My application continues to be improved and is constantly updated. Therefore, you may find that some parts are not yet fully completed. You may encounter some errors.

If you are reading this page from your computer, you can download the application by scanning the QR code below or by writing the link to your internet browser on the phone.

QR Code and Internet Link

If you are reading this page from your phone, you can download the application by clicking this link.
My purpose in sharing this app here is to learn new things while making this app even more beautiful with feedback from you.
Hope you can help me with your feedback,
Thanks in advance and have fun 🙂
Best regards …

Reklamlar

İlk Android Uygulamam (Yapboz)

Merhaba arkadaşlar;
Uzun bir aradan sonra benim için önemli olan bir gelişmeyi sizinle paylaşmak istedim. Sonunda bende bir Android uygulama geliştiricisi olma yolunda ilk adımımı attım. Bu başlangıç için, uzun teorik araştırma süreçlerine girişmektense, kendime pilot bir uygulama seçip bu uygulama üzerinde, geliştiriciler için sunulan bir takım araçları öğrenmenin daha doğru olacağına karar verdim. Bu nedenle basit ama bir o kadar da eğlenceli olan bir yapboz uygulaması geliştirmeye başladım. Uygulamam daha geliştirilmeye devam etmekte olup sürekli güncellenmektedir. Bu nedenle bazı bölümlerin daha tam olarak tamamlanmadığını görebilir veya bazı hatalar ile karşılaşabilirsiniz.


Bu sayfayı bilgisayarınızdan okuyorsanız, telefonunuzdan aşağıda bulunan QR kodu taratarak veya linki internet tarayıcınıza yazarak uygulamayı indirebilirsiniz.

QR Kodu ve İnternet Linki

Eğer bu sayfayı telefonunuzdan okuyorsanız bu linke tıklayarak uygulamayı indirebilirsiniz.
Bu uygulamayı burada paylaşmaktaki amacım sizler tarafından gelebilecek geri bildirimlerle uygulamayı daha da güzel bir hale getirirken yeni yeni şeyler öğrenmek.
Bu yolda geri dönüşlerinizle bana yardımcı olmanız dileğiyle,
Şimdiden teşekkürler ve iyi eğlenceler 🙂
Selametle …

Haberleşme Protokollerinde String Veri Gönderme

Merhaba arkadaşlar;

Bugün sizlere haberleşme protokollerinin genelinde karşılaşılan bir problemin çözümünden bahsedeceğim. Mikroişlemci ile çalışan arkadaşlar bilir, bir mikrodenetleyiciden herhangi bir protokol ( uart,spi,I2c vs. ) ile bilgi göndermek istersek göndereceğimiz bilginin char tipinde bir karakter olması gerekir. Bilgisayar programlamada printf(” “) fonksiyonuna alışmış arkadaşlar için char tipinde bir veriyle başka bir mikro denetleyiciye veya çevresel bir birime bilgi iletmek sıkıntılı bir iştir.

C gibi makineye yakın dillerde string veri tipi tanımlı değildir. Bunun yerine string ifadeler karakter dizileri içerisinde saklanır. Bu karakter dizileri kısaca char karakter[]="Bilgi" şeklindedir.

String ifadeleri haberleşme protokolleri ile gönderebilmek için her bir karakteri tek tek göndermemiz gerekir.  Bu gönderme işlemini yerine getirecek bir fonksiyon yazarak, göndermek istediğimiz string ifadeleri rahatlıkla gönderebiliriz.

Bunun mantığını anlayabilmeniz için Dev C++’da bir küçük bir kod parçası yazdım. Bu kod parçasını kendi sisteminize uyarlayarak string gönderme probleminin üstesinden gelmiş olursunuz.

Eğer kullandığınız derleyici gerek duymuyorsa include dosyalarını eklemeden de bilgiyi gönderebilirsiniz.

Dev C++ Kodları

Dev C++ Kodları

kodlarda geçen strlen(yazi) ifadesi yazi adındaki karakter dizisinin uzunluğunu veren bir fonksiyondur ve string.h başlık dosyasının içerisinde tanımlıdır.

yukarıdaki kodları derleyip çalıştırdığımızda karşımıza gelen ekran aşağıdaki şekildedir.

Ekran Görüntüsü

Ekran Görüntüsü

Selametle …

Spi ile PIC’ler Arası Haberleşme

Merhaba arkadaşlar;
Bu yazımda Spi Haberleşme Protokolü ile ilgili edindiğim tecrübeleri paylaşacağım.
Haberleşme protokollerinde amaç, bilginin bir birimden, mikro denetleyiciden veya cihazdan başka bir birime, mikro denetleyiciye veya cihaza iletilmesini sağlamaktır.
Haberleşme protokolleri ile ilgili daha detaylı bilgiye buradan ulaşabilirsiniz.

Öncelikle “Spi nedir ?” sorusundan başlamak gerektiğini düşünüyorum.
Spi ( Serial Peripheral Interface), dilimize  “Seri Çevresel Arayüz” olarak çevrilmektedir. İsminden de anlaşıldığı üzere Spi bir seri haberleşme protokolüdür. Spi haberleşme protokolünü, Motorola firması kendi mikro denetleyicileri için geliştirmiş, sonrasında ise bir standart olarak benimsenerek diğer mikro denetleyici üreten firmalar tarafından da kullanılmaya başlanmıştır.

Spi haberleşme protokolünde cihazlar arasında Master-Slave ilişkisi vardır. Master cihaz Slave cihazları yönetmek ve onlara işlemler yaptırmak ile yükümlüdür. Slave cihaz ise Master cihazdan gelen bilgilere göre işlem yapmak ile yükümlüdür. Bir master cihaza birden çok slave cihaz bağlanabilir. Ama aynı anda Slave cihazlardan sadece bir tanesi aktif olarak Master cihaz ile bilgi alışverişi gerçekleştirir.

Aynı anda veri alıp gönderebilen ( senkron haberleşme ) sistemlere full duplex sistemler denir. Spi protokolü de full duplex bir haberleşme protokolüdür.Yani Master mikro denetleyici spi haberleşmesini başlattığı anda hem bilgi gönderir, hem de bilgi alır. Aynı durum Slave mikro denetleyici için de geçerlidir.

Tek Slave Spi Haberleşmesi

Tek Slave Spi Haberleşmesi

Yukarıdaki resimde Tek Slave Spi Haberleşmesinin kullanıldığı bir sistem verilmiştir. Bu sistemin davranışını belirleyen pinlere ait lojik diyagram ise aşağıda verilmiştir.

Spi Haberleşmesinin Lojik Diyagramı

Spi Haberleşmesinin Lojik Yapısı

SS/CS: Slave Slect/Chip Slect
Spi’da Master cihazdan Slave cihaza bilgi aktarabilmek için Slave cihazın yetkilendirilmesi gerekmektedir. Slave cihazın yetkilendirilmesi için SS pininin lojik sıfır seviyesine çekilmesi gerekir. Master mikro denetleyicideki Slave Slect pinin sayısı Slave cihaz sayısına eşittir. Birden fazla Slave cihaz varsa, bilgi gönderilmek istenen Slave cihaz kendine bağlı olan SS pini ile seçilir ve haberleşme yapılır. Böylelikle gönderilen bilgiler sadece haberleşmek istenen cihaza iletilir.

SCLK: Serial Clock
Saat darbesi verilerin lojik olarak iletilmesini sağlar.
Slave cihaz yektilendirildikten sonra haberleşmenin başlayabilmesi için saat darbesine ihtiyaç vardır. Saat darbesi Master mikro denetleyici tarafından sağlanır ve SCLK üzerinden Slave mikro denetleyiciye aktarılır.

MOSI: Master Output Slave Input
Master cihazdan Slave cihaza MOSI pini üzerinden bilgiler aktarılır. Bu bilgilerin aktarılması için Master mikro dentleyici SS pinini lojik sıfır seviyesine çekmeli ve SCLK üzerinden saat darbesi üretmelidir.

MISO: Master Input Slave Output
Slave cihazdan Master cihaza MISO pini üzerinden bilgiler gönderilir. Bu bilgilerin aktarılması için Master mikro dentleyici SS pinini lojik sıfır seviyesine çekmeli ve SCLK üzerinden saat darbesi üretmelidir.

Çoklu Slave Spi Haberleşmesi

Çoklu Slave Spi Haberleşmesi

Yukarıdaki resimde ise Çoklu Slave Spi Haberleşmesi gösterilmektedir. Daha önce söylendiği üzere hangi mikro denetleyici ile haberleşileceği master cihaz tarafından belirlenir.

Şimdi ise Spi Protokolünün mantığını anlamak için yaptığım basit bir uygulamayı paylaşacağım. Burada iki mikro denetleyici üzerinde haberleşme yapılacağı için Slave Select pinine ihtiyaç yoktur. Yalnız uygulamanın simülasyon ortamında çalışması için bir SS pini tanımlanıp, Spi Debugger’a bağlanmıştır.
Şekilde görüldüğü gibi Master mikro denetleyiciye bağlı 7 tane butonun Spi haberleşme protokolü ile Slave mikro denetleyicide ki 7 ledi yakması sağlanmıştır.

Master Mikro Denetleyici

Master Mikro Denetleyici

Master Mİkro Denetleyici Butonları

Master Mİkro Denetleyici Butonları

Slave Mikro Denetleyici

Slave Mikro Denetleyici


Kodlar ve Benzetim Dosyası

Selametle …

Kaynaklar:
1-Wikipedia
2-Pic Proje
3-Ramazan Sural
4-İstanbul Teknik Üniversitesi

Haberleşme Protokolleri Neden Kullanılır ?

Merhaba arkadaşlar;

Bu yazımda sizlere haberleşme protokollerinden bahsedeceğim.

Haberleşme protokollerinde amaç, bilginin bir birimden, mikro denetleyiciden veya cihazdan başka bir birime, mikro denetleyiciye veya cihaza iletilmesini sağlamaktır. Bilginin aktarım amacına göre alıcı cihaz tarafından çok çeşitli işlemler yapılabilir.Örneğin evlerimizde bulunan klimaları uzaktan kumanda ile yöneterek, klimanın odayı bizim istediğimiz oda sıcaklığında tutmasını sağlarız. Burada bilgiyi gönderen cihaz kumanda, alan cihaz ise klimadır. Klima aldığı bilgiye göre bir kontrol işarati üreterek odanın belirlenen bir sıcaklıkta tutulmasını sağlar. Bu işlemin arka planında da haberleşme protokolleri vardır.

Klima

Haberleşme protokolleri fiziksel yapısına göre ikiye ayrılır. Bunlar paralel haberleşme protokolleri ve seri haberleşme protokolleridir.

Paralel haberleşme protokollerinde bilgiler alıcıya paralel data hatları üzerinden gönderilir.

Paralel iletisim

Paralel haberleşme protokollerinde gönderilen bilgiler alıcı birime seri haberleşme protokollerinden daha hızlı iletilir.Bu nedenle hız gerektiren uygulamalarda tercih edilir. Bunun en güzel örneği mikro denetleyicilerin iç mimarisidir. Mikro denetleyicilerin 8 bitlik, 16 bitlik vs. olduğunu duymuşsunuzdur. Bu, mikro denetleyicinin iç yapısında bulunan çekirdeğin ve data iletim hatlarının şeklini ifade etmektedir.

Data BusYukarda Microchip firmasına ait bir mikro denetleyicinin iç mimarisini görmektesiniz. Burada görüldüğü gibi 8 bitlik çekirdek çevresel birimlerle paralel veri hattı üzerinden haberleşir.

Paralel haberleşmenin dezavantajı ise, bilgiler paralel olarak gönderildiği için gönderilen bilginin bit uzunluğu kadar fiziksel data hattı kullanılması gerekir. Bu haberleşme türü mikro kontrolörün harici çevresel birimlerle haberleşmesinde tercih edilmek istenmez.Mikro denetleyicinin pin sayısı en önemli kısıtlarındandır. Paralel haberleşme ile çok fazla pin kullanılır.

Bu iletişim harici hafızadan veri okumak için, lcd’ye bilgi yazmak için vb. uygulamalarda kullanılır.  Eğer haberleşmenin seri iletişim ile yapılma imkanı varsa seri iletişim tercih edilir. Bunun için ise yapılacak uygulamada kullanılan harici çevresel birimlerin seri haberleşmeyi destekleyenleri tercih edilmelidir.

Seri haberleşme protokollerinde bilgiler tek bir data hattı üzerinden gönderilir.

Seri iletisim

Yukarıda 2 tane mikro kontrolörün birbiri ile seri iletişim üzerinden haberleşmesi gösterilmiştir. Burada önemli nokta paralel iletime göre mikro kontrolörlerin daha az fiziksel pini kullanılarak iletişim sağlanmıştır.

Seri iletişimde kullanılan standartlaşmış birçok protokol vardır. Can-Bus, Spi, I2C, RS 232, Usb, Uart bunlardan birkaçıdır. Geliştirilecek projelere göre kullanılan protokollerde değişmektedir. Örneğin geliştirilen projede sistemin hataya toleransı yok ise hata oluşma ihtimali en düşük olan protokol tercih edilmelidir.

Burada değinilmesi gereken bir konuda seri iletişimde verilerin nasıl gönderildiğidir. Bu kullanılan protokole göre değişmekle beraber en basit mantığı ile veri, saat darbelerinde gönderilir. Mikro denetleyicinin seri iletişim için ürettiği her saat darbesinde 1 bit gönderilir.

seri data transferi

Selametle …

ADC Nasıl Çalışır ?

Merhaba arkadaşlar;
Bugün sizlere ADC ( Analog Digital Converter ) biriminin nasıl çalıştığından bahsedeceğim. Bu işlemler marka veya model farketmeksizin ADC birimi bulunan mikro denetleyicilerin ADC biriminin nasıl çalıştığını anlamanızı sağlayacaktır.
Öncelikle ADC’nin ne anlama geldiğinden bahsedeyim. Analog Digital Converter ( Analog Dijital Dönüşütürücü ) bizim dış ortamdan alacağımız sürekli – zaman bir işareti mikro denetleyicimizin işleyebileceği veya anlamlandırabileceği bir işarete dönüştüren birimdir.Bu birim bizim bir sistemin cevabını veya karakteristiğini mikro denetleyici ile kontrol edebilmemizi sağlar.
Sayısal işaret işleme uygulamalarında, kontrol mühendisliğinde ve daha birçok alanda dış ortamdan alınan bilgilerin bilgisayar veya bilgisayar türevleri olan mikro denetleyici gibi aygıtlarda işlenmesi gerekir. Dış ortamdan alınan bilgiler zaman sürekli zaman bir işarettir. Bu işaretler devam ettikleri aralık boyunca sonsuz sayıda örnek içerir. Mikro denetleyicilerin ise çalışma frekansı ve saniyede yapabileceği işlem sayısı sınırlıdır. Bu sürekli zaman işaret yerine mikro denetleyiciye dijital bir işaret gönderilerek mikro denetleyicinin işaretimizi işlemesi sağlanır.

Bu işlemlerin sırası şu şekildedir. Alınan analog bilgi örneklenir, örnekledikten sonra kuantalanır ve mikro denetleyicinin anlayabileceği dile çevrilir. Böylelikle gelen işarete göre kontrol işareti oluşturulabilecektir.

ornekleme

Yukardaki grafikte görüldüğü gibi sürekli-zaman bir analog işaret, örneklenerek ayrık-zaman işarete dönüştürülmüştür. Burada unutulmaması gereken nokta işaretimiz hala dijital bir işaret değildir.
Dijital bir işaret olabilmesi için 1 ve 0’lar ile ifade edilmesi gerekir.
İşareti 1 ve 0’lar cinsinden ifade etmek için örneklenmiş işareti kuantalamamız gerekir. Kuantalama işleminde ise kullanacağımız ADC biriminin kaç bit olduğu önemlidir. Örneğin 10 bitlik bir ADC birimimiz olsun. Bit sayısı ADC biriminin çözünürlüğünü ifade eder. Bu ADC birimi (2^10)=1024 değer ile örnekleme yapar. Yukarıdaki analog işaretimizin maksimum genliği 10 birimdir. Bu şartlarda bizim kullanacağımız ADC biriminin adım büyüklüğü aşağıdaki gibi hesaplanır.

Adım_buyukluguYukarıdaki denklem bize genlik değerinin her 0.009766 birim artışının dijital  binary sayının bir değer artışını ifade ediyor.

genlik_bit_degisimi

Yukarıdaki tablodan da anlaşıldığı gibi ayrıklaştırılmış işaretin her bir sıfırdan farklı örneği için binary sayılar elde edilir. Bu binary sayılar örneklenmiş işaretin genliğine uygun olarak değişir.  Bu oluşturulan binary sayılar belirli bir frekansta birbirini takip ederek ( kare dalga oluşturacak şekilde 1 ve 0’lar dizisi olarak) mikro denetleyiciye gönderilir.

Mikro denetleyici gelen dijital bilgiye göre işlem yapar ve sonucunda kontrol işareti oluşturur.

Selametle …

Octave’de Fonksiyonun Kök Değerlerini Hesaplatmak

Merhaba arkadaşlar;
Bugün sizlere Octave programında kök değerlerinin nasıl hesaplatılacağından bahsedeceğim. Öncelikle Octave Programı, Matlab Programı ile aynı özelliklere sahip açık kaynak kodlu bir yazılımdır. Kısacası herkesin kullanımına açık ve ücretsizdir. Bu yazılımın android üzerinde de mobil uygulaması var ve bu uygulama üzerinde .m uzantılı matlab dosyalarını ve .octaverc uzantılı Octave dosyalarını derleyebilirsiniz. Bu uygulama ile bilgisayar ortamında yapabildiğiniz hesaplama işlemlerinin çoğunu telefonunuz üzerinde yapabilirsiniz.
“Peki neden kök değerlerinin hesaplatılması ile ilgili bir uygulama yapıyorsun ?” diye bir soru sorabilirsiniz.
Ders çalışırken her zaman yanımda bilgisayarım olmuyor. Bazen kök değerlerini hesap makinemin hesaplayamayacağı fonksiyonlar ile ilgili işlemler yapıyorum. Buna en güzel örnek Otomatik Kontrol Dersi’nde fonksiyonlar ile yaptığımız işlemler verilebilir.
Fonksiyonların karalı olabilmesi için kök değerlerinin komplex düzlemin sol yarısında olması veya komplex düzlem üzerinde olması gerekiyor.
Kök değerlerini hesaplamadan bulmak için çeşitli yöntemler geliştirilmiş. Bunlardan bir tanesi Routh-Hurwtiz Kriteridir. Burada bulduğunuz sonucun doğruluğunu teyit etmek için fonksiyonu bilgisayarda Matlab yada Octave gibi matematiksel hesaplamalar yapan programlara yazıp hesaplatmanız gerekir.
Bu işlemleri en basit yoldan yanınızdaki akıllı telefon ile yapabilirsiniz.
Aşağıda buna örnek bir uygulama verdim.

Octave'de Koşturulan Program

Octave’de Koşturulan Program

Octave'in Mobil Uygulaması

Octave’in Mobil Uygulaması

Selametle…