Retro Nokia Snake Game with Arduino
KATA PENGANTAR
Arduino
adalah pengendali mikro single-board yang bersifat open-source, diturunkan dari
Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam
berbagai bidang. Hardwarenya memiliki prose-sor Atmel AVR dan softwarenya memiliki
bahasa pem-rograman sendiri. Tuturial di Buku Retro Nokia Snake Game with
Arduino ini berisi tentang bagaimana ca-ra untuk membuat game snake yang
terkenal pada HP Nokia pada saat dizaman kejayaan HP Nokia tersebut. Disusun
secara sistematis sehingga cocok untuk modul pembelajaran untuk membuatnya
maupun untuk pe-latihan. Dengan bahasa sederhana, code yang sangat membantu
dalam penyusunan game ini, maka belajar akan menjadi lebih mudah dan
menyenangkan. Ma-teri menggunakan Arduino 1.8.3 namun tetap diikuti untuk
pengguna versi diatasnya. Setelah mempelaja-ri dan mempraktekkan materi dibuku
ini, diharapkan anda belajar dari sumber-sumber lain di dunia nyata maupun di
dunia maya. Penulis berharap anda bisa membuat yang lebih baik lagi dari yang
ada pada bu-ku ini.
Jakarta, Juli 2017
Penyusun
Daftar Isi
1 PENDAHULUAN
|
5
|
1.1
|
Latar Belakang
. . . . . . . . . . . . . .
|
5
|
|
1.2
|
Rumusan Masalah . . . . . . . . . . . .
|
6
|
|
1.3
|
Tujuan
. . . . . . . . . . . . . . . . . .
|
7
|
|
2 GAME DESIGN
|
8
|
||
2.1
|
Penjelasan Konsol Game . . . . . . . . .
|
8
|
|
2.2
|
Jenis-Jenis Game . . . . . . . . . . . . .
|
9
|
|
|
2.2.1
|
PC Games . . . . . . . . . . . . .
|
9
|
|
2.2.2
|
Console Games
. . . . . . . . . .
|
10
|
|
2.2.3
|
Handheld Games
. . . . . . . . .
|
10
|
|
2.2.4
|
Mobile Games . . . . . . . . . . .
|
11
|
2.3
|
Genre Game
. . . . . . . . . . . . . . .
|
11
|
|
|
2.3.1
|
Action . . . . . . . . . . . . . . .
|
12
|
|
2.3.2
|
Fighting Game
. . . . . . . . . .
|
13
|
|
2.3.3
|
First Person Shooter (FPS) . . .
|
14
|
|
2.3.4
|
Third Person Shooter (TPS) . . .
|
15
|
|
2.3.5
|
Real Time Strategy (RTS)
. . . .
|
16
|
|
|
2.3.6
|
Role Playing Game (RPG) .
. . .
|
17
|
|
|
2.3.7
|
Adventure . . . . . . . .
. . . . .
|
18
|
|
|
2.3.8
|
Simulasi . . . . . . . .
. . . . . .
|
19
|
|
|
2.3.9
|
Sport Game . . . . . . .
. . . . .
|
20
|
|
|
2.3.10
|
Racing Game . . . . . . . . . . .
|
21
|
|
|
2.3.11
|
Multiplayer Game . . . .
. . . . .
|
22
|
|
2.4
|
Arduino . . . . . . . . . . . . . . . . . .
|
22
|
||
2.5 Sejarah Arduino . . . . . . . . . . . . . .
|
23
|
|||
2.6
|
Macam - Macam
Arduino . . . . . . . .
|
25
|
||
|
2.6.1
|
Arduino USB . . . . . . . . . . .
|
25
|
|
|
|
2.6.1.1
|
Arduino UNO . . . . . .
|
25
|
|
|
2.6.1.2
|
Arduino Duemilanove .
|
27
|
|
|
2.6.1.3
|
Arduino Leonardo . . .
|
29
|
|
|
2.6.1.4
|
Arduino Mega 2560 . . .
|
30
|
|
|
2.6.1.5
|
Arduino Intel Galileo . .
|
32
|
|
|
2.6.1.6 Arduino Pro Micro AT . 34
|
||
|
|
2.6.1.7
|
Arduino Nano R3 . . . .
|
35
|
|
|
2.6.1.8
|
Arduino Mini Atmega .
|
36
|
|
|
2.6.1.9
|
Arduino Mega ADK . .
|
37
|
|
|
2.6.1.10
|
Arduino Esplora . . . .
|
38
|
|
2.6.2
|
Arduino Tipe Serial . . .
. . . . .
|
40
|
|
|
2.6.3
|
Arduino Mega . . . . . .
. . . . .
|
41
|
|
|
2.6.4
|
Arduino Fio . . . . . . .
. . . . .
|
41
|
|
|
2.6.5
|
Arduino Lylypad . . . . . . . . .
|
42
|
|
|
2.6.6
|
Arduino BT . . . . . . . . . . . .
|
43
|
|
|
2.6.7
|
Arduino Nano & Mini . . . . . .
|
43
|
|
2.7
|
Arduino Software IDE . . . . . . . . . .
|
44
|
|
3
|
IMPLEMTASI
|
46
|
||
|
3.1
|
Pendahuluan
. . . . . . . . . . . . . . .
|
46
|
|
|
|
3.1.1
|
Komponen dan Supplies . . . . .
|
46
|
|
|
3.1.2
|
Barang Elektronik . . . . . . . .
|
47
|
|
|
3.1.3
|
Aplikasi dan Online Service . . .
|
47
|
|
3.2
|
Tentang Proyek . . . . . . . . . . . . . .
|
48
|
|
|
3.3
|
Circuito.IO Reply . . . . . . . . . . . . .
|
48
|
|
|
|
3.3.1
|
BoM . . . . . . . . . . . . . . . .
|
48
|
|
|
3.3.2
|
Step-by-step wiring guide . . . .
|
48
|
|
|
3.3.3
|
Code . . . . . . . . . . . . . . . .
|
49
|
|
|
3.3.4
|
Test .
. . . . . . . . . . . . . . .
|
49
|
|
3.4
|
Mengubah Code . . . . . . . . . . . . . .
|
50
|
|
4
|
HASIL GAME
|
61
|
||
5
|
HASIL GAME
|
63
|
||
|
5.1
|
Kesimpulan
. . . . . . . . . . . . . . . .
|
63
|
|
|
5.2
|
Saran . . . . . . . . . . . . . . . . . . . .
|
64
|
6 Lampiran 65
Bab 1
PENDAHULUAN
1.1 Latar Belakang
Dijaman sekarang teknologi sudah berkembang pe-sat, sehingga menyebabkan
sesuatu yang telah usang akan semakin dilupakan seiring berkembangnya zaman
dikarenakan ada suatu hal yang lebih menarik diband-ingkan dengan hal
sebelumnya. sebagai contoh bila kita lihat pada zaman dahulu saat barang
elektronik yaitu handphone keluar, permainan pada handphone pada saat zaman
dahulu yaitu snake, tetris, bounce dll. Bila kita lihat sekarang karena
kemajuan teknologi su-dah pesat, game zaman dahulu itu seakan telah menghi-lang
seakan ditelan bumi.
Arduino
adalah pengendali mikro single-board yang bersifat open-source, diturunkan dari
Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang.
Hardwarenya memiliki prosesor Atmel AVR dan softwarenya memiliki bahasa
pem-rograman sendiri.
Dengan
menggunakan Arduino kita dapat membu-at kembali game yang telah lama hilang
tersebut meng-gunakan sebuah konsol. Untuk mencapai tujuan itu khususnya
membuat game Retro Snake Nokia berbasis Arduino dirancang dan dikembangkan.
1.2 Rumusan Masalah
Berdasarkan
latar belakang diatas, maka penulis memberikan perumusan masalah khususnya yang
ber-kenaan dengan buku Retro Snake Nokia berbasis Ardu-ino. Untuk itu penulis
merumuskan masalah, sebagai berikut :
1. Apa itu Game Console ?
2. Apa yang dimaksud dengan Arduino ?
3. Apa saja tipe-tipe pada Arduino ?
4. Apa itu IDE Arduino ?
5. Bagaimana penggunaan
Arduino sebagai contro-ller Game Console ?
1.3 Tujuan
Berdasarkan
rumusan masalah diatas, maka yang menjadi tujuan pembahasan dalam buku ini
adalah se-bagai berikut :
1. Untuk mengetahui apa itu Game Console.
2. Untuk mengetahui apa yang dimaksud Arduino.
3. Untuk mengetahui tipe-tipe Arduino.
4. Untuk mengetahui IDE Arduino.
5. Untuk mengetahui penggunaan
Arduino sebagai controller Game Console.
Bab 2
GAME DESIGN
2.1 Penjelasan Konsol Game
Konsol permainan adalah sebuah mesin elektronik
yang dirancang khusus untuk memainkan permainan video. Perangkat penampil gra knya dapat berupa mo-nitor komputer atau
televisi, alat pengendalinya dise-but joystick atau controller. Konsol
permainan per-tama kali dibuat Atari, kemudian dilanjutkan dengan Nintendo yang
sempat merajai pasaran pada tahun 1985-1989. Konsol permainan modern saat ini
antara lain adalah PlayStation buatan Sony dan Xbox buatan Microsoft. Konsol
yang berdimensi kecil dan mudah di-bawa ke mana-mana disebut konsol portabel,
misalnya PlayStation Portable yang dirilis oleh Sony pada tahun 2005, dan
Nintendo DS yang diproduksi oleh Nintendo.
2.2 Jenis-Jenis Game
Seiring
dengan perkembangan zaman dan teknolo-gi, dunia game pun ikut terkena imbasnya.
Mulai dari segi konsol, teknologi yang diimplementasikan, mau-pun jenis-jenis
game yang beredar. Dari yang hanya berupa arcade game dan hanya tersedia di
game center di kota-kota besar, sekarang game sudah dapat dima-inkan siapa saja
dan di mana saja. Berbagai pilihan jenis game juga semakin berkembang. Berikut
bebera-pa genre game yang ada saat ini.
2.2.1 PC Games
Gambar 2.1:
Game jenis ini
biasanya dimainkan menggunakan personal computer atau PC Desktop hingga laptop.
2.2.2 Console Games
Gambar 2.2:
Game jenis ini bisa dimainkan
menggunakan konsol game tertentu seperti PlayStation hingga Xbox.
2.2.3 Handheld Games
Game
satu ini bisa dimainkan di console game khu-sus yang mudah dibawa seperti Sony
PSP atau Ninten-do DS.
2.2.4 Mobile Games
Gambar 2.4:
Game
jenis ini hadir semenjak era ponsel atau per-angkat mobile. Game ini memang
dibuat khusus untuk dimainkan pada mobile phone.
2.3 Genre Game
Genre atau ragam permainan video digunakan un-tuk menggolongkan
permainan video berdasarkan in-teraksi bidang permainannya, bukan hanya
perbedaan visual maupun naratif. Permainan video diklasi kasik-an independen berdasarkan pengaturan atau
isi dari sktruktur
permainan tersebut, tidak seperti lm atau-pun buku.
2.3.1 Action
Gambar 2.5:
Game jenis ini menghadirkan tur utama berupa aksi. Dalam action game, pemain
harus memiliki ke-trampilan dan reaksi yang cepat untuk melawan musuh dan
menghindari rintangan. Intinya dalam game ini pemain harus menggunakan rees, akurasi dan waktu yang tepat untuk
menyelesaikan sebuah level game.
2.3.2 Fighting Game
Gambar 2.6:
Game satu ini berisi pertarungan. Dalam game ini, pemain dapat memilih
karakter dengan kemam-puan berbeda-beda. Pemain juga bisa mengeluarkan jurus
dan kemampuan berbeda dari tiap karakter un-tuk mengalahkan musuh. Biasanya
pertarungan hadir secara one on one (satu lawan satu) dalam sebuah arena yang
terbatas. Contoh game jenis ini yang cukup terkenal ialah Mortal Kombat, Street
ghter
hingga Teken.
2.3.3 First Person Shooter (FPS)
Gambar 2.7:
Sesuai
namanya, game jenis ini berisi tembak-menembak. Namun, dalam game ini kamu akan
memainkan tokoh dengan cara pandang orang pertama. Tak heran da-lam beberapa
game, karakter hanya ditampilkan dalam bentuk tangan atau senjata saja. Dalam
game FPS ini kamu akan menemukan berbagai misi yang harus ka-mu selesaikan.
Intinya dalam game ini, pemain mem-butuhkan reex, koordinasi mata dan tangan hingga waktu yang tepat. Contoh game
jenis ini ialah Dead Eect dan
Counter Strike.
2.3.4 Third Person Shooter (TPS)
Gambar 2.8:
Game
ini sebetulnya mirip dengan FPS. Game tem-bak menembak ini hanya berbeda pada
sudut pandang pemain. Biasanya game ini akan menampilkan pemain tampak setengah
badan atau sudut pandang orang ke-tiga. Contoh game ini ialah Dead Space hingga
Hallo.
2.3.5 Real Time Strategy (RTS)
Gambar 2.9:
Game
jenis ini menitikberatkan unsur strategi. Ga-me ini memerlukan kemampuan pemain
untuk memim-pin sebuah pasukan, kemudian mengelola sumber da-ya hingga
membangun peradaban. Tak heran bila ga-me ini memiliki waktu permainan yang
lebih lama dan bisa dikerjakan santai. Setelah pembangunan selesai, kamu bisa
berperang dengan pasukan lain untuk me-rebut kekuasaan. Maka dibutuhkan
strategi yang pas dan hati-hati agar pasukan bisa menang dan wilayah sendiri tidak
diserang.
2.3.6 Role Playing Game (RPG)
Gambar 2.10:
Game
ini menghadirkan gameplay yang mengan-dung unsur leveling. Dalam game ini
pemain akan bebas menjelajah dunia game. Setiap karakter me-miliki kemampuan
dan kekuatan yang berbeda bahk-an dapat berkembang sesuai yang dinginkan
pemain. Game RPG memungkinkan pemain untuk berkompe-tisi hingga berinteraksi
atau bertarung dengan pemain lain. Beberapa Game RPG bahkan membuat pema-in
bisa menentukan ending dari jalan cerita game ter-sebut. Game RPG terbagi
menjadi dua jenis yakni Action RPG dan turn based RPG. Contoh game jenis ini
ialah Ninja Saga dan Final Fantasy.
2.3.7 Adventure
Gambar 2.11:
Game
jenis ini berisi tentang petualangan. Pema-in bisa memainkan karakter untuk
menjelah hutan be-lantara atau menjelajahi sebuah bangunan. Intinya, pemain
akan melalui sebuah misi. Game ini akan me-nekankan jalur cerita dan kemampuan
berpikir pemain untuk menemukan petunjuk berikutnya.
2.3.8 Simulasi
Gambar 2.12:
Game
dengan genre ini hadir dengan konsep yang mirip kenyataan. Semua faktor dalam
game akan di-buat semirip dunia nyata, ada yang menceritakan kehi-dupan manusia
atau kehidupan menjadi seorang wali-kota membangun sebuah kota. Dalam game ini
semua keputusanmu berpengaruh pada karakter yang dima-inkan. Inti dari game ini
membuat pemain harus ber-pikir untuk mendirikan, membangun hingga mengatasi
masalah dengan dana terbatas.
2.3.9 Sport Game
Gambar 2.13:
Game
jenis ini hadir untuk para pemain yang gemar olah raga. Game ini memiliki
gameplay berbagai jenis olahraga di dunia. Intinya, pemain akan melakukan
pertandingan olahraga secara virtual. Conton game jenis ini ialah Pro Evolution
Soccer hingga NBA 2015.
2.3.10 Racing Game
Gambar 2.14:
Game
ini berisi game balapan atau kemampuan mengemudi baik motor dan mobil atau
kendaraan lain-nya. Game ini akan memacu adrenalin pemain untuk menjadi yang
tercepat di sirkuit. Game jenis ini con-tohnya, Racing game dan Need for Speed.
2.3.11 Multiplayer Game
Gambar 2.15:
Jenis
game ini terbilang sedang tren di pasar In-donesia. Dalam game ini pemain akan
bermain secara bersamaan dengan lebih dari 2 orang bahkan bisa ri-buan orang
bila memainkannya secara online. Pemain akan berada di sebuah dunia virtual
untuk melawan musuh. Rata-rata game ini menggunakan konsep stra-tegi walaupun
ada pula genre lainnya.
2.4 Arduino
Arduino
adalah pengendali mikro single-board yang bersifat open-source, diturunkan dari
Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam
berbagai bidang. Hardwarenya memiliki prose-sor Atmel AVR dan softwarenya
memiliki bahasa pem-rograman sendiri.
Arduino juga merupakan platform hardware terbu-ka yang ditujukan kepada
siapa saja yang ingin mem-buat purwarupa peralatan elektronik interaktif
berda-sarkan hardware dan software yang eksibel dan mu-dah digunakan. Mikrokontroler diprogram menggu-nakan
bahasa pemrograman arduino yang memiliki ke-miripan syntax dengan bahasa
pemrograman C. Kare-na sifatnya yang terbuka maka siapa saja dapat meng-unduh
skema hardware arduino dan membangunnya.
Arduino menggunakan keluarga mikrokontroler AT Mega yang dirilis oleh
Atmel sebagai basis, namun ada individu/perusahaan yang membuat clone arduino
de-ngan menggunakan mikrokontroler lain dan tetap kom-patibel dengan arduino
pada level hardware. Untuk eksibilitas,
program dimasukkan melalui bootloader meskipun ada opsi untuk membypass
bootloader dan menggunakan downloader untuk memprogram mikro-kontroler secara
langsung melalui port ISP.
2.5 Sejarah Arduino
Semuanya
berawal dari sebuah thesis yang dibuat oleh Hernando Barragan, di institute
Ivrea, Italia pa-da tahun 2005, dikembangkan oleh Massimo Banzi dan David
Cuartielles dan diberi nama Arduin of Ivrea. La-lu diganti nama menjadi Arduino
yang dalam bahasa Italia berarti teman yang berani.
Tujuan awal dibuat Arduino adalah untuk membuat perangkat mudah dan
murah, dari perangkat yang ada saat itu. Dan perangkat tersebut ditujukan untuk
para siswa yang akan membuat perangkat desain dan interaksi. Visi awalnya aja
udah mulia kan.
Saat
ini tim pengembangnya adalah Massimo Ba-nzi, David Cuartielles, Tom Igoe,
Gianluca Martino, David Mellis, dan Nicholas Zambetti. Mereka mengu-payakan 4
hal dalam Arduino ini, yaitu:
1. Harga terjangkau
2. Dapat dijalankan diberbagai
sistem operasi, Win-dows, Linux, Max, dan sebagainya.
3. Sederhana, dengan bahasa
pemograman yang mudah bisa dipelajari orang awam, bukan untuk orang teknik
saja.
4. Open Source, hardware maupun software.
Sifat
Arduino yang Open Source, membuat Arduino berkembang sangat cepat. Dan banyak
lahir perangkat-perangkat sejenis Arduino. Seperti DFRDuino atau Freeduino, dan
kalau yang lokal ada namanya CipaDu-ino yang dibuat oleh SKIR70, terus ada
MurmerDuino yang dibuat oleh Robot Unyil, ada lagi AViShaDuino yang salah satu
pembuatnya adalah Admin Kelas Ro-bot.
Sampai
saat ini pihak resmi, sudah membuat ber-bagai jenis-jenis Arduino. Mulai dari
yang paling mu-dah dicari dan paling banyak digunakan, yaitu Arduino Uno.
Hingga Arduino yang sudah menggunakan ARM Cortex, beebentuk Mini PC. Dan sudah
ada ratusan ribu Arduino yang digunakan di gunakan di dunia pa-da tahun 2011.
Dan untuk hari ini, yang bisa kamu hitung sendiri ya. Dan Arduino juga sudah
banyak dipakai oleh perusahaan besar.
Contohnya Google meng-gunakan Arduino untuk Accessory Development Kit, NASA
memakai Arduino untuk prototypin, ada lagi Large Hadron Colider memakai Arduino
dalam bebe-rapa hal untuk pengumpulan data. Dan banyak yang bertanya juga
Arduino ini menggunakan bahasa pemo-graman apa? Arduino sebenarnya menggunakan
ba-has C, yang sudah disederhanakan. Sehingga orang awam pun bisa menjadi
seniman digital, bisa mempe-lajari Arduino dengan mudahnya
2.6 Macam - Macam Arduino
Arduino memiliki beberapa macam atau tipe sesu-ai dengan turnya masing-masing yang dapat dimanfa-atkan
sesuai kebutuhan dalam pembuatan sebuah alat atau robot. Berikut beberapa macam
dari Arduino de-ngan tur yang dimilikinya :
2.6.1 Arduino USB
Arduino
USB, yaitu mikrokontroler Arduino dengan menggunakan USB sebagai antar muka
pemrograman atau komunikasi komputer. Contoh:
2.6.1.1 Arduino UNO
Arduino
Uno adalah papan mikrokontroler berda-sarkan ATmega328 (datasheet). Ini
memiliki 14 digital pin input / output (dimana 6 dapat digunakan seba-gai output
PWM), 6 input analog, resonator keramik 16 MHz, koneksi USB, jack
listrik, header ICSP, dan tombol reset. Ini berisi semua yang diperlukan untuk
mendukung mikrokontroler, hanya menghubungkannya ke komputer dengan kabel USB atau
power itu dengan adaptor AC-DC atau baterai untuk memulai menggu-nakannya.
Uno berbeda dari semua papan sebelumnya di
bah-wa itu tidak menggunakan chip driver FTDI USB-to-serial. Sebaliknya, tur Atmega16U2 (Atmega8U2 sam-pai versi R2)
diprogram sebagai konverter USB-to-serial.
Revisi
ke 2 Uno memiliki resistor menarik garis 8U2 HWB line to ground, sehingga lebih
mudah untuk di-masukkan ke dalam mode DFU. Revisi ke 3 memiliki tur- tur baru berikut :
1,0 pinout: menambahkan SDA
dan pin SCL yang dekat dengan pin AREF dan dua pin baru lain-nya ditempatkan
dekat dengan pin RESET, yang IOREF yang memungkinkan perisai untuk bera-daptasi
dengan tegangan yang tersedia dari pap-an. Di masa depan, perisai akan
kompatibel de-ngan kedua papan yang menggunakan AVR yang beroperasi dengan 5V
dan dengan Arduino Due yang beroperasi dengan 3.3V. Yang kedua ada-lah pin
tidak terhubung, yang disediakan untuk tujuan masa depan.
Stronger RESET sirkuit.
Atmega 16U2 menggantikan 8U2.
Kata "Uno"
berarti satu di Italia dan diberi nama un-tuk menandai peluncuran Arduino 1.0.
Arduino Uno dan versi 1.0 akan menjadi
versi referensi Arduino, ber-gerak maju. Arduino Uno adalah yang terbaru dalam
serangkaian USB Arduino papan, dan model referensi untuk platform Arduino,
untuk perbandingan dengan versi sebelumnya, lihat indeks Arduino papan.
Gambar 2.16:
2.6.1.2 Arduino Duemilanove
Arduino Arduino Duemilanovemilanove adalah pap-an mikrokontroler
berdasarkan Atmel SAM3X8E ARM-Cortex-M3 CPU. Ini adalah pertama papan Arduino
didasarkan pada 32-bit mikrokontroler ARM inti. Ini memiliki 54 digital pin
input / output (yang 12 dapat digunakan sebagai output PWM), 12 analog input, 4
UART (hardware port serial), jam 84 MHz, USB OTG koneksi yang mampu, 2 DAC
(digital ke analog) , 2 TWI, jack listrik, header SPI, header JTAG, tombol
reset dan tombol hapus.
Peringatan:
Tidak seperti papan Arduino lainnya, Arduino Duemilanove berjalan pada 3.3V.
Tegangan maksimum yang I / O pin dapat mentolerir adalah 3.3V. Memberikan
tegangan yang lebih tinggi, seper-ti 5V ke I / O pin dapat merusak papan.
Arduino
Duemilanove berisi semua yang diperluk-an untuk mendukung mikrokontroler, hanya
menghu-bungkannya ke komputer dengan kabel micro-USB atau power dengan adaptor
AC-DC atau baterai untuk me-mulainya. Arduino Duemilanove kompatibel dengan
semua perisai Arduino yang bekerja di 3.3V dan telah sesuai dengan 1,0 Arduino
pinout. Arduino Duemila-nove mengikuti 1.0 pinout :
TWI: SDA dan SCL pin yang
dekat dengan pin AREF.
Arduino
IOREF pin yang memungkinkan perisai terpasang dengan kon gurasi yang tepat untuk beradaptasi dengan
tegangan yang diberikan oleh Arduino.
Hal ini memungkinkan
kompatibilitas perisai dengan papan 3.3V seperti papan Karena dan AVR berbasis
yang beroperasi pada 5V. Arduino Duemilanove me-miliki forum khusus untuk
membahas papan.
Arduino
Duemilanove memiliki inti ARM 32-bit yang dapat mengalahkan papan
mikrokontroler 8-bit yang khas. Perbedaan yang paling signi kan adalah :
32-bit inti, yang memungkinkan operasi pada 4
byte data luas dalam jam CPU tunggal. (untuk informasi lebih lanjut lihat int
jenis halaman).
Kecepatan CPU di 84Mhz.
96 KByte SRAM.
512 KByte memori Flash untuk kode.
DMA controller, yang dapat
meringankan CPU dari melakukan tugas-tugas intensif memori.
Gambar 2.17:
2.6.1.3 Arduino Leonardo
Arduino Leonardo adalah papan mikrokontroler ber-dasarkan AT mega32u4.
memiliki 20 digital pin input / output (yang 7 dapat digunakan sebagai output
PWM dan 12 input analog sebagai), osilator kristal 16 MHz, koneksi micro USB,
jack listrik, header ICSP, dan tom-bol reset. Berisi semua yang diperlukan
untuk men-dukung mikrokontroler, hanya menghubungkannya kekomputer dengan kabel USB
atau power dengan adap-tor AC-DC atau baterai untuk memulai menggunak-kannya.
Leonardo
berbeda dari semua papan sebelumnya di bahwa ATmega32u4 telah built-in USB
komunika-si, menghilangkan kebutuhan untuk prosesor sekunder. Hal ini
memungkinkan Leonardo tampil sebagai kom-puter yang terhubung sebagai mouse dan
keyboard, se-lain virtual (CDC) serial / COM port. Ini juga memi-liki implikasi
lain untuk perilaku modul.
Gambar 2.18:
2.6.1.4 Arduino Mega 2560
Arduino
mega 2560 adalah papan mikrokontroler ATmega 2560 berdasarkan (datasheet)
memiliki 54 di-gital pin input / output (dimana 15 dapat digunakan sebagai
output PWM), 16 analog input, 4 UART (ha-rdware port serial), osilator kristal
16 MHz, koneksi USB, jack listrik, header
ICSP, dan tombol reset. Ini berisi semua yang diperlukan untuk mendukung
mik-rokontroler,hanya menghubungkannya ke komputer de-ngan kabel USB atau power
dengan adaptor AC-DC atau baterai. Arduino Mega kompatibel dengan seba-gian
besar shield,dirancang untuk Arduino Duemilano-ve atau Diecimila.
Arduino Mega2560 berbeda dari semua board se-belumnya ,tidak menggunakan
chip driver FTDI USB-to-serial. Sebaliknya, tur ATmega16U2 (ATmega8U2 dalam revisi 1 dan
revisi 2 papan) diprogram sebagai konverter USB-to-serial.
Revisi
2 dewan Mega2560 memiliki resistor menarik garis 8U2 HWB ke tanah, sehingga
lebih mudah untuk dimasukkan ke dalam mode DFU.
Revisi 3 dari dewan
memiliki tur- tur baru berikut
:
1,0 pinout: menambahkan SDA
dan pin SCL yang dekat dengan pin AREF dan dua pin baru lain-nya ditempatkan
dekat dengan pin RESET, yang IOREF yang memungkinkan perisai untuk bera-daptasi
dengan tegangan yang tersedia dari pap-an. Di masa depan, perisai akan kompatibel
baik dengan dewan yang menggunakan AVR yang ber-operasi dengan 5V dan dengan
Arduino Due yang beroperasi dengan 3.3V. Yang kedua adalah pin tidak terhubung,
yang disediakan untuk tujuan masa depan.
Stronger RESET sirkuit.
Atmega 16U2 menggantikan 8U2.
Gambar 2.19:
2.6.1.5 Arduino Intel Galileo
Galileo
adalah papan mikrokontroler berdasarkan Intel ® Quark SoC X1000 Application
Processor, 32-bit sistem Pentium-kelas Intel pada sebuah chip (da-tasheet). Ini
adalah board pertama berdasarkan ar-sitektur Intel ® dirancang untuk menjadi
hardware dan software pin-kompatibel dengan perisai Arduino dirancang untuk Uno
R3. Digital pin 0-13 (dan AREF berdekatan dan pin GND), Analog input 0 sampai
5, header listrik, ICSP header, dan pin port UART (0 dan 1), semua di lokasi
yang sama seperti pada Ardu-ino Uno R3. Hal ini juga dikenal sebagai Arduino
1.0 pinout.
Galileo
dirancang untuk mendukung shield yang beroperasi di kedua tegangan 3.3V atau
5V. Tegang-an operasi inti Galileo adalah 3.3V. Namun, jumper di board
memungkinkan terjemahan tegangan 5V di pin I / O. Hal ini memberikan dukungan untuk 5V
shield Uno dan perilaku default. Dengan beralih posisi jum-per, terjemahan
tegangan dapat dinonaktifkan untuk menyediakan operasi 3.3V di pin I / O.
Tentu
saja, board Galileo juga perangkat lunak yang cocok dengan Arduino Software
Development Enviro-nment (IDE), yang membuat kegunaan dan pengenal-an snap.
Selain hardware Arduino dan kompatibilitas software, arduino.
Galileo memiliki beberapa industri PC standar I / O port dan tur untuk memperluas penggunaan asli dan
kemampuan luar ekosistem perisai Arduino. Se-buah ukuran penuh Slot mini-PCI
Express, pelabuh-an 100Mb Ethernet, slot Micro-SD, RS-232 port serial, port
host USB, port USB Client, dan 8MByte NOR Flash.
2.6.1.6 Arduino Pro Micro AT
Arduino
Mikro adalah board mikrokontroler ber-dasarkan ATmega32u4 (lihat datasheet),
yang dikem-bangkan bersama dengan Adafruit. Ini memiliki 20 di-gital pin input
/ output (yang 7 dapat digunakan seba-gai output PWM dan 12 input analog
sebagai), osilator 16 MHz kristal, koneksi USB mikro, header ICSP, dan tombol
reset. Ini berisi semua yang diperlukan untuk mendukung mikrokontroler, hanya
menghubungkannya ke komputer dengan kabel USB mikro untuk memulai-nya. Dengan
memiliki faktor bentuk yang memungkin-kannya untuk dapat dengan mudah
ditempatkan pada papan tempat memotong roti.
Arduino
Micro mirip dengan Arduino Leonardo in bahwa ATmega32u4 telah built-in USB
komunikasi, de-ngan menghilangkan kebutuhan untuk prosesor sekun-der. Hal ini
memungkinkan Micro muncul ke komputer yang terhubung sebagai mouse dan
keyboard, selain virtual (CDC) serial / COM port. Ini juga memiliki implikasi
lain untuk pemanfaatan board.
Gambar 2.21:
2.6.1.7 Arduino Nano R3
Arduino
Nano R3 adalah sebuah papan kecil, leng-kap, dan ramah-papan tempat memotong
roti berda-sarkan ATmega328 (Arduino Nano 3.x) atau ATme-ga168 (Arduino Nano
2.x). Ini memiliki lebih atau kurang fungsi yang sama dari Arduino Duemilanove,
tetapi dalam paket yang berbeda. Ini tidak memili-ki hanya colokan listrik DC,
dan bekerja dengan kabel USB Mini-B bukan satu standar. Arduino Nano diran-cang
dan diproduksi oleh Gravitech.
Gambar 2.22:
2.6.1.8 Arduino Mini Atmega
Arduino ProMini ditujukan untuk pengguna ting-kat lanjut yang
membutuhkan eksibilitas,
biaya ren-dah, dan ukuran kecil. Muncul dengan minimum kom-ponen (tidak ada
on-board USB atau pin header) untuk menjaga biaya turun. Ini adalah pilihan
yang baik un-tuk papan Anda ingin meninggalkan board tertanam dalam proyek.
Harap dicatat bahwa ada dua versi dari board: satu yang beroperasi pada 5V
(seperti keba-nyakan papan Arduino), dan salah satu yang berope-rasi pada 3.3V.
Pastikan untuk memberikan yang benar daya dan penggunaan komponen yang operasi
tegang-an cocok dengan board.
Gambar 2.23:
2.6.1.9 Arduino Mega ADK
Arduino
MEGA ADK adalah board mikrokontroler AT mega 2560 berdasarkan (datasheet).
Memiliki an-tarmuka USB untuk terhubung dengan ponsel berbasis Android,
berdasarkan MAX3421e IC. Ini memiliki 54 digital pin input / output (dimana 15
dapat digunakan sebagai output PWM), 16 analog input, 4 UART (ha-rdware port
serial), osilator kristal 16 MHz, koneksi USB, jack listrik, header ICSP, dan
tombol reset.
Arduino MEGA ADK berdasarkan Mega 2560.Mi-rip dengan Mega 2560 dan Uno,
hotel ini memiliki se-buah ATmega8U2 diprogram sebagai konverter USB-to-serial.
Revisi ke 2 dari board ADK memiliki resistor menarik garis 8U2 HWB ke tanah,
sehingga lebih mu-dah untuk dimasukkan ke dalam mode DFU. Revisi 3 dari dewan
memiliki tur- tur baru berikut :
1,0 pinout: menambahkan SDA
dan pin SCL yang dekat dengan pin AREF dan dua pin baru lain-nya ditempatkan
dekat dengan pin RESET, yang IOREF yang memungkinkan perisai untuk bera-daptasi
dengan tegangan yang tersedia dari pap-an. Di masa depan, shield akan
kompatibel ba-ik dengan arduino yang menggunakan AVR yang beroperasi dengan 5V
dan dengan Arduino Due yang beroperasi dengan 3.3V. Yang kedua ada-lah pin
tidak terhubung, yang disediakan untuk tujuan pengembangan.
Gambar 2.24:
2.6.1.10 Arduino Esplora
Arduino
Esplora adalah papan mikrokontroler ber-asal dari Arduino Leonardo. Esplora
berbeda dari semua papan Arduino sebelumnya dalam hal ini menyediakan sejumlah built-in,
siap digunakan set sensor onboard untuk interaksi. Ini dirancang untuk orang
yang ingin bangun dan berjalan dengan Arduino tanpa ha-rus belajar tentang
elektronik dari pertama. Untuk langkah-demi-langkah pengantar Esplora,
memeriksa Memulai dengan Esplora panduan.
Esplora
onboard suara dan cahaya output, dan be-berapa sensor input, termasuk joystick,
slider, sensor suhu, accelerometer, mikrofon, dan sensor cahaya. Hal ini juga
memiliki potensi untuk memperluas kemampu-an dengan dua input dan output konektor
Tinkerkit, dan soket untuk layar LCD warna TFT.
Seperti
papan Leonardo, yang Esplora menggunak-an mikrokontroler AVR Atmega32U4 dengan
16 MHz osilator kristal dan koneksi USB mikro mampu bertin-dak sebagai
perangkat USB klien, seperti mouse atau keyboard.
Di
sudut kiri atas papan ada tombol tekan reset, yang dapat Anda gunakan untuk
me-restart board ardu-ino. Ada empat LED Status :
Pada [Hijau] menunjukkan
apakah board mene-rima catu daya.
L [yellow] terhubung
langsung ke mikrokontroler, dapat diakses melalui pin 13.
RX Dan TX [kuning] menunjukkan data yang
di-kirim atau diterima melalui komunikasi USB De-wan berisi semua yang
diperlukan untuk mendu-kung mikrokontroler, hanya menghubungkannya ke komputer
dengan kabel USB untuk memulai-nya.
Gambar 2.25:
2.6.2 Arduino Tipe Serial
Arduino
Serial, yaitu jenis mikrokontroler arduino yang menggunakan RS232 sebagai antar
muka pemro-graman atau komunikasi computer.
2.6.3 Arduino Mega
Arduino MEGA, yaitu mikrokontroler Arduino de-ngan spesi kasi yang lebih tinggi, dilengkapi tambah-an pin
digital, pin analog, port serial dan sebagainya. Arduino Mega berbasis
ATmega1280 dengan 54 digital input/output.
Gambar 2.27:
2.6.4 Arduino Fio
Arduino
Fio, yaitu mikrokontroler Arduino yang di-tujukan untuk penggunaan nirkabel.
Arduino Fio ini menggunakan ATmega328P sebagai basis kontrolernya.
Gambar 2.28:
2.6.5 Arduino Lylypad
Arduino
Lilypad, yaitu mikrokontroler dengan ben-tuk yang melingkar. Contoh: LilyPad
Arduino 00, Li-lyPad Arduino 01, LilyPad Arduino 02, LilyPad Ardu-ino 03,
LilyPad Arduino 04.
2.6.6 Arduino BT
Arduino
BT, mikrokontroler Arduino yang meng-andung modul Bluetooth untuk komunikasi
nirkabel.
Gambar 2.30:
2.6.7 Arduino Nano & Mini
Arduino
Nano dan Arduino Mini, merupakan je-nis arduino berbentuk kompak dan digunakan
bersa-ma breadboard. Contoh: Arduino Nano 3.0, Arduino Nano 2.x, Arduino Mini
04, Arduino Mini 03, Arduino Stamp 02.
Gambar 2.31:
2.7 Arduino Software IDE
IDE
itu merupakan kependekan dari Integrated De-veloptment Enviroenment, atau
secara bahasa mudah-nya merupakan lingkungan terintegrasi yang digunak-an untuk
melakukan pengembangan. Disebut sebagai lingkungan karena melalui software
inilah Arduino di-lakukan pemrograman untuk melakukan fungsi-fungsi yang
dibenamkan melalui sintaks pemrograman. Ardu-ino menggunakan bahasa pemrograman
sendiri yang menyerupai bahasa C. Bahasa pemrograman Ardui-no (Sketch) sudah
dilakukan perubahan untuk memu-dahkan pemula dalam melakukan pemrograman dari bahasa
aslinya. Sebelum dijual ke pasaran, IC mik-rokontroler Arduino telah ditanamkan
suatu program bernama Bootlader yang berfungsi sebagai penengah antara compiler
Arduino dengan mikrokontroler.
Arduino
software IDE dibuat dari bahasa pemro-graman JAVA. Arduino IDE juga dilengkapi
dengan library C/C++ yang biasa disebut Wiring yang mem-buat operasi input dan
output menjadi lebih mudah. Arduino IDE ini dikembangkan dari software
Proces-sing yang dirombak menjadi Arduino IDE khusus un-tuk pemrograman dengan
Arduino.
Gambar 2.32:
Bab 3
IMPLEMTASI
3.1 Pendahuluan
Dalam pembuatan Retro Snake NokianGame wi-th Arduino, komponen yang
paling dibutuhkan sudah tentu Arduino itu sendiri. Selanjutnya ada beberapa
komponen yang nantinya akan dijelaskan sebagai beri-kut:
3.1.1 Komponen dan Supplies
Arduino uno genuino uno
Mini Speaker - PC Mount 12mm 2.048kHz
Graphic LCD 84x48 - Nokia 5110
Lithium Ion Battery - 2200mAh 7.4v
PSP 2-Axis Analog Thumb Joystick
Momentary Pushbutton Switch - 12mm Square
3.1.2 Barang Elektronik
Layar Nokia 5110
Arduino Uno
Piezo Speaker
Joystick
Push Button
Switch
Battre Lithium
Untuk perakitan listriknya
cukup sederhana. Dalam link circuito.io, kita sudah memilih semua bagian
di-butuhkan untuk proyek tersebut. anda tentu saja me-nambahkan komponen
tambahan jika anda mau. Se-telah anda memilih semua yang anda butuhkan, hanya
tinggal klik on generate.
3.1.3 Aplikasi dan Online Service
Circuit.io
Arduino
3.2 Tentang Proyek
Super
Mario, Tetris, Pac-Man. Tidakkah kamu ber-harap bisa memainkan kembali game ini
untuk meng-habiskan waktu luang anda didepan layar hitam de-ngan resolusi
minimal dan memaikan game yang sa-ngat adiktif? Nah, setelah kami menambahkan
layar Nokia ke circuito.io, proyek ini takkan terelakkan. Ka-mi bangga
mempersembahkan kreasi kami yaitu game Nokia Snake yang dibungkus dalam kotak
Arduino!
3.3 Circuito.IO Reply
Circuito reply mempunyai 4 tahapan:
3.3.1 BoM
Daftar
semua komponen yang Anda perlukan un-tuk proyek ini. anda mungkin
bertanya-tanya mengapa komponen baru "muncul" pada daftar ini,
walaupun anda belum memilihnya. Nah, bagian ini diperlukan untuk proyek anda
seperti bagian inti yang anda pilih, dan otomatis ditambahkan ke daftar suku
cadang anda setelah dihitung oleh smart engine kami.
3.3.2 Step-by-step wiring guide
Ini
adalah bagian yang menyenangkan. Setelah me-nempatkan semua komponen pada
papan, anda bisa mulai mengaitkannya satu sama lain dan ke Arduino. Ikuti saja
wizard, langkah demi langkah, semudah itu!
Pastikan untuk membaca
komentar yang pop-up di sisi kiri bar, karena mungkin sangat membantu.
3.3.3 Code
Pada
bagian ini anda memiliki kode contoh yang dibuat secara otomatis untuk
mengintegrasikan anta-ra semua komponen yang anda pilih. Kode ini akan membantu
anda menguji bahwa anda memasang sir-kuit dengan benar.
Ikuti
langkah dibawah ini, yang juga muncul pada circuito.io reply:
Download Firmware.zip
Extract semua le ke folder baru dengan nama Firmware
Buka Firmware.ino menggunakan Arduino IDE yang bisa didownload di web resminya.
Pastikan board terhubung
dengan computer anda via USB.
Di Arduino IDE jangan lupa
untuk select correct Port dan Board di tool menu.
Upload Firmware.ino ke board.
3.3.4 Test
Setelah anda
mengupload kode untuk boardnya, ma-ka anda bisa mengujinya. Semua langkah untuk
menguji
secara spesi k komponen yang anda gunakan, diu-raikan di bagian "test" dari
reply circuito.io. Setelah semuanya diatur dengan benar, Anda bisa melambaik-an
selamat tinggal ke circuito.io reply, sampai ketemu dilain waktu.
3.4 Mengubah Code
Jadi
segala sesuatu di sirkuit dan kode Anda ter-lihat hebat. Sudah waktunya untuk
mengambil kode kustom yang kami buat khusus untuk proyek Snake.
Buka le rmware.ino yang mencakup semua li-braries dari
circuito.io reply.
Pada tab rmware, simpan // Include Libraries dan // Pin
De nitions.
Ganti sisa kode pada tab rmware, dengan kode di bawah ini:
#include <EEPROM.h>
// Global variables and de nes
//de ne Nokia LCD contrast and dimentions(in pi-xels)
#de ne LCD_CONTRAST 70 #de ne LCD_SIZE_COL 84 #de ne LCD_SIZE_ROW 48
bool dl = false, dr = false, du = false, dd =
false;
// to check in which direction
the snake is currently moving
51
|
uint8_t x[200],
y[200], i, slength, tempx = 10, tem-py = 10, xx, yy;
unsigned int high;
uint8_t bh, bl;
uint8_t xegg, yegg;
int freq, tb;
bool l, r, u, d, p;
unsigned long time = 280,
beeptime = 50; int score = 0, ag = 0
#include <EEPROM.h>
// object initialization
Adafruit_PCD8544
nokiaLcd(NOKIALCD_PIN_DC, NOKIALCD_PIN_CS, NOKIALCD_PIN_RST);
Button pushButton(PUSHBUTTON_PIN_1);
//
Setup
the essentials for your circuit to work. It runs rst every time your circuit is powered with
ele-ctricity.
void setup()
{
//Serial.begin(9600);
pinMode(JOYSTICKPSP_PIN_X, INPUT); pinMode(JOYSTICKPSP_PIN_Y, INPUT);
//Initialize Nokia instance nokiaLcd.begin(LCD_SIZE_COL, LCD_SIZE_ROW);
nokiaLcd.clearDisplay(); nokiaLcd.setContrast(LCD_CONTRAST); //Adjust
display
contrast pushButton.init();
slength = 8; //Start with
snake length 8 xegg = (nokiaLcd.width()) / 2;
yegg = (nokiaLcd.height()) / 2
nokiaLcd.setTextSize(2); //Initial nokiaLcd
nokiaLcd.setTextColor(BLACK);
nokiaLcd.setCursor(10, 15);
nokiaLcd.setCursor(10, 40);
nokiaLcd.display();
delay(4000);
nokiaLcd.clearDisplay();
for (i = 0; i <=
slength; i++) //Set starting coo-rdinates of snake
{
x[i] = 25 - 3 * i;
y[i] = 10;
}
for (i = 0; i < slength; i++) //Draw the
snake
{
nokiaLcd.drawCircle(x[i], y[i], 1, BLACK);
}
nokiaLcd.display();
dr = true; //Going to move right initially
}
//
Main
logic of your circuit. It de nes the inte-raction between the components you selected. After setup,
it runs over and over again, in an eternal loop.
void loop()
{
movesnake(); //This is called endlessly
}
void movesnake()
{
int X_val =
analogRead(JOYSTICKPSP_PIN_X); int Y_val = analogRead(JOYSTICKPSP_PIN_Y);
l = X_val < 400 ? 1 : 0;
d = X_val > 650 ? 1 : 0;
r = Y_val < 400 ? 1 : 0;;
u = Y_val >= 650 ? 1 : 0;
p = pushButton.onPress();
if (p == HIGH) //Pause game for 5 seconds
{
nokiaLcd.clearDisplay();
nokiaLcd.setTextColor(BLACK); nokiaLcd.setCursor(25, 10);
nokiaLcd.setTextSize(1); nokiaLcd.print("Pause"); nokiaLcd.display();
delay(1000);
while (!pushButton.onPress());
nokiaLcd.clearDisplay();
redraw();
//Redraw the snake and egg at the same position as it was
}
if
(millis() % time == 0) //this condition becomes true after every 'time'
milliseconds...millis() returns the time since launch of program
{
direct();
if (ag == 0) //ag 0 means no directional key has been pressed
in the last 'time' milliseconds
{
if (dr == true) {
tempx
= x[0] + 3; // so the snake moves one step in the direction it is moving
currently
tempy = y[0];
}
if (dl == true) {
tempx = x[0] - 3; //The new
coordinates of head of snake goes in tempx,tempy
tempy = y[0];
}
if (du == true) {
tempy = y[0] - 3;
tempx = x[0];
}
if (dd == true) {
tempy = y[0] + 3;
tempx = x[0];
}
}
ag = 0;
checkgame(); //Check if
snake has met egg or co-incided with itself
checkegg();
if (tempx <= 0) {
tempx = 84 + tempx; //If
the new coordinates are out of screen, set them accordingly
}
else if (tempx >= 84) {
tempx = tempx - 84;
}
if (tempy <= 0) {
tempy = 48 + tempy;
}
else if (tempy >= 48) {
tempy = tempy - 48;
}
for (i = 0; i <=
slength; i++) //Change the coo-rdinates of all points of snake
{
xx = x[i];
yy = y[i]; x[i] = tempx; y[i]
= tempy; tempx = xx; tempy = yy;
}
drawsnake(); //Draw the snake and egg at the new
coordinates
}
}
void checkgame() //Game over checker
{
for
(i = 1; i < slength; i++) //Checking if the co-ordinates of head have become
equal to one of the non head points of snake
{
if (x[i] == x[0] && y[i] == y[0])
{
bh = EEPROM.read(1);
bl = EEPROM.read(0);
high = (((0x00 + bh) << 8) + bl);
if (score > high)
{
high = score;
bh = (high >> 8);
bl = high & 0x;
EEPROM.write(1, bh);
EEPROM.write(0, bl);
}
nokiaLcd.clearDisplay();
nokiaLcd.setTextColor(BLACK);
nokiaLcd.setTextSize(1);
nokiaLcd.setCursor(20, 12);
nokiaLcd.print("Game Over");
nokiaLcd.setCursor(15, 30);
nokiaLcd.print("Score: ");
nokiaLcd.print(score);
nokiaLcd.setCursor(15, 40);
nokiaLcd.print("High: ");
nokiaLcd.print(high);
nokiaLcd.display();
beep(20, 5000);
nokiaLcd.clearDisplay();
slength = 8; //Resetting the values
score = 0; time
= 280; redraw(); //Restart game by drawing snake with the resetted length and
score
}
}
}
void checkegg() //Snake meets egg
{
if
(x[0] == xegg or x[0] == (xegg + 1) or x[0] == (xegg + 2) or x[0] == (xegg -
1)) //Snake in close vicinity of egg
{
if
(y[0] == yegg or y[0] == (yegg + 1) or y[0] == (yegg + 2) or y[0] == (yegg -
1))
{
score += 1; //Increase
length,score and increase movement speed by decreasing 'time'
slength += 1;
if (time >= 90)
{
time -= 5;
}
nokiaLcd. llRect(xegg, yegg, 3, 3, WHITE); //De-lete the
consumed egg
nokiaLcd.display();
beep(35, beeptime); //Beep
with a sound of 35Hz for 'beeptime' ms
xegg = random(1, 80); //Create New egg randomly
yegg = random(1, 40);
}
}
}
void direct() //Check if
user pressed any keys and change direction if so
{
if (l == HIGH and dr ==
false) //when key LEFT is pressed ,L will become low
{
dl = true; du = false; dd = false;
tempx = x[0] - 3; //Save
the new coordinates of head in tempx,tempy
tempy = y[0];
ag = 1;
//Do not change direction any further for the ongoing 'time' milliseconds
}
else if (r == HIGH and dl == false)
{
dr = true;
du = false;
dd = false; tempx = x[0] + 3; tempy = y[0]; ag = 1;
}
else if (u == HIGH and dd == false)
{
du = true; dl = false; dr =
false; tempy = y[0] - 3; tempx = x[0]; ag = 1;
}
else if (d == HIGH and du == false)
{
dd = true; dl = false; dr =
false; tempy = y[0] + 3;
tempx = x[0]; ag = 1;
}
else if (p == HIGH) //Pause game for 5 seconds
{
nokiaLcd.clearDisplay();
nokiaLcd.setTextColor(BLACK);
nokiaLcd.setCursor(25, 10); nokiaLcd.setTextSize(1);
nokiaLcd.print("Pause");
nokiaLcd.display();
delay(1000);
while (!pushButton.onPress()); nokiaLcd.clearDisplay();
redraw(); //Redraw the
snake and egg at the same position as it was
}
}
void drawsnake() //Draw
snake and egg at newly changed positions
{
nokiaLcd. llRect(xegg, yegg, 3, 3, BLACK); //Draw egg at
new pos
nokiaLcd.drawCircle(x[0],
y[0], 1, BLACK); //Draw new head of snake
nokiaLcd.drawCircle(x[slength],
y[slength], 1, WHI-TE); //Delete old tail of snake
nokiaLcd.display();
}
void redraw() //Redraw ALL POINTS of snake and
egg
{
nokiaLcd. llRect(xegg, yegg, 3, 3, BLACK); for (i = 0; i
< slength; i++) {
nokiaLcd.drawCircle(x[i], y[i], 1, BLACK);
}
nokiaLcd.display();
}
void beep (int freq, long
tb) //This function creates a sound of frequency 'freq' Hz and for a duration
of 'tb'
milliseconds
{
int x;
long delayAmount =
(long)(500 / freq); //Calcula-te time duration of half cycle
long loopTime = (long)(tb /
(delayAmount * 2)); //Calculate no. of cycles
for (x = 0; x <
loopTime; x++) // One iteration produces sound for one cycle
{
digitalWrite(PIEZOSPEAKER_PIN_SIG,
HIGH); //High for half cycle
delay(delayAmount);
digitalWrite(PIEZOSPEAKER_PIN_SIG, LOW);
//Low for half cycle
delay(delayAmount);
} delay(2); //a little
delay to make all notes sound separate
}
=== Kode Program ===
Bab 5
HASIL GAME
5.1 Kesimpulan
Pada percobaan membuat permainan snake ini da-pat dirangkum bahwa
penulis merancang sebuah model konsol yang mampu mengendalikan permainan
hand-phone dengan beberapa komponen yang saling meleng-kapi satu sama lain dan
bekerja dengan baik.
Oleh karena itu, dapat diasumsikan bahwa kompo-nen yang tadinya terpisah
dapat mencapai kinerja yang lebih baik saat pengguna bekerja sama satu sama
la-in untuk mengirim dan menerima data, daripada saat mereka bersaing untuk
mendapatkan akses ke sumber daya yang sama.
5.2 Saran
Untuk
kedepannya, dengan menggunakan cara se-perti ini diharapkan untuk membuat yang
lebih baik lagi dari yang kami buat.
Daftar Pustaka
[1] https://create.arduino.cc/projecthub/circuito-io-team/retro-nokia-snake-game-with-arduino-f8163b
[2] https://id.wikipedia.org/wiki/Arduino
[3] https://id.wikipedia.org/wiki/Genre_permainan_video
[4] https://id.wikipedia.org/wiki/Konsol_permainan
[5] http://www.pricebook.co.id/article/review/2016/01/26/3593/
4-jenis-dan-11-genre-game-yang-mana-favorit-
kamu
[6] http://tentangarduino.blogspot.co.id/2014/09/macam-macam-arduino-iniakan-saya.html
Komentar