Jumat, 25 Desember 2015

PONG!



GAME PONG DENGAN EFEK SUARA
Dibuat oleh Kelompok 11:
·         Luqman Alfarisi 13212128
·         Zuhditazmi 13212149

1.      Deskripsi

Game Pong merupakan sebuah game sederhana menyerupai permainan ping pong namun hanya dalam 2 dimensi. Akan ada bola yang bergerak memantul-mantul jika menabrak dinding atas dan bawah serta mengenai “pad” pemain. Pad ini dapat bergerak ke atas dan kebawah tergantung dari inputan pemain. Ketika bola masuk ke salah satu daerah pemain, maka pemain lawan mendapat poin. Game selesai ketika salah satu pemain mendapat point 3. Jika pengguna yang menang maka akan berlanjut ke level selanjutnya, namun jika computer yang menang maka “live” dari pengguna akan berkurang. Jika live dari pengguna habis atau pengguna berhasil mengalahkan komputer hingga level 5, maka permainan berakhir. Jika “live” habis maka pengguna dinyatakan “LOSE” namun Jika pengguna berhasil mengalahkan komputer pada level 5, maka pengguna dinyatakan “WIN”. Kemudian pengguna dapat melihat statistic “WIN” dan “LOSE”nya.

2.      Requirement

Pada proyek perancangan sistem embedded ini kami memilih untuk membuat “Game Pong” seperti yang sudah dideskripsikan diatas. Untuk membuat game yang reliable, maka dibutuhkan keandalan dan performansi yang cukup. Keandalan disini berupa proyek tidak memiliki kelemahan yang krusial seperti adanya bugs yang menyebabkan game berhenti. Sedangkan performansi yang dimaksud adalah sistem dapat menjalankan semua tugasnya tanpa terganggu tugas yang lain sehingga game akan berjalan secara lancar. Untuk memenuhi hal tersebut, maka requirement yang diperlukan dalam pembuatan game ini adalah sebagai berikut:
·         Sistem dapat melakukan masing-masing tugas tanpa mengganggu satu sama lain.
·         Sistem memiliki tampilan yang interaktif dan juga dapat mengeluarkan suara agar permainan lebih menarik.
·         Sistem dapat menampilkan score, live dan level kepada pengguna.
·         Sistem dapat membaca inputan dari pengguna untuk menggerakkan pad.

3.      Spesifikasi Perangkat

Dengan requirement diatas, didapatkan spesifikasi perangkat yang dibutuhkan sebagai berikut:
·         Sistem menggunakan Board Nuvoton Learning Board Nu-LB-NUC-140 dikarenakan merupakan keharusan dari proyek ini dan board ini dapat menggunakan fitur OS.
·         Sistem menggunakan LCD 128 x 64 untuk menampilkan tampilan yang interaktif.
·         Sistem menggunakan buzzer untuk memunculkan suara.
·         Sistem menggunakan keypad sebagai input dari pengguna.
·         Game harus memiliki menu untuk menampilkan bantuan dan juga memilih level game yang diinginkan.
·         Game memunculkan tampilan kalah dan menang pada akhir permainan.
·         Game harus menampilkan live, score, dan level agar pengguna dapat mengetahui status game tersebut.
·         Sistem harus dapat bekerja secara concurrent sehingga tugas antara pergerakan bola, pembacaan input, pengeluaran suara, dll tidak saling mengganggu/menghambat yang dapat menyebabkan berbagai masalah sehingga menurunkan user value.
Untuk memenuhi spesifikasi tersebut, maka peripherals pada board NUC140VE3CN yang dipakai dan pin-pin yang digunakan adalah:
  • LCD 128x64 dengan SPI (pin D8, D9, D10, D11, D14)
  • Keypad dengan GPIO (pin A0-A5)
  • Buzzer dengan GPIO (pin B11)

4.      Pemodelan Sistem

Secara keseluruhan DFD dari sistem adalah sebagai berikut:
Sistem dimodelkan dengan statechart dimana terdapat 3 state untuk yaitu START, PLAY, dan FINISH untuk tampilan game dan terdapat 4 state untuk buzzer yaitu Sound OFF, Sound EDGE, Sound LOSE, dan Sound WIN.
Untuk melakukan tugasnya masing-masing secara concurrent, program dibagi menjadi 5 task yaitu:
·         Main Program
·         Task 1: Read Keypad
Task ini berfungsi untuk memperbarui bacaan keypad untuk digunakan sebagai masukan bagi task lain. Keypad dibaca dengan perintah ScanKey() disertai debouncing 100ms dengan osDelay. Hal ini dilakukan agar selama debouncing task lain bisa berjalan. Task ini dijadwalkan tiap 100ms. Flowchart dari task ini adalah sebagai berikut:


·         Task 2: Game Display
Task ini berfungsi untuk memperbaharui tampilan game tergantung state dari game. Pada state PLAY maka task ini akan menampilkan display permainan dan tampilan WIN LOSE. Pada state FINISH maka task ini akan menampilkan display game over dan tawaran untuk mengulang permainan.
·         Task 3: Calculate Move
Task ini berfungsi untuk memperbaharui mekanik game. Pada task ini dilakukan banyak perhitungan termasuk gerakan bola dan gerakan pad pemain. Pada task ini juga ditentukan apabila terjadi perubahan skor atau suatu level berakhir. Task ini juga mengatur perpindahan state game dan state suara.

  
·         Task 4: Menu Display
Task ini berfungsi untuk mengendalikan tampilan awal saat pemilihan menu. Task ini mengatur display pada state START mulai dari splash screen sampai pilihan menu.

·         Task 5: Buzzer
Task ini berfungsi untuk mengendalikan keluaran suara tergantung pada state suara. State suara yang diubah oleh task calculate_move akan diterjemahkan menjadi bunyi yang sesuai. Bunyi akan muncul pada 3 event, yaitu saat bola memantul tembok, bola masuk daerah pemain, dan bola masuk daerah lawan. Pada jeda penyalaan buzzer digunakan osDelay agar task lain bisa berjalan dan task buzzer tidak blocking.

5.      Implementasi

Antarmuka yang digunakan pada permainan:
·         Permainan menggunakan 9 tombol keypad sebagai masukan, keypad dinomori 1-9 seperti keypad pada biasanya
·         Permainan menggunakan layar dan buzzer sebagai keluaran.
·         Layar akan menampilkan splash screen, menu, dan tampilan game.
·         Buzzer akan mengeluarkan suara ketika bola mengenai pad dan ketika bola masuk daerah sendiri atau daerah lawan
OS yang digunakan adalah RTX bawaan dari keil.Implementasi konkurensi dari model sistem adalah sebagai berikut:
void read_keypad (void const *argument);
void game_display (void const *argument);
void calculate_move (void const *argument);
void menu_display (void  const *argument);
void buzzer (void  const *argument);

6.      Hasil


Tampilan Awal Aplikasi:
·         Ketika board dihidupkan atau baru di reset, maka akan ditampilkan beberapa splash screen supaya permainan lebih menarik



Menu:
       Kemudian setelah pengguna menekan tombol manapun, akan ditampilkan menu
       Ada 3 menu yaitu PLAY, HELP, dan SET LEVEL
       Pemilihan menu menggunakan keypad tombol 1,2, dan 3
Menu Help:
       Pada menu ini dapat ditampilkan cara bermain game
       Menu ini menampilkan teks yang cukup panjang sehingga dibagi menjadi dua halaman.
       Navigasi dilakukan dengan menggunakan keypad tombol 1 dan 3

Menu SET LEVEL:
       Pada menu ini pengguna dapat memilih level yang ingin dimainkan
       Pemilihan level menggunakan tombol keypad sesuai nomor level yang diiginkan
       Misalnya untuk memilih level 3, takan keypad nomor 4
       Jika pengguna langsung memilih PLAY, default adalah LEVEL 0


Menu Play-Tahap Inisialisasi:
       Pada tahap awal akan ditampilkan terlebih dahulu level yang dimainkan
       Misalnya jika dipilih LEVEL 3 pada SET LEVEL, maka tampilan awal permainan akan seperti gambar di samping

Menu PLAY- tahap permainan:
       Pada tahap permainan akan ditampilkan sebagai gambar di samping
       Pemain bisa menggerakkan padnya dengan menekan tombol 3 untuk naik dan tombol 8 untuk turun
       Sedangkan bola akan memantul secara otomatis dan pad komputar akan bergerak otomatis juga
       Ketika bola mengenai pad, maka akan ada bunyi beep pendek sekali
       Ketika bola masuk daerah sendiri dan daerah lawan juga ada bunyi tertentu

Akhir Level-Menang:
       Ketika pemain mencapai skor 3 lebih dulu, maka ia memenangkan level tersebut
       Jika level yang dimenangkan bukan level 5, maka akan ditampilkan level berikutnya dan permainan berlanjut
       Jika yang dimenangkan adalah level 5, maka akan muncul grafik “YOU WIN”

Akhir level-Kalah:
       Jika computer mencapai skor 3 terlebih dulu, maka pemain dianggap kalah pada level itu dan nyawanya akan berkurang 1.
       Jika nyawa masih ada, maka level tersebut akan diulang
       Jika nyawa habis, maka akan ditampilkan grafik “LOSE”

Akhir Permainan:
       Di akhir permainan akan ditampilkan statistik. Win menunjukkan berapa level yang dimenangkan. Lose menunjukkan berapa nyawa yang hilang
       Kemudian pengguna bisa memilih untuk bermain lagi atau kembali ke menu awal

 

Sabtu, 08 November 2014

SMPS Sirkuit

Power Supply Switching Mode (SMPS)

Kali ini saya akan menjelaskan tentang pembuata power supply switching mode.
Pertama kali yang harus dilakukan adalah meentukan IC switching mana yang anda akan gunakan karena belum tentu IC yang anda dapat dari rangkaian seseorang akan ada di daerah anda.
IC switching yang saya dapatkan adalah TOP227Y. IC ini sudah agak umum digunakan untuk konfigurasi SMPS flyback.
Kemudian dari datasheet IC tersebut didapatkan rangkain dasar untuk SMPS seperti berikut :
Kemudian saya susun schematic dan PCBnya dengan menggunakan Altium Designer :
Pada rangkaian yang saya buat, EMI Filter dibuat dengan menggunakan Ferrit Toroid dengan 10 lilitan pada + dan - nya dengan ukuran kawat tembaga 0.3mm. Pada trafo switchingnya digunakan 100 lilitan primer dengan diameter 0.3mm dan 10 lilitan sekunder dan 10 lilitan bias dengan diameter 1mm. Diameter tersebut digunakan agar arus yang lewat bisa besar yaitu 3A. Untuk dioda zener VR2 susah didapat yang 11V, sehingga saya gunakan dioda zener 10V. Output pada rangkaian diatas bergantung pada tegangan di R1, di Octocoupler, dan tegangan pada dioda zener VR2 tersebut. Agar outputnya pas 12V. saya mainkan besar R1.
Hasil PCB cetaknya adalah :

Hasil setelah diassembly adalah sebagai berikut :

Output yang keluar sudah sesuai dengan spesifikasi yaitu 12V.

Power Supply Linear

Power Supply Linear

Pada post ini saya akan memperkenalkan tentang pembuatan power supply linear.
Pembuatan dimulai dengan searching web tentang IC regulator yang digunakan.
Spesifikasi yang ingin dibuat adalah tegangan input 220V dan output +15,+12,+9,+7.5,+5,+3.3,-3.3,-5,-7.5,-9,-12, dan -15 V.
Karena output harus bisa diubah-ubah, maka digunakanlah IC LM317 untuk output + dan IC LM337 untuk output -. IC ini mudah diatur tegangan keluarannya yaitu dengan mengatur resistansi pada resistor pin adjustnya yang kemudian dibandingkan dengan resistor pada pin outputnya.
Kemudian dengan melihat datasheetnya, saya merancang rangkaian seperti pada gambar1 ini.

Kemudian membuat PCBnya :
Pembuatan schematic dan PCB diatas dilakukan dengan menggunakan software altium designer.

Proses selanjutnya adalah pencetakan dan pemasagan komponen-komponennya :
Setelah pemasangan selesai, dilakukan penyesuaian dengan menggubah-ubah resistansi pada trimpot dan dengan menggunakan multimeter.
Hasil yang didapatkan sesuai dengan spesifikasi yang diinginkan.