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 adalahpemain 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 dansebuah Atmega328p de- ngan modul arduino. Cara kerja hardware adalah per- tama, komunikasi antara mikrokontroller dan LED
dot matrix adalah menggunakan SPI, yaitu mikrokontro- ller akanmengirim 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 menjadiinterface 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 jauhlebih mudah un- tuk deprogram yaitu dengan mengetahui koordinat led yang
ingin kita nyalakan atau matikan dan menggunakan prinsip scanning untuk menyalakan LED. Pem-
rogramman LCDlebih sulit karena ada berbagai LCD dipasaran dengan cara kerja yang berbeda-beda yang dimanapenjual 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, danyang kedua ada- lah software
implementasi game tetris. Library dot ma- trix LED digunakanuntuk interface software dengan hardware LED dot
matrix. Library tersebut memili- ki fungsiyang dapat diberikan nomor LED dan action yang ingin kita lakukan pada LED tersebut sepertime- 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 LEDdan 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 membuatsistem koordinat dari angka unik LED tersebut.
Ini dilakukan agar pemrograman lebih mudahdilakukan dan agar lebih mudah berko- munikasi dengan
library LED. Untuk mengimplemen- tasi game, software berkerja dengan memberikan suatu matriks 8×8 yang memiliki berbagaiinformasi tentang state game tesrebut. Contohnya, indeks matriks yang memiliki nilai 1 berartiadalah 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 dantransformasi 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 matrixdimanipulasi
tergantu state yang diinginkan, matrix di-push kepada library untuk diintrepetasikan 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 namundi- lakukan transformasi matrix dengan rumus rotasi 90 derajat dari center setiap sprite.
No comments:
Post a Comment