ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

101
T.C. SÜLEYMAN DEMİREL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE DENEYLERİNİN SİMÜLASYONU Ümmüşan ÇITAK Danışman Doç. Dr. Abdülkadir ÇAKIR YÜKSEK LİSANS TEZİ ELEKTRONİK VE BİLGİSAYAR EĞİTİMİ ANABİLİM DALI ISPARTA - 2018

Transcript of ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

Page 1: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

T.C.

SÜLEYMAN DEMİREL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ

ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE DENEYLERİNİN SİMÜLASYONU

Ümmüşan ÇITAK

Danışman Doç. Dr. Abdülkadir ÇAKIR

YÜKSEK LİSANS TEZİ ELEKTRONİK VE BİLGİSAYAR EĞİTİMİ ANABİLİM DALI

ISPARTA - 2018

Page 2: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

© 2018 [Ümmüşan ÇITAK]

Page 3: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...
Page 4: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

TAAHHÜTNAME Bu tezin akademik ve etik kurallara uygun olarak yazıldığını ve kullanılan tüm literatür bilgilerinin referans gösterilerek tezde yer aldığını beyan ederim.

Ümmüşan ÇITAK

Page 5: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

i

İÇİNDEKİLER

Sayfa İÇİNDEKİLER ........................................................................................................................... i ÖZET ............................................................................................................................................ iii ABSTRACT ................................................................................................................................ iv TEŞEKKÜR ................................................................................................................................ v ŞEKİLLER DİZİNİ ................................................................................................................... vi ÇİZELGELER DİZİNİ .............................................................................................................. viii SİMGELER VE KISALTMALAR DİZİNİ ........................................................................... ix 1. GİRİŞ ....................................................................................................................................... 1 2. KAYNAK ÖZETLERİ .......................................................................................................... 4 3. MATERYAL VE METOT ................................................................................................... 9

3.1. Android İşletim Sistemi ........................................................................................ 10 3.1.1. Android işletim sistemi sürümleri ......................................................... 11 3.1.2. Android mimarisi ........................................................................................... 12

3.1.2.1. Temel yapı (Linux çekirdeği) ....................................................... 13 3.1.2.2. Kütüphaneler (Libraries) ............................................................... 14 3.1.2.3. Android runtime ................................................................................ 14

3.2. Unity3D ........................................................................................................................ 14 3.2.1. Proje (Project) paneli ................................................................................... 16 3.2.2. Hiyerarşi (Hierarchy) paneli ..................................................................... 17 3.2.3. Araç çubuğu (Toolbar) ................................................................................ 17 3.2.4. Sahne (Scene) paneli .................................................................................... 19 3.2.5. Game (Oyun) paneli ...................................................................................... 19 3.2.6. Inspector paneli .............................................................................................. 19

3.3. C# Programlama Dili .............................................................................................. 20 3.4. Uygulama İçin Lojik Kapıların Tasarımı ........................................................ 21

3.4.1. Lojik kapılar ..................................................................................................... 21 3.4.1.1. Ve (And) kapısı ................................................................................... 22 3.4.1.2. Veya (Or) kapısı ................................................................................. 22 3.4.1.3. Vedeğil (Nand) kapısı ...................................................................... 23 3.4.1.4. Veyadeğil (Nor) kapısı..................................................................... 23 3.4.1.5. Değil (Not) kapısı............................................................................... 24 3.4.1.6. Tampon (Buffer) kapısı .................................................................. 25 3.4.1.7. Özelveya (Xor) kapısı ....................................................................... 25

3.4.1.8. Özelveyadeğil (Xnor) kapısı .......................................................... 26 4. ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE

DENEYLERİNİN SİMÜLASYONU ................................................................................ 27 4.1. Gerçekleştirilen Simülasyon Yazılımı ............................................................. 27 4.1.1. Simülasyon ekranı.......................................................................................... 29 4.1.1.1. Lojik kapı ekle butonu .................................................................... 30 4.1.1.2. Lojik giriş (Yük) ekle butonu ....................................................... 31 4.1.1.3. Çıkış (Lamba veya led) ekle butonu .......................................... 32 4.1.1.4. Sil butonu .............................................................................................. 32 4.1.1.5. Ana menüye git butonu .................................................................. 33 4.1.1.6. Çıkış butonu ......................................................................................... 34 4.1.1.7. Temizle butonu .................................................................................. 35 4.2. Simülasyon Yazılımının Akış Diyagramı........................................................ 36

Page 6: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

ii

4.3. Yakınlaştırma ve Sahnede Gezinme İşlemleri ............................................. 38 4.4. Geliştirilen Mobil Yazılım İle Yapılan Simülasyon Örnekleri ............... 38 4.4.1. Ve (And) kapısı uygulaması ....................................................................... 38

4.4.2. Veya (Or) kapısının akıllı tahtada uygulanması ................................ 39 4.4.3. Yarım toplayıcı lojik devresi uygulaması ............................................. 39 4.4.4. Yarım çıkarıcı lojik devresi uygulaması ............................................... 41

4.4.5. F=AB+C(A+B) Lojik ifadesinin lojik kapılar ile gerçekleştirilmesi ........................................................................................... 42 4.5. Simülasyon Uygulamasının Apk Dosyasının Oluşturulması ................. 43 4.6. Simülasyon Uygulamasının Exe Dosyasının Oluşturulması.................. 46 4.7. Geliştirilen Mobil Uygulamanın Eğitimde Kullanılması.......................... 50

5. SONUÇ VE ÖNERİLER ...................................................................................................... 52 KAYNAKLAR ....................................................... 54 EKLER ......................................................................................................................................... 58

EK A. Programın C# Kodları ........................................................................................ 59 ÖZGEÇMİŞ ................................................................................................................................. 88

Page 7: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

iii

ÖZET

Yüksek Lisans Tezi

ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE DENEYLERİNİN SİMÜLASYONU

Ümmüşan ÇITAK

Süleyman Demirel Üniversitesi

Fen Bilimleri Enstitüsü Elektronik ve Bilgisayar Eğitimi Anabilim Dalı

Danışman: Doç. Dr. Abdülkadir ÇAKIR

Bu tez çalışmasında, ülkemizde Mesleki ve Teknik Eğitimde okutulan Sayısal/Dijital Elektronik, Lojik Devreler, Temel Elektronik ve Ölçme, Elektronik Sistemler gibi derslerde öğrencilerin ders esnasında lojik kapılar veya lojik kapılarla gerçekleştirilen lojik devre deneylerinin simülasyonunu kolayca yapabilmelerini sağlamak amacıyla Android ve Windows tabanlı mobil cihazlarda çalışan bir uygulama geliştirilmiştir. Bu derslerde eğitimi her platformda gerçekleştirebilmek adına, okullarda uygulanmakta olan FATİH Projesi kapsamında dağıtılan Tablet PC’ler, sahip oldukları akıllı telefonlar üzerinde veya Windows tabanlı dokunmatik ekran diz üstü bilgisayar ve akıllı tahta üzerinde çalışabilen, öğrencilerin ders esnasında ya da istedikleri yer ve zamanda lojik kapılarla hazırlanan lojik devre deneylerinin simülasyonlarını yapabilmeleri amacıyla Unity3D editöründe C# dili kullanılarak 2D bir uygulama hazırlanmıştır. Mobil uygulamanın kullanılabilirliğinin değerlendirilebilmesi için 2017-2018 Eğitim Öğretim yılı Mart ayında, Milli Eğitim Bakanlığı’na bağlı bir İmam Hatip Ortaokulu’nun 6. Sınıfında okuyan ve konuyu hiç bilmeyen 12’şer kişilik birbirine denk olduğu varsayılan iki grup öğrenciye birer ders saati eğitim verilmiştir. Sınıf iki gruba ayrılmıştır. Birinci gruba simülasyon uygulaması yapılmadan tahtada temel lojik kapılar anlatılarak eğitim uygulanırken, ikinci gruba konu anlatımının yanında geliştirilen mobil uygulama ile simülasyonları gösterilerek destek verilmiştir. Derslerden sonra iki gruba da bir yazılı sınav yapılmıştır. Sonuçlar değerlendirildiğinde mobil uygulama ile desteklenen öğrencilerin %83’ü sınavda devreyi tam yaparken diğer grubun %50’si tam yapabilmiştir. Uygulamanın kullanışlı ve kolaylaştırıcı olduğu görülmüştür. Mobil uygulama ile desteklenen öğrencilerin simülasyonlarını görerek ve uygulayarak konuyu daha iyi kavradıkları görülmüştür. Anahtar Kelimeler: Android, mobil cihazlar, lojik devre, lojik kapılar, simülasyon, mobil uygulama, Unity3D. 2018, 88 sayfa

Page 8: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

iv

ABSTRACT

M.Sc. Thesis

SIMULATION OF LOGIC CIRCUIT EXPERIMENTS ON THE ANDROID-BASED MOBILE DEVICES

Ümmüşan ÇITAK

Süleyman Demirel University

Graduate School of Natural and Applied Sciences Department of Electronics and Computer Education

Supervisor: Assoc. Prof. Dr. Abdülkadir ÇAKIR

This study, an application based on Android and Windows based mobile devices has been developed for use in lessons such as Digital Electronics, Basic Electronics and Measurement, Electronic Systems, which are taught in Vocational and technical education in our country so the students can easily develop logic gates or logic circuits experiments’ simulation of logic gates performed. In these lessons, in order to be able to perform education on every platform, Tablet PCs distributed under the FATIH Project, which is being implemented in schools, are capable of working on their smart phones or on Windows based touch screen laptops and smart boards, a 2D application was prepared by using the C # language in the Unity3D editor so that the students could simulate the logic circuit experiments prepared with the logic gates at the time of the course or at the time and place they want. In order to be able to evaluate the availability of the mobile application, in the academic year 2017-2018, in March, reading in the 6th Grade of the Imam Hatip Secondary School attached to the Ministry of National Education and two group students who were supposed to be equal to twelve persons who did not know the subject were given one lesson hour training. The class is divided into two groups. The first group, while the training is carried out by describing the basic logic gates on the board without the application of the simulation, the second group was supported by showing the simulations with the developed mobile application besides the narration of the subject. After the lessons, a written examination was made in two groups. When the results are evaluated, 83% of the students supported by the mobile application in the examination were able to complete the circuit while 50% of the other group was able to complete it. The application is seen to be useful and facilitating. Students supported by mobile application had better understanding of the subject by seeing and practicing the simulations. Keywords: Android, mobile devices, logic circuit, logic gates, simulation, mobile application, Unity3D. 2018, 88 pages

Page 9: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

v

TEŞEKKÜR

Bu araştırma için beni yönlendiren, karşılaştığım zorlukları bilgi ve tecrübesi ile aşmamda yardımcı olan, her daim bana güvenen, gösterdiği sabır ve özveriyle desteğini eksik etmeyen değerli Danışman Hocam Doç. Dr. Abdülkadir ÇAKIR’a teşekkürlerimi sunarım. Literatür araştırmalarımda ve projeyi yapmamda yardımcı olan, beni yönlendiren değerli hocam Doç. Dr. Ecir Uğur KÜÇÜKSİLLE’ye teşekkür ederim. Yazılımı geliştirirken karşılaştığım zorlukları aşmamda yardımcı olan, bilgi ve tecrübeleriyle destek olan Süleyman Yasir KULA’ya çok teşekkür ederim. Tezin yazımı aşamasında yardımlarını esirgemeyen sevgili arkadaşım Birkan BÜYÜKARIKAN’a çok teşekkür ederim. Tezimin her aşamasında beni yalnız bırakmayan sevgili aileme ve eşim Gürkan ÇITAK’a sonsuz sevgi ve saygılarımı sunarım.

Ümmüşan ÇITAK

ISPARTA, 2018

Page 10: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

vi

ŞEKİLLER DİZİNİ

Sayfa Şekil 3.1. Android mimarisi ............................................................................................... 13 Şekil 3.2. Unity3d ana editör penceresi ....................................................................... 16 Şekil 3.3. Proje paneli görünümü .................................................................................... 17 Şekil 3.4. Hiyerarşi paneli görünümü............................................................................ 17 Şekil 3.5. Araç çubuğu görünümü ................................................................................... 18 Şekil 3.6. Hareket butonları ............................................................................................... 18 Şekil 3.7. Transform gizmo butonları ........................................................................... 18 Şekil 3.8. Oynatma, durdurma, step butonları .......................................................... 18 Şekil 3.9. Layers butonu ...................................................................................................... 18 Şekil 3.10. Layout butonu ................................................................................................... 19 Şekil 3.11. Sahne paneli ....................................................................................................... 19 Şekil 3.12. Inspector paneli ............................................................................................... 20 Şekil 3.13. Unity3D programında C# kod yapısı ...................................................... 21 Şekil 3.14. Ve kapısı sembolü ........................................................................................... 22 Şekil 3.15. Veya kapısı sembolü ....................................................................................... 22 Şekil 3.16. Vedeğil kapısı sembolü ................................................................................. 23 Şekil 3.17. Veyadeğil kapısı sembolü ............................................................................ 24 Şekil 3.18. Değil kapısı sembolü ...................................................................................... 24 Şekil 3.19. Tampon kapısı sembolü ............................................................................... 25 Şekil 3.20. Özelveya kapısı sembolü .............................................................................. 25 Şekil 3.21. Özelveyadeğil kapısı sembolü .................................................................... 26 Şekil 4.1. Giriş ekranı görünümü ..................................................................................... 28 Şekil 4.2. Simülasyon ekranı görünümü ...................................................................... 28 Şekil 4.3. Yardım ekranı görünümü ............................................................................... 29 Şekil 4.4. Simülasyon ekranı menü görünümü ......................................................... 29 Şekil 4.5. Lojik kapı ekle butonu...................................................................................... 30 Şekil 4.6. Sahneye and kapısını ekleme ........................................................................ 31 Şekil 4.7. Lojik giriş ekle butonu ..................................................................................... 31 Şekil 4.8. Çıkış ekle butonu ................................................................................................ 32 Şekil 4.9. Sil butonu görünümü ........................................................................................ 33 Şekil 4.10. Ana menüye git butonu ................................................................................. 33 Şekil 4.11. Ana menüye git butonuna dokununca açılan pencere

görünümü ........................................................................................................... 34 Şekil 4.12. Çıkış butonu ....................................................................................................... 34 Şekil 4.13. Çıkış butonuna dokununca açılan pencere görünümü ................... 35 Şekil 4.14. Temizle butonu ................................................................................................ 35 Şekil 4.15. Programın çalışmasını gösteren akış şeması ...................................... 37 Şekil 4.16. Ve (And) kapısı uygulaması ekran görüntüleri .......................................... 38 Şekil 4.17. Veya (Or) kapısı akıllı tahta ekran görüntüleri .......................................... 39 Şekil 4.18. Yarım toplayıcı sembolü ............................................................................... 40 Şekil 4.19. Yarım toplayıcı devresi ekran görüntüleri ........................................... 40 Şekil 4.20. Yarım çıkarıcı sembolü ................................................................................. 41 Şekil 4.21. Yarım çıkarıcı devresi ekran görüntüleri .............................................. 42 Şekil 4.22. Yarım çıkarıcı devresi ayrıntılı şeması ve uygulama

görüntüleri ......................................................................................................... 42

Page 11: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

vii

Şekil 4.23. F=ab+c(a+b) Lojik ifadesinin lojik kapılar ile tasarımı ................... 43 Şekil 4.24. File / Build settings ekran görünümü .................................................... 44 Şekil 4.25. Build settings penceresi ............................................................................... 44 Şekil 4.26. Player settings ekranı .................................................................................... 45 Şekil 4.27. Geliştirilen uygulamanın logosunun mobil cihazda görünümü .. 46 Şekil 4.28. File / Build settings ekran görünümü .................................................... 47 Şekil 4.29. Build settings penceresi ............................................................................... 48 Şekil 4.30. Windows platformu için gerekli dosyalar ............................................ 48 Şekil 4.31. Uygulamanın akıllı tahta üzerinde ekran görüntüsü – 1 ................ 49 Şekil 4.32. Uygulamanın akıllı tahta üzerinde ekran görüntüsü – 2 ................ 49 Şekil 4.33. Uygulamanın akıllı tahta üzerinde ekran görüntüsü – 3 ................ 50 Şekil 4.34. Değerlendirme sorusu .................................................................................. 51

Page 12: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

viii

ÇİZELGELER DİZİNİ

Sayfa Çizelge 3.1. Mobil işletim sistemleri .............................................................................. 11 Çizelge 3.2. Tüm android sürümleri listesi ................................................................. 12 Çizelge 3.3. Ve kapısı doğruluk tablosu ........................................................................ 22 Çizelge 3.4. Veya kapısı doğruluk tablosu ................................................................... 23 Çizelge 3.5. Vedeğil kapısı doğruluk tablosu ............................................................. 23 Çizelge 3.6. Veyadeğil kapısı doğruluk tablosu ......................................................... 24 Çizelge 3.7. Değil kapısı doğruluk tablosu .................................................................. 24 Çizelge 3.8. Tampon kapısı doğruluk tablosu ............................................................ 25 Çizelge 3.9. Özelveya kapısı doğruluk tablosu .......................................................... 26 Çizelge 3.10. Özelveyadeğil kapısı doğruluk tablosu ............................................. 26 Çizelge 4.1. Yarım toplayıcı devresi doğruluk tablosu .......................................... 40 Çizelge 4.2. Yarım çıkarıcı devresi doğruluk tablosu ............................................. 41 Çizelge 4.3. Verilen lojik ifadenin doğruluk tablosu ............................................... 43

Page 13: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

ix

SİMGELER VE KISALTMALAR DİZİNİ API Uygulama programlama arayüzü APK Android uygulama paketi B Yarım çıkarıcı devresi borç biti BDÖ Bilgisayar destekli öğretim Co Yarım toplayıcı devresi elde biti D Yarım çıkarıcı devresi fark biti GSM Cep telefonu iletişim protokolü GPRS Genel paket radyo servisi JDK Java geliştirme kiti S Yarım toplayıcı devresi toplam biti SDK Yazılım geliştirme kiti 3G 3.Nesil kablosuz telefon teknolojisi 4.5G 4.Nesil kablosuz telefon teknolojisi

Page 14: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

1

1. GİRİŞ

Eğitim, bireyin sadece okul hayatında değil, yaşamın her alanında oldukça önemli

bir yere sahiptir. Özellikle son dönemlerde teknolojide yaşanan gelişmeler,

bireye eğitim alması açısından pek çok yeni ortam sunmuştur. Bu ortamlardan

biri de yer ve zamandan bağımsız olarak mobil cihazlar ve tablet bilgisayarlarla

sağlanan ortamlardır. Bu teknolojiler gün geçtikçe daha vazgeçilmez bir nitelik

kazanmaktadırlar. Özellikle son yıllarda yaygınlaşan mobil simülasyon

uygulamalarından derslerde faydalanmak suretiyle soyut kavramlar

somutlaştırılarak öğrencilerin derslere karşı ilgisi ve başarısı arttırılabilir. Aynı

zamanda mobil öğrenme yazılımları ile gerçek uygulamalarda yaşanan zorluklar,

kullanıcıların maruz kalacağı tehlikeler azaltılabilir, yer ve zaman kısıtlaması

olmadan ihtiyaç anında öğrenme gerçekleştirilebilir.

Sürekli olarak araştırmalar sonucu yenilenen teknoloji ve bunun sonucu ortaya

çıkan teknoloji ürünleri hayatı kolaylaştıracak biçimde insan yaşamı içinde yerini

almaktadır. Bilgisayar teknolojileri ve buna bağlı olarak gelişen internet

hizmetlerinin kısa sürede nasıl yaygın bir araç olarak ortaya çıktıkları hepimizin

yaşayarak gördüğü bir süreçtir. Hep ‘’daha iyi ve verimli nasıl öğretebiliriz’’

sorusuna cevap almak için yapılan eğitimle ilgili çalışmalarda bilgisayar

teknolojisine bağlı olarak yeni öğretim teknik ve yöntemleri geliştirilmiştir

(Büyükbayraktar, 2006).

Hızla ilerleyen teknoloji, bilim dünyasında büyük gelişmeler sağlarken, bilgiyi ve

bilgiye ulaşmayı küçük cihazlara sığdırmayı başarmıştır. Bu teknolojik

gelişmelere paralel olarak mobil cihazlar, bilgisayarlar ile yapılabilecek birçok

işlemi yapabilecek donanıma ve yazılıma sahip hale gelmiştir. Bu durum dünya

üzerinde mobil cihaz kullanımının muazzam derecede artmasını sağlamıştır

(Sonuç vd., 2013).

Gün geçtikçe android tabanlı akıllı cihazların hayatımızdaki yeri artmaktadır.

Bunların başında akıllı telefonlar ve tablet PC’ler gelmektedir (Şimşek vd., 2013).

Bu cihazların sahip olduğu üstün özellikler kullanılarak gerçekleştirilen, insan

Page 15: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

2

hayatını kolaylaştıracak projeler her geçen gün artmaktadır. Bu taşınabilir

sistemler sayesinde günümüzde insanlar, zaman ve mekândan bağımsız olarak

birçok uygulamayı kullanabilmektedirler.

Simülasyon yazılımları sayesinde öğrenciler deneyi bireysel olarak

gerçekleştirebilmektedirler. Simülasyon yazılımlarının özellikle deneysel

çalışmalarda araç-gereçleri tanıma ve kullanabilme hususlarında etkili olduğu

söylenebilir. Okul laboratuvarlarındaki malzeme eksikliği ve sınıf mevcutlarının

fazla olmasından dolayı deneylerin birçoğu gösteri yöntemiyle

gerçekleştirilmektedir. Bu durumda simülasyon yazılımları gösteri yöntemine iyi

bir alternatif olarak karşımıza çıkar. Yüksek maliyetli laboratuvar araç-gereçleri

nedeniyle simülasyon yazılımlarının kullanılması maliyeti düşürecektir

(Özdener, 2005).

Başta Elektrik-Elektronik Teknolojileri olmak üzere, Bilgisayar Teknolojilerinin

de içinde bulunduğu pek çok alanda, lojik mantığının kavratılmaya başlandığı,

sayı sistemleri ve bu sistemlerin birbirine dönüştürülmesi aşamasında,

öğrenciler büyük zorluk çekmektedirler. Daha çok geleneksel yöntemlerle

anlatılan bu derslerde, kavramların soyut kalması en büyük problemdir. Başta

temel kavramları öğrenmede güçlük çeken öğrenciler, daha sonrasında temel

lojik devrelerin kurulması ve ileriki aşamalarda daha da zorlanmaktadırlar.

Öğrencilerin derse karşı ilgi ve tutumunu arttırmak için bu kavramların

somutlaştırılması gerekmektedir (Akkağıt ve Tekin, 2011).

Bu gelişmeler ışığında ülkemizde yapılan birçok çalışma ve proje mevcuttur. Bu

projelerin en büyüğü günümüzde uygulanmakta olan FATİH projesidir. FATİH

projesi öğrencinin tablet kullanarak, eğitim-öğretim ortamına daha aktif

katılımının sağlanmasına yardımcı olmaktadır. Mobil teknolojilere dayalı tablet,

akıllı telefon vb. aygıtların öğrenme amaçlı olarak giderek öğrenme merkezi

haline gelmesi mobil öğrenme uygulamalarının önemini ortaya koymaktadır.

Mobil öğrenme, öğrenene esnek bir çalışma ortamı sunarak zamanın ve mekânın

daha verimli kullanılmasını sağlar. Daha önceden yapılan çalışmalarda mobil

cihazlar farklı alanlarda ve farklı öğrenme faaliyetlerinde aktif olarak

Page 16: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

3

kullanılmıştır. Mobil teknolojiler eğitim öğretimi desteklemesi amacıyla dilbilgisi,

yabancı dil eğitimi, matematik, yönetim ve bilgisayar bilimleri gibi alanlarda

kullanılmıştır (Kılıç, 2015).

Ülkemizde son yıllarda birçok alanda simülasyon temelli öğrenme üzerine

geliştirilen mobil uygulamalar ve akademik çalışmalar bulunmaktadır. Literatür

taramalarında Google Play üzerinde Lojik Kapılar ve Lojik devrelerin kullanımı

ile ilgili birkaç android tabanlı mobil uygulamaya rastlanmıştır. Ayrıca bu konuda

yapılmış akademik çalışmalarda bilgisayar destekli simülasyon uygulamalarının

yapıldığı görülmüş, hem Android hem de Windows platformunda çalışabilen

mobil bir simülasyon uygulamasına rastlanmamıştır.

Bu tez çalışmasında ülkemizde Mesleki ve Teknik Eğitimde okutulan

Sayısal/Dijital Elektronik, Temel Elektronik ve Ölçme, Elektronik Sistemler gibi

derslerde öğrencilerin ders esnasında lojik kapılar veya lojik kapılarla

gerçekleştirilen lojik devre deneylerinin simülasyonunu kolayca yapabilmelerini

sağlamak amacıyla Android ve Windows tabanlı mobil cihazlarda çalışan bir

uygulama geliştirilmiştir. Bu derslerde eğitimi her platformda

gerçekleştirebilmek adına, okullarda uygulanmakta olan FATİH Projesi

(Fırsatları Arttırma ve Teknolojiyi İyileştirme Hareketi Projesi) kapsamında

dağıtılan Tablet PC’ler, sahip oldukları akıllı telefonları üzerinde veya programı

Unity’de Windows için derleyerek akıllı tahta ve dokunmatik ekran dizüstü

bilgisayarda da çalışabilen, öğrencilerin ders esnasında ya da istedikleri yer ve

zamanda lojik kapılarla hazırlanan lojik devre deneylerinin simülasyonlarını

yapabilmeleri amacıyla Unity3D editöründe C# dili kullanılarak 2D bir uygulama

hazırlanmıştır. Sadece öğrenciler değil, öğretmenler veya araştırmacılar da bu

taşınabilir cihazlar üzerinde, herhangi bir elektronik laboratuvarına veya

bilgisayara ihtiyaç duymadan istedikleri yerde ve zamanda simülasyon

uygulamalarını yapabileceklerdir.

Page 17: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

4

2. KAYNAK ÖZETLERİ

Altıkardeş (2001) tarafından, Marmara Üniversitesi Teknik Bilimler Meslek

Yüksekokulu Dijital Devreler 1 dersinin öğretim programına uygun olarak Lojik

Devreler 1 adı altında, öğrencilerin dersi İnternet üzerinden takip etmelerini

sağlayacak, klasik eğitime yardımcı olarak WEB tabanlı bir eğitim materyali

hazırlanmıştır.

Ekiz vd. (2003) tarafından, Mühendislik Fakülteleri ve Teknik Eğitim Fakülteleri

ile Meslek Yüksek Okulları’nda “Mantık Devreleri”, “Lojik Devreler” veya “Dijital

Elektronik” adı ile okutulan dersin uzaktan, İnternet Destekli Öğretim (İDÖ)

metodu ile verilmesine yönelik olarak içeriğin hazırlanmasındaki kriterler

anlatılmış, ders içeriğinin oluşturulmasına/geliştirilmesine yönelik

araçlar/yöntemler tanıtılmış ve İnternet destekli uzaktan eğitimin

değerlendirmesi yapılmıştır.

Büyükbayraktar (2006) tarafından, anaolog ve dijital elektronik devrelerini

simüle etmek için geliştirilmiş Proteus isimli sanal laboratuvar programının,

öğrencilerin Dijital Elektronik atelyesi Lojik Devreler konusundaki ders

başarılarına olan etkisini belirlemek için bir çalışma yapılmıştır.

Özcan (2008) tarafından, cep bilgisayarları (PDA-Personal Digital Assistant) için

bir mobil öğrenme ortamı tasarımı ve uygulaması gerçekleştirilmiştir. Tasarım

SQL server veri tabanı ve .Net 2005 C# programları kullanılarak

gerçekleştirilmiştir.

Rosilah vd. (2008, 2010) yapmış oldukları çalışmada internet üzerinden

ulaşılabilecek Dijital Lojik Tasarımı dersi için hazırlanmış pratik yeni bir

laboratuvar deneyimi sunmuşlardır. Multimedya platformu kullanarak

tasarlanan DigiLAB isimli sanal laboratuvar ile Bilişim Teknolojisi Bölümü’ndeki

öğrencilerin lojik devre davranışını anlamaları, farklı tekniklerle ve

enstrümanlarla devre kartlarını tasarlamaları amaçlanmıştır.

Page 18: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

5

Keskin (2010) tarafından yapılan çalışmada mobil öğrenme uygulamalarında

kullanılan mobil öğrenme teknolojileri ve araçları incelenmiş, aynı zamanda

farklı amaçlar için hazırlanmış, değişik platformlarda hizmet veren, ileri düzey

mobil öğrenme uygulamaları, kullanılan teknolojiler ve araçlar bakımından

değerlendirilmiştir.

Çakır (2011) tarafından, Temel Bilgi Teknolojisi dersi için mobil yazılım

geliştirilmiştir. Bu mobil yazılım öğrenciler tarafından kullanılmış ve yazılıma

ilişkin öğrenci görüşleri belirlenmeye çalışılmıştır.

Cupic (2011) yapmış olduğu çalışmada Sayısal Mantık öğretme ve öğrenme için

web teknoloji temelli bütünleşmiş bir platform geliştirmiştir. Bu platform

öğretmenlere, öğrenme ve değerlendirme materyallerini hazırlarken ve

öğrencilerin öğrenme durumunu takip ederken yardımcı olmaktadır.

Akkağıt ve Tekin (2011) tarafından yapılan çalışmada Labview yazılımı

kullanılarak lojik kapılar için bir eğitim aracı geliştirilmiştir. Elektrik-Elektronik

ve Bilgisayar Teknolojileri’nin içinde bulunduğu pek çok alanda, lojik elemanları

ve devreleri tanıtan ve bu elemanlarla lojik tasarımlar yapabilmeyi amaçlayan bu

derslerde, malzeme veya laboratuar imkânlarının kısıtlı olması nedeniyle

kavramlar soyut kalmaktadır. Bu eğitim aracı ile konular somutlaştırılmış, görsel

ara yüzler hazırlanmış ve öğrenciler ile etkileşim sağlanmıştır. Örnek uygulama

olarak Ve (And), Veya (Or), Değil (Not) kapıları seçilmiştir.

Muştu (2012) tarafından, eğitimde teknolojik olanaklardan faydalanarak

öğrenci-eğitimci etkileşiminin ve verimliliğinin arttırılması yönünde çalışmalar

yapılmıştır. Öğrenci ve eğitimcilerin, cep telefonları ve İnternet olanakları

kullanarak, interaktif olarak hızlı ve verimli bir biçimde iletişim kurabilmeleri

için bir sistem tasarlanmış ve uygulama ortamı geliştirilmiştir.

Bal (2012) tarafından yapılan çalışmada LabVIEW 2010 Student Edition

programı kullanılarak, Elektrik-Elektronik Mühendisliği, Bilgisayar Mühendisliği

ve Bilgisayar Bilimleri bölümleri öğrencilerinin, Dijital Lojik Tasarımı dersine ait

Page 19: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

6

uygulamalarda kullanabilecekleri Dijital Lojik isimli bir araç kutusu

tasarlanmıştır.

Çevik ve Koçer (2012) yaptıkları çalışmada yabancı dil öğreniminde önemli bir

etken olan kelime ezberleme veya öğrenmeye yönelik yardımcı bir mobil yazılım

gerçekleştirmişlerdir. Bu yazılım, Android işletim sistemi platformunda

çalışabilecek şekilde Java programlama dili ile gerçekleştirilmiştir.

Tülü (2012) yaptığı çalışmada öğrencinin ve akademik personelin ihtiyaçlarını

göz önüne alarak objective c dili ile IPhone ‘a uygulama geliştirmiştir.

Sonuç vd. (2013) yaptıkları çalışmada Karabük Üniversitesi'ne yönelik Android

cihazlarda kullanılmak üzere bir bilgi sistemi hazırlamışlardır. Uygulama sadece

Karabük Üniversitesi öğrencileri veya personeline yönelik değil, Karabük

Üniversitesi hakkında bilgi sahibi olmak isteyen ya da üniversite ile ilgili

gelişmeleri takip etmek isteyen Android kullanıcılarına da hizmet verecek şekilde

geliştirilmiştir.

Demir (2014), çalışmasında Bilgisayar ve Öğretim Teknolojileri Öğretmenliği

Anabilim Dalı’nda okutulan Grafik ve Animasyon dersindeki mobil öğrenme

uygulamalarının, öğrencilerin akademik başarılarına ve mobil öğrenmeye

yönelik tutumlarına etkisini araştırmıştır.

Yechshzhanova (2014) tarafından BDÖ ve Mobil Öğrenme için geometri dersinin

içeriği geliştirilmiştir. İçeriğin geliştirilmesinde 3DS MAX ve UNİTY3D yazılımları

kullanılmıştır. Üç boyutlu modeller 3DS Max programında tasarlanıp öğrencilerin

bu modelleri daha iyi inceleyebilmesi için Unity3D programına aktarılmıştır. Bu

çalışmada ayrıca, BDÖ için geliştirilen bu içeriğin öğrencilerin akademik

başarısını nasıl etkilediği de belirlenmeye çalışılmıştır.

İğci (2014), çalışmasında MySQL veritabanından okunan veriyi RSS yayınına

dönüştüren bir php yazılımı ile bu veriye RSS aracılığıyla erişip, ayrıştırarak

anlamlı veriye dönüştüren ve kullanıcıya sunan mobil bir Android uygulaması

Page 20: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

7

geliştirmiştir. Geliştirilen uygulama, Ege Üniversitesi mezunlarının ve mezun

bilgilerinin görüntülenebildiği; fakülte, bölüm ve yıl bazlı çalışan bir uygulamadır.

Çınar (2014), çalışmasında Android mobil cihazı ve evrensel seri veriyolu (USB)

bağlantılı parmak izi okuyucusu kullanarak parmak izi tanıma ve kimlik

doğrulama sistemi geliştirmiştir.

Dehmenoğlu (2015), çalışmasında Mesleki ve Teknik Anadolu Lisesi Bilişim

Teknolojileri Alanı Programlama Temelleri Dersinin mobil öğrenme ile

desteklenmesini sağlayacak Android tabanlı Kod Her Yerde isimli bir mobil

uygulama geliştirmiştir. Ayrıca uygulamayı kullanan ve kullanmayan

öğrencilerin akademik başarıları arasındaki farklar ölçülmeye çalışılmıştır.

Kh’tour (2015) tarafından yapılan çalışmada android tabanlı hastane uygulaması

geliştirilmiştir. Android uygulamasını geliştirmek için Java, veritabanı yönetimi

için mysql, veritabanı ve Android uygulaması arasında haberleşme için php

kullanılmıştır.

Erşahin (2015) tarafından yapılan çalışmada kablosuz teknoloji ile uzaktan

kontrol edilebilen, üzerinde yerleşik bir kamera taşıyan bir mobil robot

tasarlanmıştır. Android tabanlı tablet bilgisayarlar (kontrolör) ile kablosuz

olarak mobil robot kontrol edilebilmektedir. Kablosuz kontrol için Android

arayüz programı tasarlanmıştır.

Dalmaz (2015) tarafından yapılan çalışmada, öncelikli olarak web ortamındaki

yoğun bilgi kirliliği içerisinden kullanıcının ihtiyaç duyduğu anlamlı verilere

ulaşımın Android cihazlarla nasıl daha hızlı ve güvenilir bir şekilde

yapılabileceğinin analizleri yapılmış, geliştirilecek uygulamada bulunacak

özellikler tespit edilmiş, sonrasında uygulamanın geliştirme ortamı Eclips’de

hazır hale getirilip kodlaması yapılmıştır.

Doğan (2017) tarafından çok hücreli canlı embriyolarının anne karnında ya da

yumurta içinde nasıl olgunlaştığı araştırılmış ve bu mekanizmanın basit bir

Page 21: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

8

simülasyonu yapılarak yöntemin 3 boyutlu özgün tasarımlar üretmedeki başarısı

incelenmiştir. Uygulama, Unity3D oyun motoru ile geliştirilmiştir.

Dube (2017) tarafından yapılan çalışmada, sanal gerçeklik tabanlı arayüz,

artırılmış gerçeklik tabanlı arayüz ve dokunmaya dayalı mobil uygulama Android

platformunda tanımlanmıştır. Arabirimleri geliştirmek için Unity3D programı

kullanılmıştır. Bu çalışmada, bir koreografi üreteci için farklı etkileşim

tekniklerinin kullanıcı deneyimi üzerindeki etkileri araştırılmıştır. Koreografide,

dokunmatik ekran ve jestler gibi doğrudan girdi yöntemleri olan ve fare, klavye

gibi dolaylı yöntemler gibi farklı interaktif teknikler de değerlendirilmiştir.

Ayrıca koreografi araçları için sanal gerçeklik ve artırılmış gerçek arayüz olarak

değerlendirilmiştir. Araştırma, aynı uygulamanın farklı etkileşim yöntemlerinin

kullanıcı deneyimini nasıl etkilediğini araştırmaya katkıda bulunmaktadır.

Yaşar (2017) çalışmasında, anne ve anne adayları için bir android uygulama

geliştirmiştir. Hem annelerin 0-2 yaş arası çocukları için gereken aşı bilgilerine

ulaşabilecekleri hem de anne adaylarının hafta hafta gebelik bilgilerini takip

edebilecekleri bir uygulama tasarlanmıştır. Böylelikle hem doktor taraflı hem de

anne ve anne adayları açısından bir paylaşım platformu ve iletişim kanalı

oluşturulmuştur.

Demiray (2017) tarafından yapılan çalışmada, dalış kazalarında kazazedelerin,

mümkün olan en kısa sürede tedavi merkezlerine ulaşarak tedavinin en kısa

zamanda başlaması ve dalış kazalarına karşı bilinç sağlamak amacıyla bir

Android uygulama geliştirilmiş, etki alanları ve faydaları ifade edilmiştir.

Kalınkara (2017) çalışmasında mobil teknolojilerin öğrenci başarısı üzerine

etkisini araştırmıştır. Bu amaç doğrultusunda, Bilgisayar Donanımı ve Elektronik

dersi konularını kapsayan Android işletim sistemi platformunda çalışan bir

uygulama hazırlanmıştır. Araştırma sonuçlarına göre deney grubunun, kontrol

grubuna göre akademik olarak anlamlı derecede başarılı olduğu görülmüştür.

Page 22: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

9

3. MATERYAL VE METOT

Bireyin ihtiyaç duyduğu yerde ve zamanda öğrenme sürecini başlatıp, istediği

zamanda da sürece müdahale edebilmesi önemli bir ayrıcalıktır. Mobil öğrenme

diğer öğrenme aktiviteleri ile karşılaştırıldığında önemli farklılıklar

görülmektedir. Bunlar arasında en belirgin olanı, gerçek anlamda zaman ve yer

açısından kullananlara özgürlük sunmasıdır (Çakır, 2011).

Günümüzde kullanılan cep telefonları, Gprs, 3G, 4.5G teknolojileri sayesinde

insanlar artık istedikleri yer ve zamanda, ihtiyaç duydukları bilgilere cep

telefonları üzerinden internete girerek ulaşmak suretiyle mobil öğrenmeyi

gerçekleştirebilmektedirler.

Mobil öğrenme ortamları bireyin ihtiyaçlarına istediği zamanda yanıt verebilir,

görsel ve işitsel hafızaya aynı anda hitap edebilirler. Mobil cihazlara yüklenen

öğretici oyun ve uygulamalar sayesinde öğrenci konuyu iyice pekiştirmiş olur ve

öğrenme gerçekleşir.

Mobil öğrenmeyi diğer öğrenme yöntemlerinden ayıran özellikler vardır. Mobil

teknolojilerle zenginleştirilen mobil öğrenme, öğrencinin hem fiziksel hem de

dijital dünya ile eş zamanlı olarak etkileşimde bulunmasını sağlar. Bu da sınıf

dışında teknoloji ile desteklenmiş yeni öğrenme metotlarının oluşmasına olanak

sağlar (Facer vd., 2004).

Ülkemizde Mesleki ve Teknik Eğitimde okutulan Sayısal/Dijital Elektronik, Temel

Elektronik ve Ölçme, Elektronik Sistemler gibi derslerde öğrencilerin ders

esnasında lojik devre deneylerinin simülasyonunu yapabilmelerini sağlamak

amacıyla mobil uygulama gerçekleştirilmiştir. Bu mobil uygulama sayesinde,

okullarda uygulanmakta olan FATİH Projesi (Fırsatları Arttırma ve Teknolojiyi

İyileştirme Hareketi Projesi) kapsamında dağıtılan Tablet PC’ler, kendi akıllı

telefonları veya akıllı tahta üzerinde öğrenciler ders sırasında ya da istedikleri

yer ve zamanda lojik devre deneylerinin uygulamalarını yapabileceklerdir.

Page 23: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

10

Mobil öğrenme kapsamında, Android ve Windows tabanlı mobil cihazlar için

geliştirilen simülasyon uygulaması C# ile kodlanarak Unity3D programında

hazırlanmıştır. Bu bölümde Android işletim sisitemi ile uygulamanın geliştirildiği

Unity3D oyun motoru, kullanılan C# programlama dili ve Lojik kapılar hakkında

bilgiler verilmiştir.

3.1. Android İşletim Sistemi

Android, kelime anlamı olarak insan şeklinde robot anlamına gelen İngilizce bir

kelimedir. Terim anlamı olarak ise önceleri sadece mobil cihazlarda kullanılması

için düşünülerek geliştirilen bir mobil işletim sisteminin adıdır (Zeytin, 2013).

Android, Google, Open Handset Alliance Birliği ve özgür yazılım toplulukları

tarafından 2007 yılında geliştirilen Linux çekirdeğini kullanan açık kaynak kodlu

mobil bir işletim sistemidir. Geliştirilen uygulamaların uzantısı “.apk”dır.

Temelde dokunmatik ekranlar için tasarlanan Android, düşük maliyetli ve

kişiselleştirilebilen işletim sistemi arayan yüksek teknolojiye sahip cihazlar

arasında da popüler hale gelmiştir. Başlarda bu sadece tablet ve akıllı telefonları

kapsamış olsa da, günümüzde televizyonlar, arabalar, oyun konsolları, dijital

kameralar ve kol saatleri gibi cihazlarda da kullanılmaya başlanmıştır (Kh’tour,

2015).

Android işletim sisteminin kaynak kodları iki farklı lisans kullanmaktadır.

Kullandığı Linux çekirdeği GPL, diğer dış bileşenler ise Apache Lisansı ile

lisanslanmıştır. Bu değiştirilebilir yapı, yazılımcıları Android'e katkıda

bulunmaları için teşvik ettiğinden sürekli gelişmesini ve yeni özelliklerin

eklenmesini sağlamaktadır (Kh’tour, 2015).

Günümüzde mobil cihazlarda kullanılabilmesi için birçok uygulama

geliştirilmektedir. Bu aşamada uygulamaların geliştirileceği işletim sistemlerinin

özelliklerinin incelenmesi gerekir. İşletim sistemlerinin pazar payı, uygulama

geliştirme dili, XML editörü, ürünlerin pazarlanması, flash gibi özelliklerinin

incelenmesi çok önemlidir (Karaman, 2008).

Page 24: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

11

Çizelge 3.1’de gösterildiği gibi bu özellikler işletim sistemi bazında karşılaştırmalı

olarak verilmiştir. Tüm mobil işletim sistemlerinde yapılan çalışmalar,

geliştirilen uygulamalar, uygulama geliştirme süreçleri ve bunun gibi birçok

özellik karşılaştırıldığında, Android işletim sisteminin ve bu işletim sistemine

uygun olarak mobil uygulama geliştirmenin avantajlı olduğu görülmektedir.

Android, açık kaynak kodlu olması nedeni ile birçok yazılımcı tarafından öncelikli

olarak tercih edilmekte ve esneklik sağlamaktadır. Flash desteği sağlıyor olması

ve yazılım geliştirme araçlarının ücretsiz olması en önemli tercih edilme

sebeplerindendir (Karaman, 2008).

Çizelge 3.1. Mobil işletim sistemleri (Karaman, 2008)

İşletim Sistemi

Firma Açık Kaynak Kodlu Mu?

Flash Desteği

Var Mı?

SDK (Software

Development Kit)

Programlama Dili

iOS Apple Hayır Hayır Ücretli Objective-C Android Google Evet Evet Ücretsiz Java

Blackberry RIM Hayır Evet Ücretsiz C#, Java Windows

Phone Microsoft Hayır Evet Ücretsiz C#

Symbian Nokia Hayır Evet Ücretsiz Java, C++ Bada Samsung Hayır Evet Ücretsiz Java

WebOS HP Hayır (Bazı

kısımlar açık

kaynak kodlu)

Evet Ücretsiz Java

3.1.1. Android işletim sistemi sürümleri

Android ilk çıktığı sürüm olan Android 1.0 Astro ile beraber bu güne kadar sürekli

güncellendi ve son olarak 2017 yılında çıkan Android 8.0 Oreo ile kullanılmaya

başlandı. Çizelge 3.2’de Şubat 2009’da yayınlanan ilk Android sürümünden bu

güne yapılan tüm Android sürümleri ve çıkış tarihleri görülmektedir (MobilShift,

2014). Bunlar içerisinde kullanıcılar tarafından en çok tercih edilen ve kullanılan

Nougat sürümü olmuştur.

Page 25: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

12

Çizelge 3.2. Tüm android sürümleri listesi (MobilShift, 2014)

1.1 Astro 9 Şubat 2009

1.2 Bender 16 Mart 2009

1.5 Cupcake 30 Nisan 2009

1.6 Donut 15 Eylül 2009

2.0

2.1 Eclair

26 Ekim 2009

Ocak 2010

2.2 Froyo 20 Mayıs 2010

2.3 Gingerbread 6 Aralık 2010

3.0

3.1

3.2

Honeycomb

Şubat 2011

Temmuz 2011

Kasım 2011

4.0 Ice Cream Sandwich 19 Ekim 2011

4.1

4.2

4.3

Jelly Bean

9 Temmuz 2012

29 Ekim 2012

24 Temmuz 2013

5.0

5.0.1

5.0.2

5.1.0

5.1.1

Lollipop

12 Kasım 2014

2 Aralık 2014

19 Aralık 2014

10 Mart 2015

6.0 Marshmallow 5 Ekim 2015

7.0 Nougat 22 Ağustos 2016

8.0 Oreo 21 Ağustos 2017

3.1.2. Android mimarisi

Android işletim sistemi Şekil 3.1’de görüldüğü gibi Linux Kernel ve Dalvik sanal

makinesi üstünde çalışır. Bu işletim sisteminin parçaları çekirdek (kernel), sistem

kütüphaneleri, uygulama geliştirme çatıları (frameworks) ve yerleşik temel

uygulamalardan oluşur (Turkcell, 2015).

Page 26: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

13

Şekil 3.1. Android mimarisi (Turkcell, 2015)

3.1.2.1. Temel yapı (Linux çekirdeği)

Android, Linux çekirdeğini (kernel) kullanmaktadır. Linux çekirdeğine Android

için eklenen kod parçacıkları ve kütüphaneler Genel Kamu Lisansı'na sahipken,

diğer bileşenler üretici firmalarına kendi kapalı ROM'larını oluşturmalarına izin

vermekte ama yine özgür olarak Apache Lisansı ile dağıtılmaktadır (Turkcell,

2015).

Linux çekirdeğinin doğrudan kaynak sağladığı yapılar; security (güvenlik),

memory ve process (hafıza ve süreç) kontrolü, dosyalama ve bağlantı için I/O

işlemleri ve cihaz sürücüleridir. Çekirdekte Android için özelleştirilmiş başlıca

alanlar ise güç kontrolü, paylaşılan hafıza, low memory killer ve süreçler arası

iletişim içindir (Turkcell, 2015).

Page 27: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

14

3.1.2.2. Kütüphaneler (Libraries)

Mimarinin kütüphaneler kısmında, C ile yazılmış sistem kütüphaneleri, internet

tarayıcısı (browser) motorlarının çalışması için Webkit, görüntüleme kontrolünü

yapan Surface Manager, grafik işlemleri için OpenGL, ses ve video işlemleri için

gereken Media Framework, veri yapıları kontrolü ve düzenlenmesi için SQLite

gibi yapılar bulunmaktadır (Turkcell, 2015).

3.1.2.3. Android runtime

Android Runtime Linux çekirdeğindeki kütüphanelerin Java ile birleştiği

bölümdür. Temel Java kütüphaneleri ve Dalvik Sanal (virtual) Makinesi olarak iki

önemli bileşeni vardır. Uygulamalar Dalvik Sanal Makinesi tarafından

çalıştırılmaktadır. Temel çalışma mekanizmasını anlamak Android projelerinin

yaşam döngüsünü anlamak açısından önemlidir. Java ile yazılan uygulamalar

alınır, Java kodları derlenerek bytecode dosyalarına çevrilir. Bu dosyalar dex

dosyasına çevrilerek Dalvik Sanal Makinesi'nin çalıştıracağı şekle dönüşür.

Dalvik ortamı düşük işlemci gücü, az RAM ve sınırlı batarya koşullarına göre

tasarlanmıştır (Turkcell, 2015).

3.2. Unity3D

Unity3D, Unity Technologies şirketi tarafından geliştirilmiş ücretli bir oyun

motorudur. Oyun motoru en basit anlamda, oyun yapmak için kullanılan

programlara verilen genel isimdir. İçerisinde programlama dilleri kullanılarak

tanımlanan fonksiyonlar yardımıyla az kod yazarak çok iş yaptırmak

hedeflenmektedir.

Unity3D oyun motoru günümüzde en yaygın kullanılan programlardan birisidir.

PC, MAC, Linux, iOS, Android, BlackBerry, Windows Phone, Windows Store, XBOX

360, Play Station 3, Wii platformlarının yanı sıra internet için Flash Player, Unity

Web Player ve Google Native uygulama olmak suretiyle, pek çok alanda oyun

Page 28: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

15

geliştirmeyi sağlamaktadır. Bu yönüyle Unity3D, programcıların en çok tercih

ettiği oyun motorudur (Satman, 2015).

Unity3D, JavaScript, C# ve Boo dillerinde kodlama imkânı sunar. Bu işlemi de

çekirdek kurulumu ile birlikte gelen ve kurulum sırasında seçimini kullanıcıya

bırakan MonoDevelop kod editörü ile sağlar. Unity3D oyun motorunun sağladığı

çoklu platform özelliği sayesinde masaüstü ve mobil cihazlar için çok sayıda 3D

ve 2D oyun ve uygulama geliştirilebilmektedir. Örneğin bilgisayar ortamı için

geliştirilen ve .exe formatında çıktı veren bir oyun, biraz müdahale edilerek hem

mobil hem de internet tabanlı bir oyun haline getirilebilir. Bu sebeple Unity Asset

Store üzerinden ücretli veya ücretsiz olarak erişilebilen Unity3D ile yapılmış çok

sayıda 3D ve 2D oyun veya uygulama bulunmaktadır (Satman, 2015).

Unity3D oyun motorunun tercih edilme nedenleri aşağıda listelenmektedir:

Bütün yüksek seviyeli oyun motorlarının sahip olması gereken grafik, fizik

motoru, ses sistemi, ana eklentilerin kullanılması, modellerin ithal olması,

tıklamayla texture’lerin yerleştirilmesi gibi büyük potansiyele sahiptir.

JavaScript, C# ve Boo olmak üzere 3 farklı dil yapısını desteklemektedir.

Unity3D ile yapılan uygulamalar Web Player eklentisi sayesinde hiçbir

kuruluma gerek kalmadan web tarayıcı üzerinden çalışabilir.

Unity3D ile yapılan bir uygulama herhangi bir altyapı değişikliği

gerektirmeden farklı platformlar (PC, Mac, Web, iOS, Android, Windows

Phone) için derlenebilir.

Unity3D, son derece pahalı diğer oyun motorlarının (Unreal Engine,

Havok, vb.) sağladığı gelişmiş shader yazılımı, fizik motoru, animasyon

editörü, occlusion culling gibi özellikleri kullanıcılarına oldukça uygun bir

fiyattan sunar.

Unity’nin diğer oyun motorlarından üstün taraflarından biri de yazılım

geliştirme zamanında programcıya, program kodu yazma imkânı

sağlamasıdır. Diğer oyun motorları grafik ile kodu ayırırken Unity’de

grafik ile kod birlikte çalışmaktadır. Bu çalışma mantığı yazılımcılara

esneklik sağlamakta, oyun yapım süresini kasaltmaktadır

(Yechshzhanova, 2014).

Page 29: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

16

Aşağıda Şekil 3.2’de verilen ekran görüntüsünde Unity3D Ana Editör Penceresi

görülmektedir. Editör Penceresi birden fazla bölüme ayrılmıştır ve bunların her

birine Panel denilir.

Şekil 3.2. Unity3D ana editör penceresi

3.2.1. Proje (Project) paneli

Tüm Unity projelerinde Assets klasörü bulunmaktadır. Bu klasörün

içeriğindekiler Şekil 3.3’te görüldüğü üzere Proje panelinde görünür

durumdadırlar. Burada oyunda bulunan her şey depolanır. Örneğin kodlar, 3

boyutlu veya 2 boyutlu modeller, kaplamalar (texture), ses dosyaları (audio file)

ve Prefab’lar gibi. Bu pencereden oyun için scriptler (kodlar), Prefab’lar veya

klasörler oluşturulabilir ve böylece proje dosyaları düzenli bir şekilde tutulabilir.

Prefablar, bir grup GameObject (Oyun Nesnesi) ve Component’in (Bileşen);

sahnede tekrar tekrar kullanılabilmesi için oluşturulan hazır şablonlardır. Bir

Prefab’tan çok sayıda GameObject oluşturulabilir, bu işleme kopyalama

(instancing) denilir (Kula, 2011).

Page 30: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

17

Şekil 3.3. Proje paneli görünümü

3.2.2. Hiyerarşi (Hierarchy) paneli

Hiyerarşi panelinde, o an çalışılan sahnede (scene) yer alan tüm GameObject’ler

gösterilir. Bunlar bir nesnenin doğrudan kendisi olabileceği gibi bir Prefab’ın

kopyası (instance) da olabilir. Nesneleri Hiyerarşi panelinde seçip, seçilen

nesnelere ebeveyn (parent) nesne veya çocuk (child) nesne atayabilirsiniz.

Sahneye nesneler eklenince veya silinince, bu işlem aynı zamanda Hiyerarşi

panelinde de gerçekleşir (Kula, 2011). Şekil 3.4’te Hiyerarşi paneli görülmektedir.

Şekil 3.4. Hiyerarşi paneli görünümü

3.2.3. Araç çubuğu (Toolbar)

Araç çubuğunda beş temel fonksiyona erişim sağlanır. Şekil 3.5’te Araç çubuğu

genel görünümü verilmiştir.

Page 31: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

18

Şekil 3.5. Araç çubuğu görünümü

Şekil 3.6’da sahnede GameObject’ler üzerinde işlemler (hareket ettirme,

döndürme, boyutunu değiştirme gibi işlemler) yapmak için kullanılan araç

çubuğu üzerindeki Hareket (transform) butonları görülmektedir (Kula, 2011).

Şekil 3.6. Hareket butonları

Şekil 3.7’de Sahnedeki görünümü etkileyen Transform gizmo butonları

görülmektedir.

Şekil 3.7. Transform gizmo butonları

Şekil 3.8’de Game (Oyun) panelinde kullanılan Oynatma, Durdurma, Bir Adım

İleri Sarma (Step) butonları verilmiştir.

Şekil 3.8. Oynatma, durdurma, step butonları

Şekil 3.9’da Sahnede gösterilecek GameObject’leri belirlemeyi sağlayan Layers

(Katmanlar) butonu verilmiştir.

Şekil.3.9. Layers butonu

Şekil 3.10’da Sahnedeki pencerelerin düzenini değiştirmeyi sağlayan Layout

(Pencere Düzeni) butonu görülmektedir.

Page 32: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

19

Şekil 3.10. Layout Butonu

3.2.4. Sahne (Scene) paneli

Sahneyi kullanarak kamerayı, karaterleri, yer şekillerini, kısaca tüm

GameObject’leri konumlandırma işlemleri gerçekleştirilebilir. GameObject’leri

bu panel ile konumlandırmak Unity’nin en önemli fonksiyonlarından birisidir. Bu

sayede işlemler oldukça hızlı gerçekleştirilebilir (Kula, 2011). Şekil 3.11’de Sahne

panelinin görünümü verilmiştir.

Şekil 3.11. Sahne paneli

3.2.5. Game (Oyun) paneli

Sahnedeki kameraların gözüyle oyun veya uygulamayı test etmeyi sağlar.

Oynatma butonu çalıştırıldığında bu panelde uygulama test edilebilir. Sahnede en

az bir kamera bulunması gereklidir (Kula, 2011).

3.2.6. Inspector paneli

Unity’de tasarlanan oyunlar ya da uygulamalar, çeşitli 3 boyutlu veya 2 boyutlu

şekillere (mesh), scriptlere (kod), seslere veya ışıklar (light) gibi değişik grafiksel

Page 33: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

20

elementlere sahip olan birçok GameObject’ten oluşabilir. Inspector paneli, seçili

olan GameObject’in tüm Component’lerini (parça) ve bu parçaların özelliklerini

gösterir (Kula, 2011). Şekil 3.12’de Kameranın özelliklerini gösteren Inspector

paneli görüntüsü verilmiştir.

Şekil 3.12. Inspector paneli

3.3. C# Programlama Dili

Unity3D programı JavaScript, C# ve Boo olmak üzere 3 tane programlama dilini

desteklemektedir. Bu 3 dilde de kod yapısı nesne yönelimli programlama

şeklindedir. Unity3D oyun motorunda C# dilinin kod yapısı Şekil 3.13’de

gösterilmektedir (Satman, 2015).

Page 34: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

21

Şekil 3.13. Unity3D programında C# kod yapısı

3.4. Uygulama İçin Lojik Kapıların Tasarımı

Gerçekleştirilen mobil programda kullanılan lojik kapılar ve diğer lojik giriş-çıkış

birimleri Adobe Photoshop ve Fireworks programlarında düzenlenmiştir.

Simülasyon programı ise Unity3D Oyun Motorunda C# programlama dili

kullanılarak hazırlanmıştır.

3.4.1. Lojik kapılar

Lojik devrelerin en temel elemanı lojik kapılardır. Lojik değişkenlerin değerlerini

(gerilimlerini) giriş olarak kullanan, girişten aldığı değerler üzerinde işlemler

yaparak lojik eşitliğin değerine uygun değerler (gerilim) üreten elektronik devre,

‘lojik kapı’ olarak adlandırılır. Kapılar, basit bir sayısal elektronik devreden

bilgisayara kadar cihazların temel yapı taşıdır. Yaygın olarak kullanılan kapılar:

VEYA (OR), VE (AND), VEYADEĞİL (NOR), VEDEĞİL (NAND), DEĞİL (NOT)

kapılarıdır ve bu kapılar ‘temel lojik kapılar’ olarak isimlendirilirler. Lojik kapılar

kullanılarak oluşturulan devreler de, ‘lojik devreler’ olarak adlandırılırlar (Ekiz,

2005).

Page 35: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

22

3.4.1.1. Ve (And) kapısı

VE kapısının bir çıkışı, iki veya daha fazla da girişi bulunmaktadır. Geliştirilen

uygulamada iki girişli VE kapısı kullanılmıştır. ‘VE’ kapısının gerçekleştirdiği

işlem çarpma işlemidir ve çıkış Q=A*B şeklinde tanımlanır. Şekil 3.14’de sembolü

verilen VE kapısının, Çizelge 3.3’de de doğruluk tablosu verilmiştir.

Şekil 3.14. Ve kapısı sembolü

Çizelge 3.3. Ve kapısı doğruluk tablosu

A B Q (Çıkış) 0 0 0 0 1 0 1 0 0 1 1 1

3.4.1.2. Veya (Or) kapısı

VEYA kapısının bir çıkışı, iki veya daha fazla da girişi bulunmaktadır. Geliştirilen

uygulamada iki girişli VEYA kapısı kullanılmıştır. ‘VEYA’ kapısının

gerçekleştirdiği işlem toplama işlemidir ve çıkış Q=A+B şeklinde tanımlanır. Şekil

3.15’de sembolü verilen VEYA kapısının, Çizelge 3.4’te de doğruluk tablosu

verilmiştir.

Şekil 3.15. Veya kapısı sembolü

Page 36: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

23

Çizelge 3.4. Veya kapısı doğruluk tablosu

A B Q 0 0 0 0 1 1 1 0 1 1 1 1

3.4.1.3. Vedeğil (Nand) kapısı

VEDEĞİL kapısının bir çıkışı, iki veya daha fazla da girişi bulunmaktadır.

Geliştirilen uygulamada iki girişli VEDEĞİL kapısı kullanılmıştır. ‘VE’ ile ‘DEĞİL’

kapılarının birleşmesinden oluşan VEDEĞİL kapısının gerçekleştirdiği işlem VE

kapısının tam tersi olarak belirtilebilir. Çıkışı, Q = A.B şeklindedir ve ‘A ve B’nin

değili’ şeklinde okunur. Şekil 3.16’da sembolü verilen VEDEĞİL kapısının, Çizelge

3.5’te de doğruluk tablosu verilmiştir.

Şekil 3.16. Vedeğil kapısı sembolü

Çizelge 3.5. Vedeğil kapısı doğruluk tablosu

A B Q 0 0 1 0 1 1 1 0 1 1 1 0

3.4.1.4. Veyadeğil (Nor) kapısı

VEYADEĞİL kapısının bir çıkışı, iki veya daha fazla da girişi bulunmaktadır.

Geliştirilen uygulamada iki girişli VEYADEĞİL kapısı kullanılmıştır. ‘VEYA’ ile

‘DEĞİL’ kapılarının birleşmesinden oluşan VEYADEĞİL kapısının gerçekleştirdiği

işlem VEYA kapısının tam tersi olarak yazılabilir. Çıkışı, Q = A+B şeklindedir ve ‘A

Page 37: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

24

veya B’nin değili’ şeklinde okunur. Şekil 3.17’de sembolü verilen VEYADEĞİL

kapısının, Çizelge 3.6’da doğruluk tablosu verilmiştir.

Şekil 3.17. Veyadeğil kapısı sembolü

Çizelge 3.6. Veyadeğil kapısı doğruluk tablosu

A B Q 0 0 1 0 1 0 1 0 0 1 1 0

3.4.1.5. Değil (Not) kapısı

DEĞİL kapısının bir girişi, bir de çıkışı bulunmaktadır. Çıkışı, Q = A şeklindedir ve

‘A’nın değili veya tersi’ şeklinde okunur. Şekil 3.18’de DEĞİL kapısının sembolü,

Çizelge 3.7’de ise doğruluk tablosu verilmiştir.

Şekil 3.18. Değil kapısı sembolü

Çizelge 3.7. Değil kapısı doğruluk tablosu

A Q

0 1

1 0

Page 38: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

25

3.4.1.6. Tampon (Buffer) kapısı

BUFFER kapısının bir çıkışı, bir de girişi bulunmaktadır. Çıkışı, Q = A şeklindedir.

Çizelge 3.8’de verilen doğruluk tablosunda görüldüğü gibi giriş değişkeni ‘1’ veya

‘0’ değerlerinden birini alabilir ve çıkış her zaman girişle aynı değeri alır. Şekil

3.19’da BUFFER kapısının sembolü görülmektedir.

Şekil 3.19. Tampon kapısı sembolü

Çizelge 3.8. Tampon kapısı doğruluk tablosu

A Q 0 0

1 1

3.4.1.7. Özelveya (Xor) kapısı

Geliştirilen uygulamada, ÖZELVEYA kapısının Şekil 3.20’de verilen sembolünde

görüldüğü üzere bir çıkışı, iki adet girişi bulunmaktadır. ÖZELVEYA kapısının

çıkış işlemi, Q=A.B'+A'.B veya Q=A⨁B şeklinde yazılır. Çizelge 3.9’da verilen

doğruluk tablosunda görüldüğü gibi giriş değişkenleri birbirinin aynısı

olduğunda çıkış ‘0’, giriş değişkenleri birbirinden farklı olduğunda ise çıkış ‘1’

değerini alır.

Şekil 3.20. Özelveya kapısı sembolü

Page 39: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

26

Çizelge 3.9. Özelveya kapısı doğruluk tablosu

A B Q

0 0 0

0 1 1

1 0 1

1 1 0

3.4.1.8. Özelveyadeğil (Xnor) kapısı

Geliştirilen uygulamada, ÖZELVEYADEĞİL kapısının Şekil 3.21’de verilen

sembolünde görüldüğü gibi iki giriş ve bir çıkışa sahiptir. ÖZELVEYADEĞİL

kapısının çıkış işlemi, Q=A.B+ A'.B' veya Q=A⨂B şeklinde yazılır. Çizelge 3.10’da

verilen doğruluk tablosunda görüldüğü gibi giriş değişkenlerinin değerleri aynı

ise çıkış ‘1’, giriş değişkenlerinin değerleri birbirinden farklı olduğunda ise çıkış

‘0’ değerini alır.

Şekil 3.21. Özelveyadeğil kapısı sembolü

Çizelge 3.10. Özelveyadeğil kapısı doğruluk tablosu

A B Q

0 0 1

0 1 0

1 0 0

1 1 1

Page 40: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

27

4. ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE

DENEYLERİNİN SİMÜLASYONU

Çalışmada, Android ve Windows tabanlı mobil cihazlarda lojik devre

deneylerinin simülasyonlarının gerçekleştirilebileceği bir mobil uygulama

geliştirilmiştir.

Unity3D Oyun Motorunda Android’e uygulama geliştirmek için, bilgisayara ilk

olarak kendi sitesinden indirilen Java JDK (Java Development Kit) kurulmalıdır.

Sonrasında yine kendi sitesinden indirilen Android SDK Manager ile Android SDK

(Software Development Kit) kurulur. Android SDK kurulurken Android 2.2’den

büyük en az bir sürüm seçilmeli ve gereken diğer seçimler yapılarak kurulum

yapılmalıdır. Daha sonra Unity3D programı da kendi sitesinden son sürümünün

ücretsiz olanı indirilerek kurulumu yapılır. Unity3D kurulumu yapılırken C#

kodlarının yazılacağı Visual Studio 2015 programı da Unity ile birlikte

kurulmaktadır. Ayrıca Android için yapılan uygulamaların bilgisayarda

çalıştırılmasına olanak sağlayan BlueStacks programı da indirilerek kurulur.

Uygulamanın çalışmasını Oynatma butonuna tıklayarak Unity Oyun Panelinde

görebildiğimiz gibi test etmek için ayrıca BlueStacks programı da kullanılmıştır.

4.1. Gerçekleştirilen Simülasyon Yazılımı

Meslek Lisesi öğrencilerinin derslerinde öğrendikleri lojik kapılar veya lojik

devreleri, bilgisayar veya gerçek bir elektronik devre hazırlamaya gerek

kalmadan akıllı telefon veya tabletlerini kullanarak anında sonuçları

görebilmeleri ve konuyu pekiştirebilmelerini sağlamak amacıyla Unity3D

programında, 2D bir mobil uygulama geliştirilmiştir.

Mobil uygulama, Giriş Ekranı ve Simülasyon Ekranı olmak üzere iki bölümden

oluşmaktadır. Giriş ekranında Yeni, Yardım ve Çıkış Butonları bulunmaktadır.

Şekil 4.1’de uygulamanın giriş ekranı verilmiştir.

Page 41: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

28

Şekil 4.1. Giriş ekranı görünümü

Ekrandaki Çıkış butonu programdan tamamen çıkmak için kullanılmaktadır. Yeni

butonuna dokunulduğunda, yeni bir devre uygulaması başlatmak için

Simülasyon ekranı açılır. Şekil 4.2’de devre uygulamalarının gerçekleştirildiği

Simülasyon ekranı görülmektedir. Programın çalışması sırasında kullanımda

kolaylık olması açısından küçük bir kodla ekranın yatay olarak kalması

sağlanmıştır.

Şekil 4.2. Simülasyon ekranı görünümü

Page 42: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

29

Yardım butonuna dokunulduğunda programın çalışması hakkında bilgi veren

Yardım ekranı açılır. Şekil 4.3’te görülen Yardım Ekranında, devre elemanlarının

sahneye nasıl ekleneceği veya silineceği, devrelerin nasıl oluşturulacağı hakkında

bilgiler verilmiştir. Ekranın altında bulunan buton ise Giriş Ekranına geri

dönmeyi sağlamaktadır.

Şekil 4.3. Yardım ekranı görünümü

4.1.1. Simülasyon ekranı

Simülasyon Ekranı, uygulamaların gerçekleştirileceği sahnenin ve gerekli devre

elemanlarının seçileceği menünün bulunduğu ekrandır. Menüdeki butonlara

dokunarak istenilen devre elemanları açılan listeden seçilerek sahneye

eklenebilir. Menüdeki butonlar ile sırasıyla Lojik Kapı Ekle, Lojik Giriş Ekle, Çıkış

(lamba veya led) Ekle, SİL, Ana Menüye (Giriş Ekranı) Dön ve ÇIKIŞ işlemleri

gerçekleştirilebilir. Şekil 4.4’te menünün görünümü verilmiştir.

Şekil 4.4. Simülasyon ekranı menü görünümü

Page 43: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

30

4.1.1.1. Lojik kapı ekle butonu

Menüdeki ilk seçenek olan Lojik Kapı Ekle Butonuna dokunulduğunda sahneye

eklemek için seçilebilecek kapıların listesi açılmaktadır. Listeden istenilen kapıya

dokunulduğunda sahnenin ortasına kapı eklenecektir. Bu şekilde devre

oluştururken kullanılacak tüm kapılar listeden sırayla dokunularak sahneye

eklenir. Şekil 4.5’te butona dokunulduğunda açılan liste ve sahneye eklenebilen

kapılar görülmektedir.

Şekil 4.5. Lojik kapı ekle butonu

Açılan listeden ‘AND KAPISI’ seçeneğine dokunulduğunda Şekil 4.6’da görüldüğü

gbi sahneye AND Kapısı eklenecektir. Kapı sahneye eklendikten sonra sürükle

bırak yöntemiyle dokunarak sahnede istenilen konuma sürüklenebilir. Devreyi

oluştururken kullanılacak tüm kapıları eklemek için aynı işlemler tekrar edilir.

Page 44: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

31

Şekil 4.6. Sahneye and kapısını ekleme

4.1.1.2. Lojik giriş (Yük) ekle butonu Menüdeki ikinci seçenek olan Lojik Giriş Ekle Butonuna dokunulduğunda

sahneye eklemek için seçilebilecek girişlerin listesi açılmaktadır. Lojik giriş

olarak programda Lojik 1, Lojik 0 ve Switch olmak üzere üç seçenek

kullanılmıştır. Listeden istenilen girişe dokunulduğunda sahneye eklenir. Şekil

4.7’de butona dokunulduğunda açılan liste görülmektedir.

Şekil 4.7. Lojik giriş ekle butonu

Page 45: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

32

4.1.1.3. Çıkış (lamba veya led) ekle butonu Menüdeki üçüncü seçenek olan Çıkış Ekle Butonuna dokunulduğunda sahneye

eklenebilecek çıkışların (lamba ve led) listesi açılmaktadır. Devrenin girişlerine

verilen değerlere göre çıkışlarına gelen Lojik 1 veya 0’a göre lamba veya ledin

yanıp sönmesi sağlanarak devrenin çalışması görülmektedir. Listeden kullanmak

istenilen çıkış birimine dokunulduğunda sahneye eklenir. Şekil 4.8’de butona

dokunulduğunda açılan liste görülmektedir.

Şekil 4.8. Çıkış ekle butonu

4.1.1.4. Sil butonu

Menüdeki Sil butonu devre elemanları silinmek istenildiği zaman kullanılır. İlk

olarak Sil butonuna dokunulur. Sil butonunun ismi ‘SİL AKTİF’ olarak değiştiği

zaman sahnede silinmek istenen devre elemanına bir kez dokunulması ile eleman

sahneden silinir. Başka silinmek istenen elemanlar varsa hespi aynı yöntemle

silinir. Silme işlemi bitip tekrar devre kurmaya devam edebilmek için menüden

tekrar ‘SİL AKTİF’ butonuna dokunularak konumunun ‘SİL’ olarak değişmesi

sağlanır. Bu şekilde tekrar düzenleme işlemine devam edilebilir. Eğer butonun

konumu değiştirilmez ise silme işlemine devam eder ve dokunulan her eleman

Page 46: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

33

silinir. Şekil 4.9’da Sil butonunun ilk pasif durumu ve aktif olduğu durumu birlikte

verilmiştir.

Şekil 4.9. Sil butonu görünümü

4.1.1.5. Ana menüye git butonu

Menüden Şekil 4.10’da verilen Ana menüye git butonuna dokunulduğunda

sahnenin üzerinde kullanıcıya Giriş ekranı olan Ana menüye dönmek isteyip

istemediğini soran bir pencere gelir. Şekil 4.11’de görüldüğü gibi açılan

pencerede ‘Evet’ butonuna dokunulursa Giriş ekranına gidilir, ‘Hayır’ butonuna

dokunulursa devrenin yapıldığı sahneye geri dönülür.

Şekil 4.10. Ana menüye git butonu

Page 47: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

34

Şekil 4.11. Ana menüye git butonuna dokununca açılan pencere görünümü

4.1.1.6. Çıkış butonu

Menüden Şekil 4.12’de verilen Çıkış butonuna dokunulduğunda sahnenin

üzerinde kullanıcıya programdan çıkmak isteyip istemediğini soran bir pencere

gelir. Şekil 4.13’de görüldüğü gibi açılan pencerede ‘Evet’ butonuna dokunulursa

program kapanır, ‘Hayır’ butonuna dokunulursa devrenin yapıldığı sahneye geri

dönülür.

Şekil 4.12. Çıkış butonu

Page 48: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

35

Şekil 4.13. Çıkış butonuna dokununca açılan pencere görünümü

4.1.1.7. Temizle butonu

Sahnenin sağ alt köşesinde bulunan Şekil 4.14’te verilen Temizle butonu sahneyi

temizlemek için kullanılır. Sil butonu istenilen elemanları dokunarak silmek için

kullanılırken, temizle butonu ise sahneyi tamamen temizleyip yeni devre kurmak

için kullanılabilir.

Şekil 4.14. Temizle butonu

Page 49: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

36

4.2. Simülasyon Yazılımının Akış Diyagramı

Devreyi kurabilmek için gereken devre elemanları menülerden seçilerek sahneye

eklenir. Sahnede her eleman sürükle bırak yöntemiyle yerlerine taşınır. Yanlış ya

da fazla eklenen devre elemanı varsa ‘Sil’ butonu kullanılarak sahneden silinir.

Son olarak devre elemanlarının pinleri arasında bağlantıları yapılır. Her bir

bağlantı tek tek yapılmalıdır. Bağlantıları yapabilmek için yüklerin gidiş yönü

dikkate alınarak ilk olarak çıkış pinine sonra onun bağlanacağı kapının giriş

pinine veya ledin pinine dokunulmalıdır. Bu sayede yüklerin devre elemanları

arasında bağlantı kurularak aktarılması sağlanır. Kapıların üzerinde kendi

görevlerini yapmalarını sağlayan scriptler (kodlar) Component (bileşen) olarak

eklenmiştir. Bu kodlarda kapıların girişlerine gelen yükler alınarak kapının

işlevine göre işleme girmiş ve sonuç çıkış pinine aktarılmıştır. Bağlantı kurulduğu

zaman sonuç değerindeki yük diğer kapı ya da lede aktarılmış olur.

Yanlış pinler bağlandığında ya da bağlantı değiştirilmek istendiğinde öncelikle

bağlantının iptal edilmesi gerekir. Bunun için iptal edilmek istenen bağlantının

ilk olarak çıkış pinine sonra diğer bağlantı kurulduğu yerdeki pinine dokonulması

gerekir. Yani pinleri bağlarken dikkat edilen yüklerin gidiş yönü göz önüne

alınarak bağlantı nasıl kurulduysa aynı şekilde ilk olarak birinci pine ardından

ikinci pine dokunularak aradaki bağ kaldırılmış olur. Programın çalışmasını

gösteren akış şeması Şekil 4.15’te görülmektedir.

Page 50: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

37

Şekil 4.15. Programın çalışmasını gösteren akış şeması

Uygulaması Yapılacak Lojik Devre Elemanlarını Ekle

Pin bağlantılarını yap

Uygulamanın çalıştırılması için

gerekli Yükü (Lojik Giriş) ekle

Yanlış Devre Elemanına dokun sil

Pinlere dokunarak yanlış bağlantıyı sil

Yanlış yüke dokun sil

Lojik Devre Elemanları Doğru

Eklendi mi?

Pin bağlantıları

doğru yapıldı mı?

Doğru yük eklendi mi?

H

H

H

E

Başla

E

E

Uygulama sonuçlarının sağlamasını yap

Menüden Sil Butonunu aktif yap

Menüden Sil Butonunu pasif

yap

Bitir

Menüden Sil Butonunu aktif yap

Menüden Sil Butonunu pasif

yap

Page 51: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

38

4.3. Yakınlaştırma ve Sahnede Gezinme İşlemleri

Gerçekleştirilen mobil uygulama ile devre kurarken, sahne üzerinde

yakınlaştırma, uzaklaştırma (zoom) veya yukarı, aşağı, sağa ve sola gezinme

(panning) işlemleri yapılabilmektedir. Yakınlaştırma veya uzaklaştırma işlemleri

yapılıp devre tamamlandıktan sonra uygulamanın normal görünümüne

döndürmek için de sahnede boş bir alanda hızlıca iki kez dokunmak yeterlidir.

4.4. Geliştirilen Mobil Yazılım ile Yapılan Simülasyon Örnekleri

Yazılım tamamlandıktan sonra çeşitli uygulama örnekleri gerçekleştirilmiştir.

Yapılan uygulamalar; Ve kapısı uygulaması, akıllı tahta üzerinde Veya kapısı

uygulaması, Yarım toplayıcı lojik devresi, Yarım çıkarıcı lojik devresi ve verilen

bir fonksiyonun lojik kapılarla gerçekleştirilmesidir.

4.4.1. Ve (And) kapısı uygulaması

Ve kapısına girişlerin sırayla uygulandığı, girişlere göre de çıkışların alındığı

simülasyonun ekran görüntüleri Şekil 4.16’da verilmiştir. Giriş yüklerini

uygulamak için Switch (Anahtar) kullanılmıştır.

Şekil 4.16. Ve (And) kapısı uygulaması ekran görüntüleri

Page 52: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

39

4.4.2. Veya (Or) kapısının akıllı tahtada uygulanması

Veya kapısına girişlerin sırayla uygulandığı, girişlere göre de çıkışların alındığı

simülasyonun ekran görüntüleri Şekil 4.17’de verilmiştir. Mobil uygulama akıllı

tahta üzerinde çalıştırılarak Veya kapısının simülasyonu yapılmıştır.

Şekil 4.17. Veya (Or) kapısı akıllı tahta ekran görüntüleri

4.4.3. Yarım toplayıcı lojik devresi uygulaması

Girişine uygulanan iki biti toplayarak sonucu toplam (sum) ve elde (carry)

şeklinde iki çıkış olarak veren toplayıcı devresi, ‘yarım toplayıcı’ olarak

adlandırılır. Şekil 4.18’te Yarım toplayıcı sembolü ve Çizelge 4.1’de Yarım

toplayıcı devresi doğruluk tablosu verilmiştir (Ekiz, 2005).

Page 53: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

40

Şekil 4.18. Yarım toplayıcı sembolü

Çizelge 4.1. Yarım toplayıcı devresi doğruluk tablosu

A B S Co

0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1

Doğruluk tablosunda verilen girişlerin sırayla uygulandığı simülasyonun ekran

görüntüleri Şekil 4.19’da verilmiştir. Anahtarın üzerinde dokunulduğunda

otomatik olarak konumu değişmektedir. Anahtarın üzerinde ışık yandığında

Lojik 1 yükünü, ışık yanmadığı konumunda ise Lojik 0 yükünü devrenin girişine

vermektedir. Yükler bağlantılar üzerinden kapıların girişlerindeki pinlere,

böylece de kapılara aktarılmış olur.

Şekil 4.19. Yarım toplayıcı devresi ekran görüntüleri

Page 54: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

41

4.4.4. Yarım çıkarıcı lojik devresi uygulaması

İki bit üzerinde çıkarma işlemini yapan çıkarıcı devresinde, iki giriş ve iki çıkış

bulunmaktadır (Şekil 4.20). Çıkışlardan birisi sayının farkını (difference-D),

diğeri borç bitini (borrow-B) gösterir. Çizelge 4.2’de Yarım çıkarıcı devresi

doğruluk tablosu verilmiştir (Ekiz, 2005).

Şekil 4.20. Yarım çıkarıcı sembolü

Çizelge 4.2. Yarım çıkarıcı devresi doğruluk tablosu

A B Fark (A-B) Borç (B)

0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0

Doğruluk tablosunda verilen girişlerin sırayla uygulandığı simülasyonun ekran

görüntüleri Şekil 4.21’de verilmiştir. Şekil 4.22’de ise ÖzelVeya kapısı

kullanılmadan bu kapıyı oluşturan kapılar kullanılarak daha ayrıntılı devre

şeması ve ekran görüntüleri verilmiştir.

Page 55: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

42

Şekil 4.21. Yarım çıkarıcı devresi ekran görüntüleri

Şekil 4.22. Yarım çıkarıcı devresi ayrıntılı şeması ve uygulama görüntüleri

4.4.5. F=AB+C(A+B) Lojik ifadesinin lojik kapılar ile gerçekleştirilmesi

Verilen bir lojik ifadenin lojik kapılar ile tasarımını yapmadan önce

sadeleştirilmesi gerekiyorsa sadeleştirilir ve son haliyle doğruluk tablosu

oluşturulur. Devre simülasyon ortamında hazırlandıktan sonra Çizelge 4.3’teki

Page 56: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

43

doğruluk tablosundaki giriş değerleri sırayla girişlere uygulanarak çıkıştaki ledin

durumuna göre devrenin çalışması görülmüş olur. Devrenin girişlerindeki yük

değerlerinin Lojik 1, 0, 1 olduğu durumda çıkıştaki ledin yandığı ekran görünümü

Şekil 4.23’te verilmiştir.

Çizelge 4.3. Verilen lojik ifadenin doğruluk tablosu

A B C ÇIKIŞ (Q)

0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1

Şekil 4.23. F=AB+C(A+B) Lojik ifadesinin lojik kapılar ile tasarımı

4.5. Simülasyon Uygulamasının Apk Dosyasının Oluşturulması

Geliştirilen uygulamanın Android platformunda çalışabilmesi için Build edilerek

.apk uzantılı dosyasının oluşturulması gerekmektedir. Bunun için ilk olarak Unity

Editör üst menüsünde bulunan File menüsünden Build Settings seçeneği seçilir

(Şekil 4.24).

Page 57: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

44

Şekil 4.24. File / Build settings ekran görünümü

Açılan Build Settings Penceresinde üst kısımda projede kulllanılan tüm sahneler

listelenmektedir. Platform kısmında Android seçeneği seçilir ve ardından

pencerenin alt kısmında yer alan Player Settings butonuna tıklanır (Şekil 4.25).

Şekil 4.25. Build settings penceresi

Page 58: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

45

Player Settings ekranı, Unity Editör’ün sağ tarafında Inspector panelinde açılır

(Şekil 4.26). Hazırlanan uygulama ile ilgili temel yayınlama düzenlemeleri bu

ekranda gerçekleştirilir.

Şekil 4.26. Player settings ekranı

Player Settings ekranında öncelikle Company Name ( Geliştirici İsmi), Product

Name (Uygulama İsmi) ve Default Icon (Uygulama Logosu) bilgilerinin

doldurulması gerekmektedir. Uygulamanın logosu Photoshop programında

hazırlandıktan sonra Project Panelinde Assets klasörüne eklenmiştir. Bu logo,

Default Icon seçeneğinin karşısında bulunan Select butonuna tıklayıp açılan

pencereden seçilerek projeye eklenmiş olur.

Resolution and Presentation sekmesinde ekran görüntüsü ile ilgili ayarlar yapılır.

Uygulama dikey veye yatay pozisyonlardan herhangi biri veya her biri olabilir.

Icon sekmesi, uygulama için oluşturulan logoları farkı boyutlarda eklemeyi

sağlar. Splash Image sekmesi, yalnızca Unity Pro lisansına sahip kullanıcılar için

geçerli olan açılış ekranını temsil eder. Uygulama açılırken kullanıcıyı karşılayan

5 saniyelik görseli ayarlamak için kullanılır. Lisanslı olmayan tüm kullanımlarda

Unity3D oyun motorunun resmi logosu görülmektedir. Other Settings

sekmesinde uygulamanın Google Play tarafından tanımlanacağı sürüm bilgisi,

ürün kimliği, ilgili minimum Android sürümü gibi bilgiler ayarlanır. Son olarak

Page 59: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

46

Publishing Settings sekmesinde, geliştiriciyle uygulama arasındaki bağı

kanıtlayan bir anahtar dosya tanımlanır (Satman, 2015).

Gerekli bilgiler Inspector panelinde girildikten sonra uygulama Build (Derleme)

işlemi için hazır hale gelmiştir. File menüsünden Build Settings yolunu izleyerek

açılan Build Settings penceresinde Build butonuna basarak .apk uzantılı Android

dosyası uygulamanın bulunduğu klasörün içerisine oluşturulur. Oluşan .apk

uzantılı dosya herhangi bir android tabanlı mobil cihaza aktarılıp kurularak

çalıştırılabilir. Uygulamanın apk dosyası mobil cihaza kurulduktan sonraki

logosunun görünümü Şekil 4.27’de verilmiştir.

Şekil 4.27. Geliştirilen uygulamanın logosunun mobil cihazda görünümü

4.6. Simülasyon Uygulamasının Exe Dosyasının Oluşturulması

Geliştirilen uygulamanın Windows platformundaki mobil cihazlarda

çalışabilmesi için Build edilerek .exe uzantılı dosyasının oluşturulması

gerekmektedir. Bunun için ilk olarak .apk dosyasını oluşturmadaki gibi Unity

Editör üst menüsünde bulunan File menüsünden Build Settings seçeneği seçilir

(Şekil 4.28).

Page 60: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

47

Şekil 4.28. File / Build settings ekran görünümü

Açılan Build Settings Penceresinde alt bölümdeki Platform kısmında PC, Mac &

Linux Standalone seçeneği seçilmelidir. Yine aynı pencerede sağ bölümde Target

Platform olarak Windows ve Architecture kısmı x86_64 seçilerek Build butonuna

tıklanır (Şekil 4.29). Böylece uygulamanın Windows platformunda çalışması için

.exe dosyası ve gerekli dosyalar oluşturulur. Akıllı tahtada veya diğer mobil

cihazlarda çalıştırmak için Şekil 4.30’da .exe dosyası ile birlikte verilen klasöre de

ihtiyaç vardır. Buradaki .exe dosyası çalıştırılarak uygulama başlatılır.

Page 61: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

48

Şekil 4.29. Build settings penceresi

Şekil 4.30. Windows platformu için gerekli dosyalar

Uygulamanın akıllı tahtada çalıştırılması ile elde edilen ekran görüntüleri Şekil

4.31, Şekil 4.32 ve Şekil 4.33’te verilmiştir.

Page 62: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

49

Şekil 4.31. Uygulamanın akıllı tahta üzerinde ekran görüntüsü – 1

Şekil 4.32. Uygulamanın akıllı tahta üzerinde ekran görüntüsü – 2

Page 63: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

50

Şekil 4.33. Uygulamanın akıllı tahta üzerinde ekran görüntüsü – 3

4.7. Geliştirilen Mobil Uygulamanın Eğitimde Kullanılması

Bu eğitim aracı ile lojik kapılar ve lojik devrelerin çalışması simülasyon ile

kavratılmaya çalışılmıştır. Çalışma 2017-2018 Eğitim Öğretim yılı Mart ayında,

Milli Eğitim Bakanlığı’na bağlı Isparta Şehit Komiser Muhsin Kiremitçi İmam

Hatip Ortaokulu’nun 6. Sınıfında okuyan ve konuyu hiç bilmeyen 12’şer kişilik

birbirine denk olduğu varsayılan iki grup öğrencinin katılımıyla yapılmıştır. Sınıf

iki gruba ayrılmıştır. Birinci gruba simülasyon uygulaması yapılmadan tahtada

temel lojik kapılar anlatılarak eğitim verilirken, ikinci gruba konu anlatımının

yanında geliştirilen mobil uygulama ile simülasyonları gösterilerek destek

verilmiştir. Eğitim verilirken dokunmatik ekranlı bir diz üstü bilgisayarda

program çalıştırılmış ve projeksiyona yansıtılarak ders işlenmiştir. Aynı zamanda

bir tablet pc de öğrenciler arasında dolaştırılarak onların da tablet üzerinde

simülasyonu yapabilmeleri sağlanmıştır. Konu anlatımlarından sonra iki gruba

da bir yazılı sınav yapılmıştır. Sınavda öğrencilerden lojik kapıları kullanarak bir

lojik devre çizmeleri istenmiştir. Birinci gruptaki öğrencilerin %50’si devreyi tam

yaparken, %33’ü yarısını yapabilmiş, %16’sı hiç yapamamıştır. İkinci gruptaki

Page 64: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

51

öğrencilerin ise %83’ü devreyi tam yaparken, %16’sı yarısını yapabilmiştir.

Öğrencilere sorulan değerlendirme sorusu Şekil 4.34’te verilmiştir.

Şekil 4.34. Değerlendirme sorusu

Sonuçlar değerlendirildiğinde mobil uygulama ile desteklenen öğrencilerin diğer

gruba göre daha başarılı olduğu, uygulamanın kullanışlı ve kolaylaştırıcı olduğu

görülmüştür. Dersin işlenişinde de ikinci gruptaki dersin daha verimli geçtiği,

öğrencilerin simülasyonlarını görerek ve uygulayarak konuyu daha iyi

kavradıkları görülmüştür.

Page 65: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

52

5. SONUÇ VE ÖNERİLER

Son dönemlerde teknolojide yaşanan gelişmeler, bireye eğitim alması açısından

pek çok yeni ortam sunmuştur. Bu ortamlardan biri de yer ve zamandan bağımsız

olarak mobil cihazlar ve tablet bilgisayarlarla sağlanan ortamlardır. Bu

teknolojiler gün geçtikçe daha vazgeçilmez bir nitelik kazanmaktadırlar. Özellikle

son yıllarda yaygınlaşan mobil simülasyon uygulamalarından derslerde

faydalanmak suretiyle soyut kavramlar somutlaştırılarak öğrencilerin derslere

karşı ilgisi ve başarısı arttırılabilir. Simülasyon uygulamalarında kullanılan

değerler istenildiği gibi değiştirilip sonuçlar hemen görülebildiği için daha çok

tercih edilmektedir.

Bu tez çalışmasında, ülkemizde Mesleki ve Teknik Eğitimde okutulan

Sayısal/Dijital Elektronik, Temel Elektronik ve Ölçme, Elektronik Sistemler gibi

derslerde öğrencilerin ders esnasında lojik kapılar veya lojik kapılarla

gerçekleştirilen lojik devre deneylerinin simülasyonunu kolayca yapabilmelerini

sağlamak amacıyla Android ve Windows tabanlı mobil cihazlarda çalışan bir

uygulama geliştirilmiştir. Bu derslerde eğitimi her platformda

gerçekleştirebilmek adına Unity3D editöründe C# dili kullanılarak iki platformda

da çalışan 2D bir mobil uygulama geliştirilmiştir.

Geliştirilen mobil uygulamada, devre için gerekli giriş anahtarları, kapılar ve

çıkışlar menüden seçilip sahneye eklenir. Devre elemanları sürükle-bırak

yöntemiyle sahnede uygun yere taşınır. Devre elemanları arasında pinlerine

dokunarak gerekli bağlantılar yapıldıktan sonra, giriş anahtarlarının konumunu

değiştirerek, doğruluk tablosuna göre çıkışlar gözlemlenir. Bu şekilde, istenen

lojik devrelerin simülasyonu kolayca gerçekleştirilebilir.

Mobil uygulamanın kullanılabilirliğinin değerlendirilebilmesi için 2017-2018

Eğitim Öğretim yılı Mart ayında, Milli Eğitim Bakanlığı’na bağlı Isparta Şehit

Komiser Muhsin Kiremitçi İmam Hatip Ortaokulu’nun 6. Sınıfında okuyan ve

konuyu hiç bilmeyen 12’şer kişilik birbirine denk olduğu varsayılan iki grup

öğrenciye birer ders saati eğitim verilmiştir. Sınıf iki gruba ayrılmıştır. Birinci

Page 66: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

53

gruba simülasyon uygulaması yapılmadan tahtada temel lojik kapılar anlatılarak

eğitim verilirken, ikinci gruba konu anlatımının yanında geliştirilen mobil

uygulama ile simülasyonları gösterilerek destek verilmiştir. Derslerden sonra iki

gruba da bir yazılı sınav yapılmıştır.

Sonuçlar değerlendirildiğinde mobil uygulama ile desteklenen öğrencilerin

%83’ü sınavda devreyi tam yaparken diğer grubun %50’si tam yapabilmiştir.

Uygulamanın kullanışlı ve kolaylaştırıcı olduğu görülmüştür. Dersin işlenişinde

de ikinci gruptaki dersin daha verimli geçtiği, öğrencilerin simülasyonlarını

görerek ve uygulayarak konuyu daha iyi kavradıkları görülmüştür.

Bu simülasyon uygulaması gerçek hayatla karşılaştırıldığında; daha güvenli

olması, öğrenme durumunun karmaşıklığını öğretisel açıdan kontrol etmesi,

Android ve Windows platformlarında çalışabilmesi açısından ve elektronik

malzemelerin gereksiz kullanımının önüne geçilmesi ile mali kazanç sağlama gibi

avantajları vardır. Öğrenciler mobil uygulamayı kullanarak, lojik devrelerin

tasarımını yaparken zorlanmayacak, lojik kapıların sembollerini tanıyıp

devreleri kolaylıkla çizebilecek ve çizilmiş olan devre şemalarını da

okuyabileceklerdir.

Geliştirilen uygulama Mesleki ve Teknik Eğitimdeki öğrencilere sunularak,

onlardan gelen dönütler doğrultusunda daha da geliştirilebilir. Uygulamaya flip-

floplar, azlayıcılar, çoklayıcılar gibi diğer lojik elemanlar ve kaydetme işlemleri

de eklenerek daha da kullanışlı hale getirilebilir. Ayrıca uygulama

oyunlaştırılarak ekranda verilen devre doğru şekilde tamamlandığında kolaydan

zora doğru level (seviye) atlaması sağlanarak, her seviye sonunda puan almasıyla

tamamlanacak şekilde hem eğitici hem de eğlenceli hale getirilebilir.

Page 67: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

54

KAYNAKLAR

Akkağıt, Ş., F., Tekin A., 2011. Lojik Kapılar İçin Bir Eğitim Aracı. 5th International Computer & Instructional Technologies Symposium, 22-24 September 2011, Fırat University, Elazığ, Turkey.

Altıkardeş, Z.A., 2001. Lojik devreler dersinin internet tabanlı simülatör ile

eğitimi. Marmara Üniversitesi. Fen Bilimleri Enstitüsü, Elektrik ve Elektronik Mühendisliği, Elektronik Haberleşme Eğitimi. Yüksek Lisans Tezi, 144s, İstanbul.

Bal, M., 2012. Labview Tabanlı Logıc Simülatör İçin Toolbox Tasarımı. Süleyman

Demirel Üniversitesi, Fen Bilimleri Enstitüsü, Yüksek Lisans Tezi,78s,

Isparta.

Büyükbayraktar, M., 2006. Lojik Devre Tasarımının Bilgisayar Destekli Olarak

Uygulanmasının Öğrenci Başarısına Etkisi. Sakarya Üniversitesi, Sosyal Bilimler Enstitüsü, Yüksek Lisans Tezi, 149s, Sakarya.

Cupic M., 2011. Building an integrated platform for teaching and learning of

Digital logic. MIPRO, 2011 Proceedings of the 34th International Convention, 1168–1173.

Çakır, H., 2011. Mobil Öğrenmeye İlişkin Bir Yazılım Geliştirme ve Değerlendirme.

Çukurova Üniversitesi Eğitim Fakültesi Dergisi, 2(40), 01-09. Çevik, K.K., Koçer, H.E., 2012. Mobil Cihaz Tabanlı Yabancı Dilde Kelime Öğrenme

Uygulaması. Teknik-Online Dergi, 11, 2, 60-70. Çınar, S., 2014. Mobil Android Ortamında Parmak İzi Tanıma Ve Kimlik

Doğrulama Sisteminin Geliştirilmesi. Haliç Üniversitesi, Fen Bilimleri Enstitüsü, Bilgisayar Mühendisliği Anabilim Dalı, Bilgisayar Mühendisliği Programı. Yüksek Lisans Tezi, 92s, İstanbul.

Dalmaz, H., 2015. Android Tabanlı Cihazlarda Web Verilerinin Gerçek Zamanlı

Değişken Parametreli Takibi. Erciyes Üniversitesi, Fen Bilimleri Enstitüsü, Bilgisayar Mühendisliği Anabilim Dalı. Yüksek Lisans Tezi, 55s, Kayseri.

Dehmenoğlu, C., 2015. Programlama Temelleri Dersine Yönelik Mobil Öğrenme

Aracının Geliştirmesi. Bahçeşehir Üniversitesi, Fen Bilimleri Enstitüsü, Bilgi Teknolojileri. Yüksek Lisans Tezi, 42s, İstanbul.

Demir, K., 2014. Grafik ve Animasyon Dersindeki Mobil Öğrenme

Uygulamalarının Öğrencilerin Akademik Başarılarına ve Mobil Öğrenmeye Yönelik Tutumlarına Etkisi. Dokuz Eylül Üniversitesi Eğitim Bilimleri Enstitüsü, Bilgisayar ve Öğretim Teknolojileri Eğitimi Anabilim Dalı, Bilgisayar ve Öğretim Teknolojileri Öğretmenliği Programı. Yüksek Lisans Tezi, 93s, İzmir.

Page 68: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

55

Demiray, A., 2017. Olası Dalış Kazalarına Erken Müdahale Etmek Amaçlı Android Tabanlı Uygulama Tasarımı. Bahçeşehir Üniversitesi, Fen Bilimleri Enstitüsü, Bilgi Teknolojileri. Yüksek Lisans Tezi, 65s, İstanbul.

Doğan, Y.S., 2017. Evrimsel Algoritmalar Kullanılarak Özgün 3d Nesne Tasarımı.

Ankara Yıldırım Beyazıt Üniversitesi, Fen Bilimleri Enstitüsü, Bilgisayar Mühendisliği Bölümü, Yüksek Lisans Tezi, 61s, Ankara.

Dube, T.J., 2017. Koreografi Üretimi İçin Sanal Ve Artırılmış Gerçeklik Tabanlı

Arayüzler. İstanbul Teknik Üniversitesi, Fen Bilimleri Enstitüsü. Yüksek Lisans Tezi, 75s, İstanbul.

Ekiz, H., 2005. Mantık Devreleri Sayısal Elektronik. Değişim Yayınları, 569s,

İstanbul. Ekiz, H., Bayam, Y., Ünal, H., 2003. Mantık Devreleri Dersine Yönelik İnternet

Destekli Uzaktan Eğitim Uygulaması. The Turkish Online Journal of Educational Technology – TOJET, 2,4, 92-99.

Erşahin, G., 2015. Tablet Bilgisayar İle Kablosuz Gezgin Robot Kontrolü. Yıldız

Teknik Üniversitesi, Fen Bilimleri Enstitüsü, Elektronik Ve Haberleşme Mühendisliği Anabilim Dalı Haberleşme Programı. Yüksek Lisans Tezi, 75s, İstanbul.

Facer, K., Joiner, R., Stanton, D., Reid, J., Hull, R., Kirk, D., 2004. Savannah: Mobile

Gaming and Learning. Journal of Computer Assisted Learning. 20(6), 399-409.

İğci, E., 2014. Android İşletim Sistemi İle Çalışan Mobil Cihazlarda Uygulama

Geliştirilmesi. Ege Üniversitesi, Fen Bilimleri Enstitüsü, Bilgisayar Mühendisliği Anabilim Dalı. Yüksek Lisans Tezi, 112s, İzmir.

Kalınkara, Y., 2017. Bilgisayar Donanımı Dersine Yönelik Mobil Eğitim

Materyalinin Geliştirilmesi VE Öğrenci Başarısı Üzerine Etkisinin İncelenmesi. İnönü Üniversitesi, Eğitim Bilimleri Enstitüsü, Bilgisayar ve

Öğretim Teknolojileri Eğitimi Ana Bilim Dalı. Yüksek Lisans Tezi, 114s, Malatya.

Karaman, S., 2008. Öğrenme 2.0 Yaygınlaşıyor: Web 2.0 Uygulamalarının

Eğitimde Kullanımına İlişkin Araştırmalar ve Sonuçları. Orta Doğu Teknik Üniversitesi, Ankara.

Keskin, N.Ö., 2010. Mobil Öğrenme Teknolojileri ve Araçları. Erişim

Tarihi:21.01.2018. http://www.academia.edu/1109901/Mobil_Öğenme_Teknolojileri_ve_Araçları.

Kh’tour, M., 2015. Android Tabanlı Hastane Uygulaması. Kırıkkale Üniversitesi

Fen Bilimleri Enstitüsü, Yüksek Lisans Tezi, 97s, Kırıkkale.

Page 69: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

56

Kılıç, M., 2015. Mobil Öğrenmeye Dayalı Android Uygulamalarının Öğrencilerin

Kimya Dersi Atom Ve Periyodik Sistem Ünitesindeki Akademik Başarılarına, Kalıcı Öğrenmelerine Ve Motivasyonlarına Etkisi. Kahramanmaraş Sütçü İmam Üniversitesi, Fen Bilimleri Enstitüsü, Yüksek Lisans Tezi, 94s, Kahramanmaraş.

Kula, S.Y., 2011. Unity’nin Orijinal Başlangıç Tutorialleri. Erişim Tarihi:

20.03.2017. https://yasirkula.com/2011/08/28/unity%E2%80%99nin-orijinal-baslangic-tutorialleri-%E2%80%93-simdi-tamamen-turkce/.

MobilShift, 2014. Erişim Tarihi: 12.02.2018.

http://www.mobilshift.com/android-tum-surumleri-listesi-surekli-guncel/.

Muştu, Y., 2012. SMS ve Android tabanlı uygulamalarla sınıf içi etkileşimin

arttırılması. Bilecik Şeyh Edebali Üniversitesi, Fen Bilimleri Enstitüsü, Bilgisayar Mühendisliği Anabilim Dalı. Yüksek Lisans Tezi, 100s, Bilecik.

Özcan, A., 2008. Cep bilgisayarları (PDA) için bir mobil öğrenme ortamı tasarım

ve uygulaması. Muğla Üniversitesi, Fen Bilimleri Enstitüsü, Yüksek Lisans

Tezi, 76s, Muğla.

Özdener, N., 2005. Deneysel öğretim yöntemlerinde benzetişim (simulation)

kullanımı. The Turkish Online Journal of Educational Technology – TOJET October 2005 ISSN: 1303-6521, 4(4), Article 13.

Rosilah H., Nazlia O., Haslina A., Shahnorbanun S., 2008. A Design of Virtual Lab

for Digital Logic. 7th WSEAS International Conference on E-Activities, 139-

145.

Rosilah H., Nazlia O., Haslina A., Shahnorbanun S., 2010. DigiLab: A Virtual Lab for

IT Students. Wseas Transactions On Advances in Engineering Education,

7, 151-160.

Satman, A.G., 2015. Yeni Başlayanlar İçin UNITY3D. Kodlab Yayınları, 246s,

İstanbul. Sonuç, E., Ortakcı, Y., Elen, A., 2013. Karabük Üniversitesi Bilgi Sistemi Android

Uygulaması. Erişim Tarihi: 28.03.2013. http://ab.org.tr/ab13/bildiri/221.pdf.

Şimşek, M.A., Erdemli, T., Taşdelen, K., 2013. Android Cihazlarda Konum Tespiti

ve Aktarılması. Erişim Tarihi: 22.01.2018. http://ab.org.tr/ab13/bildiri/134.pdf.

Page 70: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

57

Turkcell, 2015. Android Mimarisi ve Sistem Özellikleri. Erişim Tarihi: 10.01.2018. https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-201/android-mimarisi-ve-sistem-ozellikleri.

Tülü, M., 2012. Objective C ile İPHONE’a Üniversite Uygulaması Geliştirme. Erişim

Tarihi: 28.03.2013. http://ab.org.tr/ab12/bildiri/153.pdf. Yaşar, E., 2017. Android Tabanlı Anne Ve Anne Adayları İçin Bilgi Paylayışım

Platformu. Selçuk Üniversitesi Fen Bilimleri Enstitüsü. Elektronik ve Bilgisayar Sistemleri Eğitimi Anabilim Dalı. Yüksek Lisans Tezi, 49s, Konya.

Yechshzhanova, Z., 2014. Bilgisayar Destekli Öğretim ve Mobil Öğretim İçin

Geometri Dersinin İçeriğinin Geliştirilmesi. Gazi Üniversitesi Bilişim Enstitüsü, Yüksek Lisans Tezi, 95s, Ankara.

Zeytin, İ., 2013. Android İşletim Sistemi. Tekirdağ. Erişim Tarihi: 19.02.2018.

https://books.google.com.tr/books?id=73RpCQAAQBAJ&pg=PP1&lpg=PP1&dq=islam+zeytin+android+i%C5%9Fletim+sistemi&source=bl&ots=vr22GhywdU&sig=kM9gKk_SNSBRpxfOvcwq3yHHOJU&hl=tr&sa=X&ved=0ahUKEwj7-ZL6p7XZAhVGyKQKHdGtCt0Q6AEIJzAA#v=onepage&q=islam%20zeytin%20android%20i%C5%9Fletim%20sistemi&f=false.

Page 71: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

58

EKLER

EK A. Programın C# Kodları

Page 72: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

59

EK A. Programın C# Kodları using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; public class Zoom : MonoBehaviour // zoom ve panning işlemleri { [SerializeField] float VelocidadDeZoom = 0.3f; [SerializeField] Vector2 Limites; [SerializeField] Vector2 Orginals; private Vector2 ScreenSize; private Vector3 lastPanPosition; private int panFingerId; // Touch mode only private bool wasZoomingLastFrame; // Touch mode only private Vector2[] lastZoomPositions; // Touch mode only private static readonly float PanSpeed = 2f; private static readonly float[] BoundsX = new float[] { -12f, 12f }; private static readonly float[] BoundsY = new float[] { -12f, 12f }; private static readonly float[] BoundsZ = new float[] { -18f, -4f }; Camera c; private void Start() { //Ekran yönü yatay olacak şekilde ayarlama Screen.orientation = ScreenOrientation.LandscapeLeft; c = GetComponent<Camera>(); } // Update is called once per frame void Update() { if (Input.touchCount == 2) { Touch t0 = Input.GetTouch(0); Touch t1 = Input.GetTouch(1); Vector2 t0Cambio = t0.position - t0.deltaPosition; Vector2 t1Cambio = t1.position - t1.deltaPosition; float MagnitudToquesAnteriores = t1Cambio.magnitude - t0Cambio.magnitude; float MagnitudDeToque = t1.position.magnitude - t0.position.magnitude; float Diferancia = MagnitudToquesAnteriores - MagnitudDeToque; if (c.orthographic) { c.orthographicSize += Diferancia * VelocidadDeZoom;

Page 73: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

60

c.orthographicSize = Mathf.Clamp(c.orthographicSize, Limites.x, Limites.y); } else { c.fieldOfView += Diferancia * VelocidadDeZoom; c.fieldOfView = Mathf.Clamp(c.fieldOfView, Limites.x, Limites.y); } } // Zoom işleminden sonra Çift tıklayınca orjinal haline döndüren kod if (Input.GetTouch(0).tapCount == 2 && Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Began) { Touch t0 = Input.GetTouch(0); Vector2 t0Cambio = t0.position - t0.deltaPosition; float MagnitudToquesAnteriores = t0Cambio.magnitude; float MagnitudDeToque = t0.position.magnitude; float Diferancia = MagnitudToquesAnteriores - MagnitudDeToque; if (c.orthographic) { c.orthographicSize += Diferancia * VelocidadDeZoom; c.orthographicSize = Mathf.Clamp(c.orthographicSize, Orginals.x, Orginals.y); } else { c.fieldOfView += Diferancia * VelocidadDeZoom; c.fieldOfView = Mathf.Clamp(c.fieldOfView, Orginals.x, Orginals.y); } } if (Input.touchCount== 1) { // Panning wasZoomingLastFrame = false; Touch touch = Input.GetTouch(0); if (touch.phase == TouchPhase.Began) { lastPanPosition = touch.position; panFingerId = touch.fingerId; } else if (touch.fingerId == panFingerId && touch.phase == TouchPhase.Moved) { PanCamera(touch.position); } } } void PanCamera(Vector3 newPanPosition) { Vector3 Diferancia = c.ScreenToViewportPoint(lastPanPosition-newPanPosition);

Page 74: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

61

Vector3 move = new Vector3(Diferancia.x * PanSpeed,Diferancia.y * PanSpeed,0); // Hareketi gerçekleştir transform.Translate(move, Space.World); // Kameranın sınırların içinde kalmasını sağla Vector3 pos = transform.position; pos.x = Mathf.Clamp(transform.position.x, BoundsX[0], BoundsX[1]); pos.y = Mathf.Clamp(transform.position.y, BoundsY[0], BoundsY[1]); pos.z = Mathf.Clamp(transform.position.z, BoundsZ[0], BoundsZ[1]); transform.position = pos; // Cache the position pozisyonu sakla lastPanPosition = newPanPosition; } } using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; public class PinComponent : MonoBehaviour { //Pin bağlantılarının yapılması ve koparılması private struct BagliPinler { public readonly PinComponent pin1; public readonly PinComponent pin2; public readonly LineRenderer lineRenderer; public BagliPinler(PinComponent pin1, PinComponent pin2, LineRenderer lineRenderer) { this.pin1 = pin1; this.pin2 = pin2; this.lineRenderer = lineRenderer; } } private static List<BagliPinler> bagliPinler = new List<BagliPinler>(); private static PinComponent seciliPin = null; private static bool pinlerGuncellendi = false; private GameObject lojikKapi; //reference to LineRenderer component private LineRenderer line; //assign a material to the Line Renderer in the Inspector public Material material; //number of lines drawn private int currLines = 0; // Oyun başladığında void Awake() { lojikKapi = transform.parent.gameObject;

Page 75: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

62

} // Use this for initialization void Start () { } // Update is called once per frame void Update () { if(!pinlerGuncellendi) { for (int i = 0; i < bagliPinler.Count; i++) { BagliPinler tmp = bagliPinler[i]; tmp.lineRenderer.SetPosition(0, tmp.pin1.transform.position); tmp.lineRenderer.SetPosition(1, tmp.pin2.transform.position); } pinlerGuncellendi = true; } } void LateUpdate() { pinlerGuncellendi = false; } // Bu pin objesine mouse veya parmak ile dokunulduğunda void OnMouseDown() { if (seciliPin == null) { seciliPin = this; } else if (seciliPin == this) { seciliPin = null; } else { // Seçilen iki pin objesi de aynı lojik kapının piniyse bunları birbirine bağlama if ((seciliPin.lojikKapi == this.lojikKapi) || (seciliPin.tag == "input")) { seciliPin = null; return; } // Seçilen iki pin objesini zaten birbirine bağlıysa aralarındaki bağı kopar for (int i = 0; i < bagliPinler.Count; i++) { BagliPinler bp = bagliPinler[i];

Page 76: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

63

if ((bp.pin1 == seciliPin && bp.pin2 == this) || (bp.pin1 == this && bp.pin2 == seciliPin)) { Destroy(bagliPinler[i].lineRenderer.gameObject); bagliPinler.RemoveAt(i); seciliPin.GetComponent<YukComponent>().hedefler.Remove(this.GetComponent<YukComponent>()); this.GetComponent<YukComponent>().hedefler.Remove(seciliPin.GetComponent<YukComponent>()); seciliPin.GetComponent<YukComponent>().bag = null; this.GetComponent<YukComponent>().yuk = 0; seciliPin.GetComponent<YukComponent>().yuk = 0; seciliPin = null; currLines++; return; } } // Seçilen iki pin objesi birbirine bağlı değil, onları birbirine bağla bagliPinler.Add(new BagliPinler(this, seciliPin, CizgiCiz(transform.position, seciliPin.transform.position))); if (!seciliPin.GetComponent<YukComponent>().hedefler.Contains(this.GetComponent<YukComponent>())) seciliPin.GetComponent<YukComponent>().hedefler.Add(this.GetComponent<YukComponent>()); seciliPin.GetComponent<YukComponent>().bag = this.GetComponent<YukComponent>(); seciliPin = null; currLines++; return; } } LineRenderer CizgiCiz(Vector3 StartPoint, Vector3 EndPoint) { //create a new empty gameobject and line renderer component line = new GameObject("Line" + currLines).AddComponent<LineRenderer>(); line.SetVertexCount(2);

Page 77: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

64

line.SetWidth(0.10f, 0.10f); line.SetColors(Color.black, Color.black); line.useWorldSpace = true; line.material.color = Color.black; line.SetPosition(0, StartPoint); line.SetPosition(1, EndPoint); return line; } public void BosCizgiyiSil(string silindi) // boşta kalan çizgileri sil { for (int i = bagliPinler.Count - 1; i >= 0; i--) { BagliPinler pinler = bagliPinler[i]; if (pinler.pin1 == this || pinler.pin2 == this) { Destroy(pinler.lineRenderer.gameObject); Destroy(gameObject); bagliPinler.RemoveAt(i); pinler.pin1.GetComponent<YukComponent>().bag = null; pinler.pin1.GetComponent<YukComponent>().hedefler.Clear(); pinler.pin1.GetComponent<YukComponent>().yuk = 0; seciliPin = null; } } } } using UnityEngine; using System.Collections; public class surukle : MonoBehaviour //Sürükle-bırak işlemleri { public GameObject gameObjectTodrag; public Vector3 GOCenter; public Vector3 touchPosition; public Vector3 offset; public Vector3 newGOCenter; RaycastHit hit; public bool draggingMode = false; // Update is called once per frame void Update() { foreach(Touch touch in Input.touches) { switch (touch.phase) {

Page 78: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

65

case TouchPhase.Began: Ray ray = Camera.main.ScreenPointToRay(touch.position); if (Physics.SphereCast(ray,0.3f,out hit)) { gameObjectTodrag = hit.collider.gameObject; GOCenter = gameObjectTodrag.transform.position; touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); offset = touchPosition - GOCenter; draggingMode = true; } break; case TouchPhase.Moved: if (draggingMode) { touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); newGOCenter = touchPosition - offset; gameObjectTodrag.transform.position = new Vector3(newGOCenter.x, newGOCenter.y, GOCenter.z); } break; case TouchPhase.Stationary: break; case TouchPhase.Ended: draggingMode = false; break; case TouchPhase.Canceled: break; default: break; } } } } using UnityEngine; using System.Collections; public class ANDKapisi : MonoBehaviour { // AND Kapısı kodları public YukComponent input1, input2, output; // Use this for initialization void Start () { } // Update is called once per frame void Update () { output.yuk = (input1.yuk) * (input2.yuk); } } using UnityEngine; using System.Collections; public class BUFFERKapisi : MonoBehaviour { // BUFFER Kapısı kodları public YukComponent input1, output; // Use this for initialization void Start () { }

Page 79: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

66

// Update is called once per frame void Update () { output.yuk = input1.yuk; } } using UnityEngine; using System.Collections; public class NANDKapisi : MonoBehaviour { // NAND Kapısı kodları public YukComponent input1, input2, output; // Use this for initialization void Start () { } // Update is called once per frame void Update () { int sonuc = (input1.yuk) * (input2.yuk); if (sonuc == 1) output.yuk = 0; else output.yuk = 1; } } using UnityEngine; using System.Collections; public class NORKapisi : MonoBehaviour { // NOR Kapısı kodları public YukComponent input1, input2, output; // Use this for initialization void Start () { } // Update is called once per frame void Update () { int sonuc = (input1.yuk) | (input2.yuk); if (sonuc == 1) output.yuk = 0; else output.yuk = 1; } } using UnityEngine; using System.Collections; public class NOTKapisi : MonoBehaviour { // NOT Kapısı kodları public YukComponent input1, output; // Use this for initialization void Start () { } // Update is called once per frame void Update () {

Page 80: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

67

if (input1.yuk == 1) { output.yuk = 0; } else output.yuk = 1; } } using UnityEngine; using System.Collections; public class ORKapisi : MonoBehaviour { // OR Kapısı kodları public YukComponent input1, input2, output; // Use this for initialization void Start () { } // Update is called once per frame void Update () { output.yuk = (input1.yuk) | (input2.yuk); } } using UnityEngine; using System.Collections; public class XORKapisi : MonoBehaviour { // XOR Kapısı kodları public YukComponent input1, input2, output; // Use this for initialization void Start () { } // Update is called once per frame void Update () { if ((input1.yuk) != (input2.yuk)) { output.yuk = 1; } else output.yuk = 0; } } using UnityEngine; using System.Collections; public class XNORKapisi : MonoBehaviour { // XNOR Kapısı kodları public YukComponent input1, input2, output; // Use this for initialization void Start () { } // Update is called once per frame void Update () { if ((input1.yuk) == (input2.yuk)) {

Page 81: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

68

output.yuk = 1; } else output.yuk = 0; } } using UnityEngine; using System.Collections; using System.Collections.Generic; public class Yuk0 : MonoBehaviour { // YUK0 Lojik0 kodları public YukComponent output; // Use this for initialization void Start () { } // Update is called once per frame void Update () { output.yuk = 0; } } using UnityEngine; using System.Collections; using System.Collections.Generic; public class Yuk1 : MonoBehaviour { // YUK1 Lojik1 kodları public YukComponent output; // Use this for initialization void Start () { } // Update is called once per frame void Update () { output.yuk = 1; } }

using UnityEngine; using System.Collections; using System.Collections.Generic; public class YukComponent : MonoBehaviour {//Yükün pinler arasında aktarılması kodu public System.Collections.Generic.List<YukComponent> hedefler = new System.Collections.Generic.List<YukComponent>(); public YukComponent bag; public int yuk=0; // Use this for initialization void Start () { } // Update is called once per frame

Page 82: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

69

void Update () { foreach (YukComponent hedef in hedefler) hedef.yuk = this.yuk; } }

using UnityEngine; using System.Collections; public class Lamba : MonoBehaviour { //Lamba ve ledin üzerindeki kod public YukComponent input; public Light lt; // Use this for initialization void Start () { } // Update is called once per frame void Update () { //pinler arası bağa göre ve yuk degerine göre şartı gerçekleştir if ( input.yuk==1) //lambayı yak lt.intensity = 10; else lt.intensity = 0; //lambayı söndür } } using UnityEngine; using System.Collections; using System.Collections.Generic; public class Switch : MonoBehaviour //Switch kodları { public YukComponent output; public SpriteRenderer mySpriteRenderer; public SpriteRenderer mySpriteRenderer1; public SpriteRenderer mySpriteRenderer2; public SpriteRenderer mySpriteRenderer3; public SpriteRenderer mySpriteRenderer4; public SpriteRenderer mySpriteRenderer5; public SpriteRenderer mySpriteRenderer6; public SpriteRenderer mySpriteRenderer7; public SpriteRenderer mySpriteRenderer8; public SpriteRenderer mySpriteRenderer9; public static bool Degistir = true; public Light switch_Lamb; private void Awake() { } // Use this for initialization void Start() {

Page 83: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

70

} // Update is called once per frame void Update() { if (mySpriteRenderer != null) { // if the A key was pressed this frame if (Input.touchCount == 1) { Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.gameObject.name == "Switch(Clone)") { if ((Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer.flipY = true; output.yuk = 1; switch_Lamb.intensity = 5; Degistir = false; } else if ((!Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer.flipY = false; output.yuk = 0; switch_Lamb.intensity = 0; Degistir = true; } } } } } if (mySpriteRenderer1 != null) { // if the A key was pressed this frame if (Input.touchCount == 1) { Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.gameObject.name == "Switch1(Clone)") { if ((Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer1.flipY = true; output.yuk = 1; switch_Lamb.intensity = 5;

Page 84: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

71

Degistir = false; } else if ((!Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer1.flipY = false; output.yuk = 0; switch_Lamb.intensity = 0; Degistir = true; } } } } } if (mySpriteRenderer2 != null) { // if the A key was pressed this frame if (Input.touchCount == 1) { Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.gameObject.name == "Switch2(Clone)") { if ((Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer2.flipY = true; output.yuk = 1; switch_Lamb.intensity = 5; Degistir = false; } else if ((!Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer2.flipY = false; output.yuk = 0; switch_Lamb.intensity = 0; Degistir = true; } } } } } if (mySpriteRenderer3 != null) { // if the A key was pressed this frame if (Input.touchCount == 1) {

Page 85: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

72

Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.gameObject.name == "Switch3(Clone)") { if ((Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer3.flipY = true; output.yuk = 1; switch_Lamb.intensity = 5; Degistir = false; } else if ((!Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer3.flipY = false; output.yuk = 0; switch_Lamb.intensity = 0; Degistir = true; } } } } } if (mySpriteRenderer4 != null) { // if the A key was pressed this frame if (Input.touchCount == 1) { Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.gameObject.name == "Switch4(Clone)") { if ((Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer4.flipY = true; output.yuk = 1; switch_Lamb.intensity = 5; Degistir = false; } else if ((!Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer4.flipY = false; output.yuk = 0; switch_Lamb.intensity = 0; Degistir = true;

Page 86: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

73

} } } } } if (mySpriteRenderer5 != null) { // if the A key was pressed this frame if (Input.touchCount == 1) { Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.gameObject.name == "Switch5(Clone)") { if ((Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer5.flipY = true; output.yuk = 1; switch_Lamb.intensity = 5; Degistir = false; } else if ((!Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer5.flipY = false; output.yuk = 0; switch_Lamb.intensity = 0; Degistir = true; } } } } } if (mySpriteRenderer6 != null) { // if the A key was pressed this frame if (Input.touchCount == 1) { Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.gameObject.name == "Switch6(Clone)") { if ((Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer6.flipY = true; output.yuk = 1; switch_Lamb.intensity = 5;

Page 87: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

74

Degistir = false; } else if ((!Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer6.flipY = false; output.yuk = 0; switch_Lamb.intensity = 0; Degistir = true; } } } } } if (mySpriteRenderer7 != null) { // if the A key was pressed this frame if (Input.touchCount == 1) { Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.gameObject.name == "Switch7(Clone)") { if ((Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer7.flipY = true; output.yuk = 1; switch_Lamb.intensity = 5; Degistir = false; } else if ((!Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer7.flipY = false; output.yuk = 0; switch_Lamb.intensity = 0; Degistir = true; } } } } } if (mySpriteRenderer8 != null) { // if the A key was pressed this frame if (Input.touchCount == 1) {

Page 88: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

75

Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.gameObject.name == "Switch8(Clone)") { if ((Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer8.flipY = true; output.yuk = 1; switch_Lamb.intensity = 5; Degistir = false; } else if ((!Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer8.flipY = false; output.yuk = 0; switch_Lamb.intensity = 0; Degistir = true; } } } } } if (mySpriteRenderer9 != null) { // if the A key was pressed this frame if (Input.touchCount == 1) { Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.gameObject.name == "Switch9(Clone)") { if ((Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer9.flipY = true; output.yuk = 1; switch_Lamb.intensity = 5; Degistir = false; } else if ((!Degistir) && (Input.GetTouch(0).phase == TouchPhase.Began)) { mySpriteRenderer9.flipY = false; output.yuk = 0; switch_Lamb.intensity = 0; Degistir = true;

Page 89: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

76

} } } } } } } using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.Events; using UnityEngine.EventSystems; public class MenuSil : MonoBehaviour {// Sahneye eklenen elemanları sil kodu string silText = "SİL"; public int sayac = 0; public Text nerds = null; // Use this for initialization void Start () { } // Update is called once per frame void Update () { if (silText== "SİL AKTİF") { ElemanSil(); } } public void OnButtonClick() { if (sayac == 1) { silText = "SİL"; nerds.text = silText; sayac = 0; } else if (sayac == 0) { silText = "SİL AKTİF"; nerds.text = silText; sayac++; } } public void ElemanSil() // menüde silbutonu aktifken sahnedeki kapıları sil { if (Input.touchCount > 0) { Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit hit; if (Physics.Raycast(ray, out hit))

Page 90: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

77

{ if (hit.collider.gameObject.name == "AND_2(Clone)" || hit.collider.gameObject.name == "OR_2(Clone)" || hit.collider.gameObject.name == "NAND(Clone)" || hit.collider.gameObject.name == "NOR(Clone)" || hit.collider.gameObject.name == "XOR(Clone)" || hit.collider.gameObject.name == "XNOR(Clone)" || hit.collider.gameObject.name == "BUFFER(Clone)" || hit.collider.gameObject.name == "NOT(Clone)" || hit.collider.gameObject.name == "HIGH1(Clone)" || hit.collider.gameObject.name == "LOW1(Clone)" || hit.collider.gameObject.name == "LAMBA(Clone)" || hit.collider.gameObject.name == "Switch(Clone)" || hit.collider.gameObject.name == "Switch1(Clone)" || hit.collider.gameObject.name == "Switch2(Clone)" || hit.collider.gameObject.name == "Switch3(Clone)" || hit.collider.gameObject.name == "Switch4(Clone)" || hit.collider.gameObject.name == "Switch5(Clone)" || hit.collider.gameObject.name == "Switch6(Clone)" || hit.collider.gameObject.name == "Switch7(Clone)" || hit.collider.gameObject.name == "Switch8(Clone)" || hit.collider.gameObject.name == "Switch9(Clone)" || hit.collider.gameObject.name == "LED(Clone)") { Destroy(hit.transform.gameObject); var pinler = hit.transform.GetComponentsInChildren<PinComponent>(); foreach (var pin in pinler) { pin.BosCizgiyiSil(null); } } } } } } using UnityEngine; using System.Collections; using UnityEngine.UI; public class MenuGirisEkle : MonoBehaviour { //Yükleri lojik0,lojik1,switch ekle kodları public GameObject KopyaHIGH; public GameObject KopyaLOW; public GameObject KopyaSWITCH; public GameObject KopyaSWITCH1; public GameObject KopyaSWITCH2; public GameObject KopyaSWITCH3; public GameObject KopyaSWITCH4; public GameObject KopyaSWITCH5; public GameObject KopyaSWITCH6; public GameObject KopyaSWITCH7; public GameObject KopyaSWITCH8; public GameObject KopyaSWITCH9; [SerializeField] Transform menuPanel1; [SerializeField]

Page 91: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

78

GameObject buttonPrefab1; // Use this for initialization void Start() { for (int i = 0; i < 3; i++) { if (i == 0) { GameObject button = (GameObject)Instantiate(buttonPrefab1); button.GetComponentInChildren<Text>().text = "LOGIC 1"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel1; } else if (i == 1) { GameObject button = (GameObject)Instantiate(buttonPrefab1); button.GetComponentInChildren<Text>().text = "LOGIC 0"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel1; } else if (i == 2) { GameObject button = (GameObject)Instantiate(buttonPrefab1); button.GetComponentInChildren<Text>().text = "SWITCH"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel1; } } } public int arttir = 0; // Update is called once per frame void Update() { } public void OnButtonClick(string bName) { if (bName == "LOGIC 1") { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaHIGH, edgeOfScreen, KopyaHIGH.transform.rotation); } else if (bName == "LOGIC 0") {

Page 92: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

79

Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaLOW, edgeOfScreen, KopyaLOW.transform.rotation); } else if (bName == "SWITCH") { arttir++; if (arttir == 1) { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaSWITCH, edgeOfScreen, KopyaSWITCH.transform.rotation); } if (arttir == 2) { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaSWITCH1, edgeOfScreen, KopyaSWITCH1.transform.rotation); } if (arttir == 3) { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaSWITCH2, edgeOfScreen, KopyaSWITCH2.transform.rotation); } if (arttir == 4) { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaSWITCH3, edgeOfScreen, KopyaSWITCH3.transform.rotation); } if (arttir == 5) { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaSWITCH4, edgeOfScreen, KopyaSWITCH4.transform.rotation); } if (arttir == 6) { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaSWITCH5, edgeOfScreen, KopyaSWITCH5.transform.rotation); } if (arttir == 7) {

Page 93: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

80

Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaSWITCH6, edgeOfScreen, KopyaSWITCH6.transform.rotation); } if (arttir == 8) { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaSWITCH7, edgeOfScreen, KopyaSWITCH7.transform.rotation); } if (arttir == 9) { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaSWITCH8, edgeOfScreen, KopyaSWITCH8.transform.rotation); } if (arttir == 10) { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaSWITCH9, edgeOfScreen, KopyaSWITCH9.transform.rotation); } } } } using UnityEngine; using System.Collections; using UnityEngine.UI; public class MenuKapiEkle : MonoBehaviour { //Sahneye kapı ekleme kodları [SerializeField] Transform menuPanel; [SerializeField] GameObject buttonPrefab; public GameObject KopyaAND; public GameObject KopyaOR; public GameObject KopyaNAND; public GameObject KopyaNOR; public GameObject KopyaXOR; public GameObject KopyaXNOR; public GameObject KopyaBUFFER; public GameObject KopyaNOT; // Use this for initialization void Start () { for (int i = 0; i < 8; i++) { if (i == 0) {

Page 94: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

81

GameObject button = (GameObject)Instantiate(buttonPrefab); button.GetComponentInChildren<Text>().text = "AND KAPISI"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel; } else if (i == 1) { GameObject button = (GameObject)Instantiate(buttonPrefab); button.GetComponentInChildren<Text>().text = "OR KAPISI"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel; } else if (i == 2) { GameObject button = (GameObject)Instantiate(buttonPrefab); button.GetComponentInChildren<Text>().text = "NAND KAPISI"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel; } else if (i == 3) { GameObject button = (GameObject)Instantiate(buttonPrefab); button.GetComponentInChildren<Text>().text = "NOR KAPISI"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel; } else if (i == 4) { GameObject button = (GameObject)Instantiate(buttonPrefab); button.GetComponentInChildren<Text>().text = "XOR KAPISI"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel; } else if (i == 5) { GameObject button = (GameObject)Instantiate(buttonPrefab); button.GetComponentInChildren<Text>().text = "XNOR KAPISI"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel; } else if (i == 6) { GameObject button = (GameObject)Instantiate(buttonPrefab);

Page 95: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

82

button.GetComponentInChildren<Text>().text = "BUFFER KAPISI"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel; } else if (i == 7) { GameObject button = (GameObject)Instantiate(buttonPrefab); button.GetComponentInChildren<Text>().text = "NOT KAPISI"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel; } } } // Update is called once per frame void Update () { } public void OnButtonClick(string bName) { // Debug.Log(bName); if (bName == "AND KAPISI") { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaAND, edgeOfScreen, KopyaAND.transform.rotation); } else if (bName == "OR KAPISI") { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaOR, edgeOfScreen, KopyaOR.transform.rotation); } else if (bName == "NAND KAPISI") { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaNAND, edgeOfScreen, KopyaNAND.transform.rotation); } else if (bName == "NOR KAPISI") { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaNOR, edgeOfScreen, KopyaNOR.transform.rotation); } else if (bName == "XOR KAPISI") { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaXOR, edgeOfScreen, KopyaXOR.transform.rotation); } else if (bName == "XNOR KAPISI")

Page 96: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

83

{ Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaXNOR, edgeOfScreen, KopyaXNOR.transform.rotation); } else if (bName == "BUFFER KAPISI") { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaBUFFER, edgeOfScreen, KopyaBUFFER.transform.rotation); } else if (bName == "NOT KAPISI") { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaNOT, edgeOfScreen, KopyaNOT.transform.rotation); } } } using UnityEngine; using System.Collections; using UnityEngine.UI; public class MenuCikisEkle : MonoBehaviour {//Sahneye çıkış(lamba,led) ekleme public GameObject KopyaLAMBA; public GameObject KopyaLED; [SerializeField] Transform menuPanel2; [SerializeField] GameObject buttonPrefab2; // Use this for initialization void Start () { for (int i = 0; i < 3; i++) { if (i == 0) { GameObject button = (GameObject)Instantiate(buttonPrefab2); button.GetComponentInChildren<Text>().text = "LAMBA"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel2; } else if (i == 1) { GameObject button = (GameObject)Instantiate(buttonPrefab2); button.GetComponentInChildren<Text>().text = "LED"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel2; } } } // Update is called once per frame void Update () {

Page 97: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

84

} public void OnButtonClick(string bName) { if (bName == "LAMBA") { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaLAMBA, edgeOfScreen, KopyaLAMBA.transform.rotation); } if (bName == "LED") { Vector2 edgeOfScreen = new Vector2(Random.Range(-2, 2), Random.Range(-2, 2)); Instantiate(KopyaLED, edgeOfScreen, KopyaLAMBA.transform.rotation); } } } using UnityEngine; using System.Collections; public class MenuProgramCikis : MonoBehaviour { //Simülasyon ekranı Çıkış butonu kodları public GameObject PANEL; // Use this for initialization public void ProgramdanCik() { PANEL.SetActive(true); } //Çıkış panelinin evethayırı public void Hayir() { PANEL.SetActive(false); } public void Evet() { Application.Quit(); Debug.Log("ÇIKIŞ"); } } using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.SceneManagement; public class MenuExit : MonoBehaviour { //Simülasyon ekranı Geri ve Çıkış kodları [SerializeField] Transform menuPanel4; [SerializeField] GameObject buttonPrefab4; public GameObject PANEL; public GameObject PANELGERI; // Use this for initialization

Page 98: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

85

void Start () { for (int i = 0; i < 2; i++) { if (i == 0) { GameObject button = (GameObject)Instantiate(buttonPrefab4); button.GetComponentInChildren<Text>().text = "GİRİŞ EKRANI"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel4; } else if (i == 1) { GameObject button = (GameObject)Instantiate(buttonPrefab4); button.GetComponentInChildren<Text>().text = "ÇIKIŞ"; string buName = button.GetComponentInChildren<Text>().text; button.GetComponent<Button>().onClick.AddListener( () => OnButtonClick(buName)); button.transform.parent = menuPanel4; } } } // Update is called once per frame void Update () { } public void OnButtonClick(string bName) { Debug.Log(bName); if (bName == "ÇIKIŞ") { PANEL.SetActive(true); } else if (bName== "GİRİŞ EKRANI") { Debug.Log("Geri"); PANELGERI.SetActive(true); } } //Çıkış panelinin evethayırı public void Hayir() { PANEL.SetActive(false); } public void Evet() { Application.Quit(); Debug.Log("ÇIKIŞ"); } //GirişEkranı panelinin evethayırı

Page 99: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

86

public void HayirG() { PANELGERI.SetActive(false); } public void EvetG() { // ekranı temizlemek için Debug.Log("Ekranı Temizle"); GameObject[] klones = GameObject.FindGameObjectsWithTag("tem"); foreach (GameObject klon in klones) { GameObject.Destroy(klon); var pinler = klon.GetComponentsInChildren<PinComponent>(); foreach (var pin in pinler) { pin.BosCizgiyiSil(null); } } //buraya kadar SceneManager.LoadScene("GIRIS"); Debug.Log("GERİ"); } } using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.SceneManagement; public class MenuGeri : MonoBehaviour { //Geri Paneli kodları public GameObject PANELGERI; // Use this for initialization public void GeriDon() { Debug.Log("Geri"); PANELGERI.SetActive(true); } //GirişEkranı panelinin evethayırı public void HayirG() { PANELGERI.SetActive(false); } public void EvetG() { SceneManager.LoadScene("GIRIS"); Debug.Log("GERİ"); } } using UnityEngine; using System.Collections; using System.Collections.Generic;

Page 100: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

87

public class temizle : MonoBehaviour { //Sahneyi temizle butonu kodları public void ekranitemizle() { Debug.Log("Ekranı Temizle"); GameObject[] klones = GameObject.FindGameObjectsWithTag("tem"); foreach (GameObject klon in klones) { GameObject.Destroy(klon); var pinler = klon.GetComponentsInChildren<PinComponent>(); foreach (var pin in pinler) { pin.BosCizgiyiSil(null); } } } } using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; public class GirisMenu : MonoBehaviour { //Giriş ekranı kodları void Start() { //Ekran yönü yatay olacak şekilde ayarlama Screen.orientation = ScreenOrientation.LandscapeLeft; } public void yeni() { SceneManager.LoadScene("UYG1"); Debug.Log("GİRİŞ"); } public void cikis() { Application.Quit(); Debug.Log("çıkış"); } public void yardim() { SceneManager.LoadScene("YARDIM"); Debug.Log("yardim"); } } using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; public class YardimGeri : MonoBehaviour { //Yardım ekranı geri butonu kod void Start() { //Ekran yönü yatay olacak şekilde ayarlama Screen.orientation = ScreenOrientation.LandscapeLeft; } public void Yardimgeri() { SceneManager.LoadScene("GIRIS"); } }

Page 101: ANDROİD TABANLI MOBİL CİHAZLAR ÜZERİNDE LOJİK DEVRE ...

88

ÖZGEÇMİŞ Adı Soyadı : Ümmüşan ÇITAK Doğum Yeri ve Yılı : Isparta, 1985 Medeni Hali : Evli Yabancı Dili : İngilizce E-posta : [email protected] Eğitim Durumu Lise : Isparta Anadolu Ticaret Meslek Lisesi, 2003 Lisans : SDÜ, Teknik Eğitim Fakültesi, Bilgisayar Sistemleri

Öğretmenliği, 2007 Mesleki Deneyim Bilişim Teknolojileri Öğretmeni (MEB) 2008-…….. (halen) Yayınları Çakır, A., Çelik, Ü., 2007, "Çok Fonksiyonlu Programlanabilir Duyuru & Reklam

Panosu", SDÜ 15. Yıl Müh. Mim. Sempozyumu, 14-16 Kasım, Cilt II, Sy.70-76, Isparta.

Taranmış Fotoğraf

(3.5cm x 3cm)