Rabu, 26 Juli 2017

BAB 3 IMPLEMENTASI

3.1            Tujuan sistem

Tujuan sistem adalah untuk mengimplementasi ga- me tetris sederhana pada LED menggunakan mikro- kontroller atmega. Game tetris sederhana yang dimak- sud adalah pemain mencoba untuk melengkapi garis dengan bentuk-bentukan tetris yang digenerate. Jum- lah garis yang terbentuk memberikan poin.

3.2           Design Hardware

Gambar 3.1 rangkaian penyusunan alat
    Hardware untuk sistem game tetris ini cukup se- dernahana yaitu meliputi satu modul dot matrix led 8×8 dengan shift register MAX7219, 3 buan push but- ton beserta kapasitornya dan sebuah Atmega328p de- ngan modul arduino. Cara kerja hardware adalah per- tama, komunikasi antara mikrokontroller dan LED dot matrix adalah menggunakan SPI, yaitu mikrokontro- ller akan mengirim bit sequence yang akan diprosses shift register untuk menjadi input yang akan menya- lakan atau mematikan LED dalam dot matrix. Ke- dua button-button digunakan untuk memanipulasi in- put yang dikirimkan kepada dot matrix via SPI. Pin yang terpakai dari arduino adalah pin – pin untuk SPI, yaitu MOSI, clk dan cs.   Pin SPI ini digunak-   an untuk menjadi interface antara shift register modul dot matrix dan mikrokontroller. Kapasitor digunak- an untuk mengurangi dampak dari button debouncing dengan menyambungnya secara parallel dengan push button. Pemogramman atmega dilakukan dengan ba- hasa C dan compilasi dan upload menggunakan ardui- no IDE. Pemilihan penggunaan shift register MAX7219 digunakan agar menghemat penggunaan pin. Dot ma- trix 8×8 bahkan dapat dicascade menjadi 16×8 dan dapat dikendalikan dengan hanya menggunakan 3 pin pada mikrokontroller. Jika tidak menggunakan mo- dul MAX7219, akan dibutuhkan 16 pin atmega beser- ta 8 resistor untuk mengendalikan dot matrix. Un- tuk display digunakan dot matrix led dibandingkan dengan LCD karena dot matrix jauh lebih mudah un- tuk deprogram yaitu dengan mengetahui koordinat led yang ingin kita nyalakan atau matikan dan menggunakan prinsip scanning untuk menyalakan LED. Pem- rogramman LCD lebih sulit karena ada berbagai LCD dipasaran dengan cara kerja yang berbeda-beda yang dimana penjual LCD dan LCD sendirinya tidak mem- berikan deskripsi chipset yang dipakai, maka sangat mempersulit untuk mengetahui cara kerja LCD. Lebih lagi, pemrogramman LCD membutuhkan library yang bagus dan butuh waktu untuk mempelajari berbagai library yang ada. Dengan demikian akhirnya dipilih LED dot matrix.

3.3            Design Software

Gambar 3.2 diagram pembuatan alat game
Software pada tugas ini terbagi menjadi dua. Perta- ma adalah library dot matrix led, dan yang kedua ada- lah software implementasi game tetris. Library dot ma- trix LED digunakan untuk interface software dengan hardware LED dot matrix. Library tersebut memili- ki fungsi yang dapat diberikan nomor LED dan action yang ingin kita lakukan pada LED tersebut seperti me- matikan atau menyalakan.  Library membagi  setiap LED memiliki nomor uniknya sendiri, maka dalam hal ini ada 63 nomor yang dapat dimanipulasi state nya. Dari nomor LED dan action yang diinginkan, LED ak- an mengkalkulasi series bit yang dibutuhkan untuk di- kirimkan ke shift register MAX7219 via SPI yang akan memberikan kita hasil yang diinginkan. Kedua adalah software implementasi game tetris. Pertama yang di- lakukan adalah membuat sistem koordinat dari angka unik LED tersebut. Ini dilakukan agar pemrograman lebih mudah dilakukan dan agar lebih mudah berko- munikasi dengan library LED. Untuk mengimplemen- tasi game, software berkerja dengan memberikan suatu matriks 8×8 yang memiliki berbagai informasi tentang state game tesrebut. Contohnya, indeks matriks yang memiliki nilai 1 berarti adalah bagian dari sprite gra- fik game dan nilai 2 berarti adalah titik pusat sprite tersebut, dan nilai 3 adalah boundary collision. Ma- ka untuk memprogram game tetris dilakukan berbagai hal untuk memanipulasi matrix tersebut. Pertama di- lakukan pemrogramman rules, yaitu sprite yang akan selalu “jatuh”, mana gerakan yang sah atau tidak, dan syarat-syarat game kalah dan menang. Kedua dila- kukan pemrogramman sprite, yiatu bentuk pada game tetris. Dan terakhir adalah pemrogramman manipula- si sprite seperti geraan ke kiri, kanan dan transformasi rotasi 90 derajat sprite. Untuk pushbutton digunakan mekanisme polling dan bukan interrupt karena softwa- re butuh mengecek berbagai hal seperti sah-nya suatu gerakan terhadap peraturan game untuk dapat dila- kukan gerakan tersebut. Setelah matrix dimanipulasi tergantu state yang diinginkan, matrix di-push kepada library untuk di intrepetasikan menjadi nyala tidak nya LED pada dot matrix. matrix yang di push selalu berubah seiiring pemecetan tombol.
Dibawah adalah berbagai fungsi penting yang dipa- kai dalam software
int xbackconvert (int led); cari kordinat x dari ang- ka led
int ybackconvert (int led); cari kordinat y dari ang- ka led
int xy (int x, int y ); dari koordinat x,y cari  angka led
void spritecreate(void); randomized sprite
void triangle(int matrix[63]); membuat sprite segitiga
void square(int matrix[63]); membuat sprite kotak void lshape(int matrix[63]); membuat sprite bentuk
“L”
void lineshape(int matrix[63]); membuat sprite garis
void zshape(int matrix[63]); membuat sprite bentuk void spriteleft(int matrix[63]); gerakan sprite kekiri satu led
void spriteright(int matrix[63]); gerakan sprite ke kanan satu led
void spritetransform(int matrix[63]); transformasi sprite clockwise 90 derajat
void spritedrop(int matrix[63]); gerakan sprite ke bawah satu led
void addmatrix(int matrixa[63], int matrixb[63]); menambahkan dua matri
void pushmatrix(int matrix[63]); konversi matrix menjadi led nyala dan mati pada dot matrix
void checkpoin (int matrix[63]); cek apakah suatu garis row suda penuh
void spritecreate(int x, int matrix[63]); fungsi untuk memilih berbagai bentuk sprite ketika melakukan transformasi sprite clockwise 90 derajat, bentuk “baru” tidak di hard-code namun di- lakukan transformasi matrix dengan rumus rotasi 90 derajat dari center setiap sprite.

Tidak ada komentar:

Posting Komentar