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