Kamis, 17 Agustus 2017

Game berbasis Arduino : Pong

PENGANTAR TEKNOLOGI GAME

OLEH : KELOMPOK SOFTSKILL (3IA04)

DISUSUN OLEH :
FARIZ KANZI
HARUN AL RASYID
HELMI FADHIEL
JAMALUDIN SALAM
RENDY APRIAN





Bab 1
PENDAHULUAN

Permainan video (bahasa Inggris: video game) ada- lah permainan yang menggunakan interaksi dengan antarmuka pengguna melalui gambar yang dihasilkan oleh piranti video.Permainan video umumnya menyediakan sistem penghargaan misalnya skoryang dihitung berdasarkan tingkat keberhasilan yang dicapai dalam menyelesaikan tugas-tugas yang ada di dalam permainan. Arduino adalah sebuah platform open source (sumber terbuka) yang digunakan untuk membuat proyek - proyek elektronika. Arduino terdiri dari dua bagian utama yaitu sebuah papan sirkuit fisik 6(sering disebut juga dengan mikrokontroler) dan sebuah perangkat lunak atau IDE (Integrated Development Environment) yang berjalan pada komputer.Perangkat lunak ini sering disebut Arduino IDE yang digunakan untuk menulis dan menguploadkode dari komputer ke papan fisik (hardware) Arduino.
Arduino mampu berinteraksi dengan tombol, LED, motor, speaker, GPS, kamera, internet, ponsel pintar bahkan dengan televisi. Selain itu, mikrokontroler bisa menjadi bahan untuk membuat sebuah robot, baik robot biasa maupun luar biasa. User juga bisa mengkrea-sikan mikrokontroler dalam pembuatan game-game seru. Komponen utama di dalam papan Arduino adalah 7sebuah microcontroller 8 bit dengan merk AT - mega yang dibuat oleh perusahaan Atmel Corporation. Berbagai papan Arduino menggunakan tipe ATmega yang berbeda-beda tergantung dari spesi#kasinya. Sedangkan untuk macam macam jenis atau tipe-tipe arduino yang ada dipasaran ialah: Arduino USB, Arduino tipe serial, Arduino Mega, Arduino Fio, Arduino Lylypad, Arduino
BT, Arduino Nano dan Mini. Berikut game yang menggunakan Arduino: Retro Nokia Snake Game with Arduino, Arduino Pong, TechTris, Arduino Controlled Pinball Machine, Theragym, GamePad using Android mobile sensors and Arduino, dsb. Pong adalah permainan video generasi pertama yang dirilis sebagai permainan arkade yang di- 8operasikan dengan koin yang dikembangkan oleh Atari Inc. pada tanggal 29 November, 1972.

Pong adalah permainan video olahraga dua dimensi yang mensimulasikan sebuah permainan tenis meja. Sistem ini adalah permainan saling berusaha memasukkan bola ke area lawan menggunakan paddle masing-masing player, yang diatur dengan dua joystick. Permainan ini dapat dimainkan dengan dua orang. Untuk memenangkan permainan, sang pemain harusmemukul bola tersebut sampai sang lawan tidak bisa memukul bola tersebut. Sistem game Pong dapat diimplementasikan menggunakan Arduino Uno, layar OLED, dan dua joystick. Buku ini ditulis untuk memudahkan pengembang game yang ingin berkreasi dengan Arduino Uno untuk membuat game yang beda dari biasanya. Buku ini juga cocok untuk pembaca yang baruterjun ke dunia Arduino dan pengembangan game karena pembahasan pada buku ini cukup sederhana. Semoga setelah membaca buku ini, pembaca dapat mengerti dan tertarik untuk mempelajari Arduino untuk pembuatan game.


Bab 2
GAME DESIGN
2.1 Pong
Pong adalah permainan video generasi pertama yang dirilis sebagai permainan arkade yang dioperasikan dengan koin yang dikembangkan oleh Atari Inc. pada tanggal 29 November, 1972. Pong adalah permainan video olahraga dua dimensi yang mensimulasikan sebuah permainan tenis meja. Sistem ini adalah permainan saling berusaha memasukkan bola ke area lawan menggunakan paddle masing-masing player, yang diatur dengan dua joystick. Permainan ini dapat dimainkan dengan dua orang. Untuk memenangkan permainan, sang pemain harus memukul bola tersebut sampai sang lawan tidak bisa memukul bola tersebut. Pong merupakan salah satu permainan arkade
perrtama yang dirilis secara komersial. Permainan ini meraih keuntungan empat kali lebih banyak dibanding mesin yang dikendalikan dengan koin lainnya. Keuntungan ini yang membuat Atari menerima banyak pesanan Pong dan memberikan pemasukan yang cukup besar untuk Atari. Pada tahun 1973, Atari memenuhi 2.500 order dan pada tahun 1974, Atari menjual mesin Pong sebanyak
8.000 unit. Karena kesuksesan ini, pada tahun 1977, Atari merilis Home Pong, yaitu versi Pongyang dapat dihubungkan dengan televisi. Home Pong pun sukses menggebrak pasar. Sekitar 150.000 12unit terjual pada musim liburan. Hingga saat ini, Pong menjadi game yang sangat legendaris.

 2.2Objek pada Pong
Pong hanya memilik 3 buah objek sederhana berbentuk persegi panjang. Dua persegi panjang digunakan sebagai alat pemukul (paddle) milik masing-masing pemain. Satu persegi panjang lainnya digunakan sebagai bola yang harus masuk ke area lawan. Tiap pemain diberikan paddle untuk menangkis bola yang datang. Paddle tersebut berbentuk persegi panjang pipih dengan panjang yang tidak melebihi area permainan dan cukup kecil agar bola tetap dapat melewatipaddle jika pemain tidak dapat menangkisnya. Paddle ini hanya dapat bergerak ke arah kiri dankanan pemain. Bola pada Pong dibuat kecil agar pemain sulit untuk menangkisnya. Bola ini dapat bergerak ke 9 arah mata angin. Saat bola menabrak paddle, bola tersebut memantul ke arah bersebrangan menuju pemain lain.

Gambar 2.1: Pemukul (Paddle) dan bola



2.3 Gameplay Pong
Tujuan dari game ini tidak jauh berbeda dari tenis meja. Pemain harus menjatuhkan bola di posisi lawan. Hanya saja pada Pong, pemain harus membuat bola masuk ke area belakang lawan. Saat permainan dimulai, bola akan bergerak ke salah satu pemain. Lalu pemain harus menangkisnya dengan paddle agar bola tidak masuk ke areanya. Setelah bola mengenai paddle pemain, bola tersebut memantul dan meuju pemain lain. Jika pemain dapat memasukan bola ke area belakang lawan, pemain tersebut mendapat poin.

2.4 Gamifcation

2.4.1 Pengertian Gamifcation
Gamifcation atau dalam bahasa Indonesia gamifkasi adalah penggunaan dari teknik desain permainan, permainan berpikir dan permainan mekanik untuk meningkatkan non-game konteks. Biasanya gamifkasi berlaku untuk non-game aplikasi dan proses, untuk mendorong orang untuk mengadopsi mereka, atau untuk mempengaruhi bagaimana mereka digunakan.Gamifcation menggunakan mekanisme berbasis game, estetika dan pemikiran game untuk mengaktifkan orang, memotivasi tindakan, mendorong pembelajaran, dan memecahkan masalah.

2.4.2 Elemen Gamifcation
Ada beberapa elemen dari pengertian gamifcation yang perlu diperhatikan :

1.Berbasis game = bertujuan menciptakan suatu sistem dimana pembelajar, pemain, konsumen, dan karyawan aktif menghadapi tantangan yang didefinisikan melalui aturan-aturan,interaktifitas, dan feedback yang menghasilkan suatu penilaian yang terukur dan mendorongreaksi emosional.
2.Mekanisme = mekanisme memainkan game yang dimaksud di sini adalah munculnya level,mendapatkan lencana, sistem poin, dan batasan waktu. Inilah elemen-elemen yang digunakandalam game.
3. Estetika = Tanpa grafis yang interaktif dan pengalaman permainan yang dirancang secarabaik, maka Gamifcation tidak akan sukses.
4. Pemikiran game = Ini elemen terpenting dari gamification. Ini merupakan gagasan merubahpengalaman sehari-hari seperti jogging atau berlari menjadi suatu kegiatan yang memilikielemen- elemen kompetisi,kerja sama, eksplorasi dan bercerita (storytelling).
5.Aktif = Tujuan eksplisit Gamifcation adalah menarik perhatian pembelajar dan melibatkannya.Keterlibatan dan keaktifan seorang individu menjadi fokus utama gamification.
6. Orang = dapat berupa pembelajar, konsumen atau pemain.
7. Memotivasi tindakan = membangkitkan energi dan memberikan arah, tujuan, atau makna bagi perilaku dan tindakan.
8. Mendorong pembelajaran = hal ini berjalan karena banyak elemen Gamifcation berdasarkanpsikologi pendidikan.
9. Memecahkan masalah = Gamifcation dapat berpotensi tinggi menolong memecahkan masalah.

2.4.3 Perbedaan Gamifcation dan Game
·         Game merupakan suatu unit yang utuh.
·         Game memiliki kegiatan awal, pertengahan, dan akhir yang jelas sebagai satu keutuhan.
·         Game memiliki suatu kondisi dimana harus ada kemenangan yang jelas.
·         Pemain tahu ketika orang lain dan dirinya telah menyelesaikan Game.
·         Game memiliki elemen game yang banyak.
·         Game memuat mekanisme untuk berapa kali usaha yang dimainkan; tantangan; reward
system.
·         Gamifcation bukanlah satu unit game yangutuh.
·         Gamifcation bertujuan menggunakan elemen game untuk mendorong pembelajar sibuk dengan isi materinya dan menunjukkan kemajuannya untuk mencapai tujuan pembelajaran.



2.4.4 Jenis Gamification
·         Structural Gamification
Menerapkan elemen game untuk mendorong pembelajar menyimak konten materi dengan tanpa merubah konten materi menjadi terlihat seperti game namun struktur di sekelilingkonten itulah yang tampak seperti game. Tujuan utama tipe ini adalah untuk memotivasipembelajar menyimak isi materi dan menyibukkan diri dengan materinya dalam prosespembelajaran yang terlihat tidak seperti game namun sambil meraih berbagai reward. Elemen game yang paling umum pada tipe ini adalah badge, points, leaderboards, dan level. Contoh: adanya penugasan mengumpulkan jenis-jenis bunga dan akan mendapatkan badge.
·         Content Gamification
Menerapkan elemen game dan pemikiran game dalam isi materi sehingga isi materi berubahterlihat seperti game. Contoh: menambah elemen cerita dalam pengajaran suatu materi atau memulai suatu pengajaran dengan suatu 21tantangan alih-alih menyampaikan sederet tujuan mata kuliah. Elemen dalam Content Gamifcation :
1. Cerita
2. Tantangan
3. Keingintahuan Karakter
4. Interakti#tas
5. Feedback
6. Bebas untuk gagal (it's OK to fail)

2.4.5 Kelebihan
Gamification bekerja dengan membuat teknologi yang lebih menarik,dengan mendorong pengguna untuk terlibat dalam perilaku yang diinginkan, dengan menunjukkan jalan untuk penguasaan dan otonomi, dengan membantu untuk memecahkan masalah dan tidak menjadi gangguan, dan dengan mengambil keuntungan dari kecenderungan psikologis manusia 'untuk terlibat dalam game'.

2.4.6 Kekurangan
1.   Motivasi yang didapatkan hanya bersifat superparsial. Motivasi yang didapatkan hanya dari permainan bukan dari produk yang seharus- nya dihasilkan. Program seperti frequent #yer miles menyediakan beberapa manfaat nyata bagi aktivitas dan perkembangan. Namun Gamification akan menurunkan nilai insentif yang didapat karena hal ini hanya dijadikan perayaan digital atau cara untuk menyombongkan diri. 
2. Terkadang metode untuk mencapai tingkatan tertinggi menjadi satu-satunya aspek yang dianggap penting. Hal ini menjadi masalah akibat kesalahan arah motivasional. Pengguna menetapkan motivasi mereka hanya untuk menjadi yang terbaik namun melupakan apa yang
sebenarnya menjadi penawaran dari situs yangdimaksud. hal ini mungkin terlihat tidak relevan bagi perusahaan karena pengguna terus menghabiskan waktu mereka namun tidak terbentuk loyalitas dan ikatan terhadap brand seperti yang diharapkan perusahaan.

3.     Gamification menghilangkan banyak esensi dari permainan itu sendiri. Ini menjadi seperti teknologi cut and paste dan kurangnya orisinilitas. Permainan adalah tentang menemukan seuatu dan melewati rintangan. Memang pada situs yang menggunakan Gamification terdapat beberapa tingkatan namun bukan layaknyapermainan tradisional. Dimana pengembang situs justru menampilkan fitur mudah, biasa, dan membosankan sehingga diharapkan peng-una akan lebih mudah untuk menang. 
4.      Gamification dangkal dapat menghasilkan pengalaman yang biasa saja dan memiiki nilai rendah terhadap ROI (Return of Investment; pengambalian modal) sehingga terkadang gam kasi tidak menjual dan justru menjatuhkan nilai situs.



4.4.7        Gamifcation Game Pong
Pong Menuntut pemain untuk mendapatkan poin lebih banyak dari lawannya dengan memasukan bola ke area lawan. Pemain pun dibuat sulit untuk menjaga areanya dengan cara membuat paddle tidak terlalu besar, sehingga bola dapat dengan mudah melewati paddle jika pemain lengah. Pong juga dimainkan oleh dua orang agar jiwa kompetitif pemain meningkat karena dia melawan manusia bukan melawan melawan NPC atau AI. Hal seperti itu dilakukan agar pemain terus bermain Pong dan membujuk mereka untuk menang melawan pemain lain.


2.5 Arduino
Arduino adalah nama keluarga papan mikrokontroler yang awalnya dibuat oleh perusahaan Smart Projects. Salah satu tokoh penciptanya adalah Massimo Banzi. Arduino adalah pengendali mikro single-board yang bersifat opensource, diturunkan dari Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardwarenya memiliki prosesor Atmel AVR dan softwarenya memiliki bahasa pemrograman sendiri. Arduino juga merupakan platform hardware terbuka yang ditujukan kepada siapasaja yang ingin membuat purwarupa peralatan elektronik interaktif berdasarkan hardware dan software yang fleksibel dan mudah digunakan. Mikrokontroler diprogram menggunakan bahasa pemrograman arduino yang memiliki kemiripan syntax dengan bahasa pemrograman C. Karena sifatnya yangterbuka maka siapa saja dapatmengunduh skemahardware arduino dan membangunnya. Arduino menggunakan keluarga mikrokontroler AT Megayang dirilis oleh Atmel sebagai basis, namun ada individu/perusahaan yang membuat clone arduinodengan menggunakan mikrokontroler lain dan tetapkompatibel dengan arduino pada level hardware. Untuk eksibilitas, program dimasukkan melalui bootloader meskipun ada opsi untuk membypass bootloader dan menggunakan downloader untuk memprogram mikrokontroler secara langsung melalui port ISP.Berbagai jenis kartu arduino tersedia, antara lain Arduino Uno, Arduino Diecimila, ArduinoDuemilanove, Arduino Leonardo, Arduino Mega dan Arduino Nano. Walaupun ada berbagai jenis kartu arduino, secara prinsip pemrogrman yang diperlukan menyerupai. Hal yang membedakan adalah perlengkapan fasilitas dan pin - pin yang perlu digunakan.


2.6 Sejarah Arduino
Semuanya berawal dari sebuah thesis yang dibuat oleh Hernando Barragan, di institute Ivrea, Italia pada  9tahun 2005, dikembangkan oleh Massimo Banzi dan David Cuartielles dan diberi nama Arduinof Ivrea.Lalu diganti nama menjadi Arduino yang dalam bahasa Italia berarti teman yang berani. Arduino adalah pengendali mikro singleboard yang bersifat opensource, diturunkan dari W iring platform, dirancang untuk memudahkan penggu naan elektronik dalam berbagai bidang Hardwarenya memiliki prosesor Atmel AVR dan sofwarenya memiliki bahasa pemrograman sendiri. Sifat Arduino yang Open Source, membuat Ar- duino berkembang sangat cepat. Dan banyak lahir perangkat-perangkat sejenis Arduino. Seperti DF0uino atau Freeduino, dan kalau yang local ada namanya CipaDuino yang dibuat oleh SKIR70, 30terus ada MurmerDuino yang dibuat oleh Robot Unyil, ada lagi AViShaDuino yang salah satu pembuatnya adalah Admin Kelas Robot. Sampai saat ini pihak resmi, sudah membuat berbagai jenis-jenis Arduino.
Mulai dari yang paling mudah 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 pada tahun 2011.Dan untuk hari ini, yang bisa kamu hitung sendiri ya. Dan Arduino juga sudah banyak dipaka oleh perusahaan besar. Contohnya Google menggu- akan Arduino untuk Accessory Development Kit,
NASA memakai Arduino untuk prototypin, ada lagi Large Hadron Colider memakai Arduino dalam beberapa hal untuk pengumpulan data. Dan banyak yang bertanya juga Arduino ini menggunakan bahasa pemograman apa? Arduino sebenarnya menggunakan bahas C, yang sudah disederhanakan. Sehingga orang awam pun bisa menjadi seniman digital, bisa mempelajari Arduino dengan mudah.

2.7 Macam - Macam Arduino
Arduino memiliki beberapa macam atau tipe sesuai dengan #turnya masing-masing yang dapat dimanfaatkan sesuai kebutuhan dalam pembuatan sebuah alat atau robot. Berikut beberapa macam dari Arduino dengan fitur yang dimilikinya :
2.7.1 Arduino USB
Arduino USB, yaitu mikrokontroler Arduino dengan menggunakan USB sebagai antar muka pemrograman atau komunikasi komputer.
  •  Port USB digunakan untuk menghubungkan Arduino UNO dengan computer
  •  Colokkan catu daya eksternal digunakan untuk memasok sumberdaya listrik untuk Arduino UNO ketika tidak dihubungkan dengan komputer. Jika arduino UNO dihubungkan ke komputer melalui kabel USB pasokan daya listrik dialirkan oleh komputer.
  • Pin digial mempunyai label 0 sampai dengan Disebut dengan pin digital karena mempunyai isyarat digital, yakni berupa 0 atau 1. Dalam praktik, nilai 0 dinyatakan dengan tegangan 0 volt dan nilai 1 dinyatakan dengan tegangan 5 volt.
  • Pin analog berarti bahwa pin - pin ini mem punyai nilai yang bersifat analog. Dalam program, nilai setiap pin analog yang berlaku sebagai masukkan berkisar antara 0 sampai dengan 1023.
  • Mikro kontroler yang digunakan arduino UNO adalah Atmega328.
  • Ada 2 pin yang digunakan untuk memasok catudaya ke komponen elektronis yang digunakan dalam menangani proyek, misalnya sensor gas, sensor jarak dan relay.Tegangan yang tersedia 3,3 volt dan 5 volt. Komponen - komponen elektronis yang diberi tegangan oleh arduino UNO adalah yang memerlukan arus kecil. Sebagai contoh, motor DC yang menarik arus lebih dari 500 mA harus meng- gunakan catu daya tersendiri. Arduino Uno dilengkapi dengan static random access memory (SRAM) berukuran 2kb untuk memegang data, #ash memory berukuran 32kb, dan erasable porgrammable read-only memory (EEPROM). SRAM digunakan untuk menampung data atau hasil pemrosesan data selama arduino menerima pasokancatu daya. Flash memory untuk menaruh program yang anda buat. EEPROM digunakan untuk menaruh program bawaan dari Arduino Uno dan sebagian lagi dapat dimanfaatkan untuk menaruh data milik anda secara permanen. Terdapat beberapa macam pada Arduino USB sebagai berikut :


2.7.1.1 Arduino UNO
Arduino Uno adalah papan mikrokontroler berdasarkan ATmega328 (datasheet). Arduino Uno berukuran sebesar kartu kredit. Walaupun berukuran kecil seperti itu, papan tersebut mengandung mikrokontroler dan sejumlah input/output (I/O) yang memudahkan pemakai untuk menciptakan berbagai proyek elektronika yang dikhususkan untuk menanganitujuan tertentu. Ini memiliki 14 digital pin input / output (dimana 6 dapat digunakan sebagaioutput 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, hanyamenghubungkannya ke komputer dengan kabel USB atau power itu dengan adaptor AC-DC atau baterai untuk memulai menggunakannya. Uno berbeda dari semua papan sebelumnya dibahwa itu tidak menggunakan chip driver FTDI USB-to- serial. Sebaliknya, fitur 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 dimasukkan ke dalam mode DFU. Revisi ke 3 memiliki fitur-fitur baru berikut :
  •   1,0 pinout:

menambahkan SDA dan pin SCL yang dekat dengan pin AREF dan dua pin baru lainnya ditempatkan dekat dengan pin RESET, yang IOREF yang memungkinkan perisai untuk beradaptasi dengan tegangan yang tersedia dari papan. Di masa depan, perisai akan kompatibel dengan kedua papan yang menggunakan AVR yang beroperasi 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. Kata "Uno"berarti satu di Italia dan diberi nama untuk menandai peluncuran Arduino 1.0. Arduino Uno dan versi 1.0 akan menjadi versi referensi Arduino, bergerak 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.2: Arduino Uno

2.7.1.2 Arduino Due
Arduino Arduino Duemilanovemilanove adalah papan 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 yan lebih tinggi, seperti 5V ke I / O pin dapat merusak papan. Arduino Duemilanove berisi semua yang diperlukan untuk mendukung mikrokontroler, hanya menghubungkannya ke komputer dengan kabel micro-USB atau power dengan adaptor AC - DC atau baterai untuk memulainya. Arduino Duemilanove kompatibel dengan semua perisai Arduino yang bekerja di 3.3V dan telah sesuai dengan 1,0 Arduino pinout. Arduino Duemilanove 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 danAVR berbasis yang beroperasi pada 5V. Arduino Duemilanove memiliki forum khusus untuk membahas papan. Arduino Duemilanove memiliki inti ARM 32-bit yang dapat mengalahkan papan mikrokontroler 8-bit yang khas. Perbedaan yang paling signifikan adalah :

o   32-bit inti, yang memungkinkan operasi pada 4 byte data luas dalam jam CPU tunggal. (untuk 42informasi lebih lanjut lihat int jenis halaman).
o   Kecepatan CPU di 84Mhz.
o   96 KByte SRAM.
o   512 KByte memori Flash untuk kode.
o   DMA controller, yang dapat meringankan CPU dari melakukan tugas-tugas intensif memori.

2.7.1.3 Arduino Leonardo
Arduino Leonardo adalah papan mikrokontroler berdasarkan AT megau4. 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 tombol reset.Berisi semua yang diperlukan untuk mendukung mikrokontroler, hanya menghubungkannya ke komputer dengan kabel USB atau power dengan adaptor AC-DC atau baterai untuk memulai menggunakannya. Leonardo berbeda dari semua papan sebelumnya di bahwa ATmega32u4 telah built-in USB komunikasi, menghilangkan kebutuhan untuk prosesor sekunder. Hal ini memungkinkan Leonardo tampil sebagai komputer yang terhubung sebagai mouse dan keyboard, selain virtual (CDC) serial / COM port. Ini juga memiliki implikasi lain untuk perilaku modul.

2.7.1.4 Arduino Mega 2560
Arduino mega 2560 adalah papan mikrokontroller ATmega 2560 berdasarkan (datasheet) memiliki 54 di- gital pin input / output (dimana 15 dapat digunakan sebagai output PWM), 16 analog input, 4 UART (hardware port serial), osilator kristal 16 MHz, koneksi USB, jack listrik,header ICSP, dan tombol reset. Ini berisi semua yang diperlukan untuk mendukung mikrokontroler,hanya menghubungkannya ke komputer den gan kabel USB atau power dengan adaptor AC - DC atau baterai. Arduino Mega kompatibel dengan sebagian besar shield dirancang untuk Arduino Duemilanove atau Diecimila. Arduino Mega2560 berbeda dari semua board sebelumnya ,tidak menggunakan chip driver FTDI USB- to-serial. Sebaliknya, fitur 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 fitur-fitur baru
berikut :
  •  1,0 pinout:

menambahkan SDA dan pin SCL yang dekat dengan pin AREF dan dua pin baru 46lainnya ditempatkan dekat dengan pin RESET, yang IOREF yang memungkinkan perisai untuk beradaptasi dengan tegangan yang tersedia dari papan. Di masa depan, perisai akan kompatibel baik dengan dewan yang menggunakan AVRyang beroperasi 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.

3.      Atmega 16U2 menggantikan 8U2. 472.7.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 (datasheet). Ini adalah board pertama berdasarkan arsitektur 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 Arduino 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. Tegangan 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 be- ralih posisi jumper, 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 Environment (IDE), yang membuat kegunaan dan pengenalan snap. Selain hardware Arduino dan kompatibilitas software, arduino. Galileomemiliki beberapa industri PC standar I / O port dan #tur untuk memperluas penggunaan asli dan kemampuan luar ekosistem perisai Arduino. Sebuah ukuran penuh Slot mini-PCI Express, pelabuhan 100Mb Ethernet, slot Micro-SD, RS-232 port serial, port host USB, port USB Client, dan 8Mbyte NOR Flash.

2.7.1.6 Arduino Pro Micro AT
Arduino Mikro adalah board mikrokontroler berdasarkan ATmega32u4 (lihat datasheet), yang dikembangkan bersama dengan Adafruit. Ini memiliki 20 digital pin input / output (yang 7 dapat digunakan sebagai 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 memungkinkannya untuk dapat dengan mudah ditempatkan pada papan tempat memotong roti. Arduino Micro mirip dengan Arduino Leonardo in bahwa ATmega32u4 telah built-in USB komunikasi, dengan menghilangkan kebutuhan untuk prosesor sekunder. 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.

2.7.1.7 Arduino Nano R3
Arduino Nano R3 adalah sebuah papan kecil, lengkap, dan ramah-papan tempat memotong roti berdasarkan 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 memiliki hanya colokan listrik DC, dan bekerja dengan kabel USB ini-B bukan satu standar. Arduino Nano dirancang dan diproduksi oleh Gravitech.

2.7.1.8 Arduino Mini Atmega
Arduino ProMini ditujukan untuk pengguna tingkat lanjut yang membutuhkan #eksibilitas,  iaya rendah, dan ukuran kecil. Muncul dengan minimum komponen (tidak ada on-board USB atau pin header) untuk menjaga biaya turun. Ini adalahpilihan yang baik untuk papan Anda ingin meninggalkan board tertanam dalam proyek. Harap di catat bahwa ada dua versi dari board: satu yang beroperasi pada 5V (seperti kebanyakan papan Arduino), dan salah satu yang beroperasi pada 3.3V. Pastikan untuk memberikan yang benar daya dan penggunaan komponen yang operasi tegangan cocok dengan board

2.7.1.9 Arduino Mega ADK 
Arduino MEGA ADK adalah board mikrokontroler AT mega 2560 berdasarkan (datasheet).Memiliki antarmuka USB untuk terhubung dengan ponsel berbasis Android, berdasarkan MAX3421e 54IC. Ini memiliki digital pin input / output (dimana 15 dapat digunakan




BAB 2.
GAME DESIGN

4 UART (hardware port serial), osilator Kristal 16 MHz, koneksi USB, jack listrik, header ICSP,dan tombol reset. Arduino MEGA ADK berdasarkan Mega 2560.Mirip dengan Mega 2560 dan Uno, hotel ini memiliki sebuah ATmega8U2 diprogram sebagai konverter USB- to-serial. Revisi ke 2 dari board ADK memiliki resistor menarik garis 8U2 HWB ke tanah, sehingga lebih mudah untuk dimasukkan ke dalam mode DFU. Revisi 3 dari dewan memiliki fitur-fitur baru berikut :
  •  1,0 pinout:

menambahkan SDA dan pin SCL 55yang dekat dengan pin AREF dan dua pin baru lainnya ditempatkan dekat dengan pin RESET, yang IOREF yang memungkinkan perisai untuk beradaptasi dengan tegangan yang tersedia dari papan. Di masa depan, shield akan kompatibel baik dengan arduino yang menggunakan AVR yang beroperasi dengan 5V dan dengan Arduino Due yang beroperasi dengan 3.3V. Yang kedua adalah pin tidak terhubung, yang disediakan untuk tujuan pengembangan.
  •   Arduino Esplora

Arduino Esplora adalah papan mikrokontroler berasal 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 harus belajar tentang elektronik dari pertama. Untuk langkah-langkah pengantar Esplora, memeriksa Memulai dengan Esplora panduan. Esplora onboard suara dan cahaya output, dan beberapa sensor input, termasuk joystick, slider, sensor suhu, accelerometer, mikrofon, dan sensor cahaya. Hal ini 57juga memiliki potensi untuk memperluas kemampuan dengan dua input dan output konektor Tinkerkit, dan soket untuk layar LCD warna TFT. Seperti papan Leonardo, yang Esplora menggunakan mikrokontroler AVR Atmega32U4 dengan16 MHz osilator kristal dan koneksi USB mikro mampu bertindak 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 arduino. Ada empat LED Status :
a.       Pada [Hijau] menunjukkan apakah board menerima catu daya.
b.      L [yellow] terhubung langsung ke mikrokontroler, dapat diakses melalui pin 13.
c.   RX Dan TX [kuning] menunjukkan data yang dikirim atau diterima melalui komunikasi USB Dewan berisi semua yang diperlukan untuk mendukung mikrokontroler, hanya menghubungkannya ke komputer dengan kabel USB untuk memulainya.

2.7.2 Arduino Tipe Serial
Arduino Serial, yaitu jenis mikrokontroler arduino yang menggunakan RS232 sebagai antarmuka pemrograman atau komunikasi computer.

Gambar 2.12: Arduino Tipe Serial

2.7.3 Arduino Mega
Arduino MEGA, yaitu mikrokontroler Arduino dengan spesifikasi yang lebih tinggi, dilengkapitambahan pin digital, pin analog, port serial dan sebagainya. Arduino Mega berbasis ATmega1280 dengan 54 digital input/output.

Gambar 2.13: Arduino Mega

  
2.7.4 Arduino Fio
Arduino Fio, yaitu mikrokontroler Arduino yang ditujukan untuk penggunaan nirkabel. ArduinoFio ini menggunakan ATmega328P sebagai basis kontrolernya.

Gambar 2.14: Arduino Fio

2.7.5 Arduino Lylypad
Arduino Lilypad, yaitu mikrokontroler dengan bentuk yang melingkar. Contoh: LilyPad Arduino 00, LilyPad Arduino 01, LilyPad Arduino 6102, LilyPad Arduino 03, LilyPad Arduino 04.

Gambar 2.15: Arduino Lylypad

2.7.6 Arduino BT
Arduino BT, mikrokontroler Arduino yang mengandung modul Bluetooth untuk komunikasi nirkabel.

Gambar 2.16: Arduino BT

2.7.7 Arduino Nano & Mini
Arduino Nano dan Arduino Mini, merupakan jenis arduino berbentuk kompak dan digunakanbersama breadboard. Contoh: Arduino Nano 3.0, Arduino Nano 2.x, Arduino Mini 04, Arduino Mini 03, Arduino Stamp 02 .

Gambar 2.17: Arduino Nano & Mini

2.8 Arduino Software IDE
IDE itu merupakan kependekan dari Integrated Developtment Enviroenment, atau secara Bahasa mudahnya merupakan lingkungan terintegrasi yang digunakan untuk melakukan pengembangan. Disebut sebagai lingkungan karena melalui software inilah Arduino dilakukan pemrograman untuk melakukan fungsi-fungsi yang dibenamkan melalui sintaks pemrograman. Arduino menggunakan bahasa pemrograman sendiri yang menyerupai bahasa C. Bahasa pemrograman Arduino (Sketch) sudah dilakukan perubahan untuk memudahkan pemula dalam melakukan pemrograman dari bahasa aslinya. Sebelum dijual ke pasaran, IC mikrokontroler Arduino telah ditanamkan suatu program bernama Bootlader yang berfungsi sebagai penengah antara compiler Arduino dengan mikrokontroler.

Gambar 2.18: Tampilan Arduino IDE

Arduino software IDE dibuat dari bahasa pemrograman JAVA. Arduino IDE juga dilengkapidengan library C/C++ yang biasa disebut Wiring yang membuat operasi input dan output menjadi lebih mudah. Arduino IDE ini dikembangkan dari software Processing yang dirombak menjadi Arduino IDE khusus un- tuk pemrograman dengan Arduino.




Bab 3
PEMBUATAN GAME

3.1 Komponen-Komponen yang Dibutuhkan
Dalam pembuatan game Pong dengan Arduino, komponen yang pasti dibutuhkan adalah Arduino itu sendiri. Arduino yang digunakan adalah Arduino UNO karena Arduino ini umum digunakan dan mudah untuk didapat. Selain Arduino terdapat beberapa komponen lain yang dibutuhkan agar game ini menarik perhatian pemain yaitu:
a.       Arduino TFT
b.      breadboard
c.       beberapa kabel jumper
d.      2 buah potentiometer sebesar 10 kilo ohm

3.1.1 Arduino TFT
Arduino TFT merupakan layar LCD TFT dengan slot microSD di belakangnya. Layar ini digunakan  untuk menampilkan antar muka Pong. Pin pada Arduino TFT didesain agar muat dengan soket yang ada pada Arduino Esplora dan Arduino Robot, tetapi hal ini tidak menutup kemungkinan untuk digunakan dengan board Arduino lainnya.

Gambar 3.1: Arduino TFT dan konektornya

Secara default, orientasi layar Arduino TFT adalah horisontal dengan posisi atas layar tepat di bawah tulisan SD CARD. Layar ini berukuran 160px x 128px dan dapat menampilkan warna 16 bit.
Channel merah dan biru memiliki resolusi 5-bit, channel hijau memiliki resolusi 6-bit. Sehingga terdapat 32 level untuk merah dan biru dan 64 level untuk hijau.

3.1.2 Potentiometer
Potentiometer merupakan alat dengan tiga terminal yang digunakan dengan cara memutarnya.Alat ini umum ditemukan pada alat-alat elektronik seperti spe- aker yang digunakan untukmengatur volume. Potentiometer termasuk ke dalam alat pasif, yang artinya alat ini dapat beroperasi tanpa power supply. Nilai pada potentiometer digunakan untuk mengontrol tengangan maupun arus listrik. Pada game ini, nilai yang dihasilkan oleh potentiometer akan digunakan untuk menggerakan paddle milik pemain.

Gambar 3.2: Potentiometer

3.2 Proses Pembuatan
Pertama, hubungkan pin power 5V dan pin ground (GND) pada arduino ke breadboard seperti gambar dibawah ini. Agar tidak bingung, gunakan kabel warna merah untuk power dan kabel warna
69hitam untuk ground.

Gambar 3.3: Skema Power dan Ground

Selanjutnya adalah menghubungkan kedua potentiometer ke breadboard. Hubungkan pin pertama atau terminal terluar milik potentiometer ke jalur power pada breadboard. Lalu hubungkan pin terluar lainnya ke jalur ground pada breadboard. Tersisa pin di tengah yang belum terhubung. Pin ini dihubungkan ke analog input pada Arduino. Melalui pin ini, potentiometer mengirimkan nilai ke pada Arduino. Potentiometer pertama terhubung dengan pin analog A0 dan potentiometer kedua terhubung dengan pin analog A1. Seperti biasa, power dihubungkan dengan kabel berwarna merah, ground dengan kabel berwarna hitam dan untuk menghubungkan pin tengah, gunakan kabel berwarna kuning.

Gambar 3.4: Skema Potentiometer dengan Arduino UNO
Setelah potentiometer terhubung, hubungkan Arduino TFT ke breadboard. Perhatikan baik- baik pin pada Arduino TFT. Header pada sisi layar dengan tab warna biru lah yang terhubung dengan board. Perlu diingat, orientasi layar ini terbalik. Jadi jangan kaget.

Gambar 3.5: Arduino TFT ke Breadboard

Oke, selanjutnya kita perlu menghubungkan Arduino TFT dengan Arduino UNO. Hubungkan pin BL dan +5V ke power. Hubungkan juga pin GND ke ground. in LCD-CS dihubungkan ke pin 10, pin DC dihubungkan ke pin 9, pin RESET dihubungkan ke pin 8, pin MOSI dihubungkan ke pin 11, dan terakhir pin SCK dihubungkan ke pin 13. Untuk menghubungkan pin-pin tersebut, gunakan kabel jumper. Untuk pin yang terhubung ke pin digital pada arduino, gunakan kabel warna biru. Kalau masih bingung cara menghubungkan- nya, lihat gambar di bawah ini.

Gambar 3.6: Arduino TFT ke Arduino UNO

3.3 Kode Program Pong
Komponen yang diperlukan sudah terpasang dengan rapi. Sekarang saatnya untuk membuatprogram. Sebelum menulis kode, pastikan IDE yang digunakan adalah versi terbaru agar libraryyang digunakan pada game ini dapat diload dengan baik. Ketikan kode berikut untuk mengimpor library SPI dan TFT.

#include <SPI.h>
#include <TFT.h>

Library SPI digunakan agar microcontroller pada Arduino UNO dapat berkomunikasi dengan komponen yang terhubung dengan pin SPI (Serial Peripheral Interface). Library TFT digunakan agar kita dapat menggambar sesuai ke layar Arduino TFT. Lalu definisikan tiga buah konstanta untuk masing-masing pin LCD-CS, DC, dan RESTART dengan nilai sesuai dengan pin yang terhubung. Selanjutnya kita butuh instance dari library TFT untuk mengontrol layar TFT. Instance tersebut diberi nama TFTscreen. Berikut adalah kodenya.

#de#ne cs 10
#de#ne dc 9
#de#ne rst 8

TFT TFTscreen = TFT( cs , dc , rst ) ;
Selanjutnya kita butuh variabel untuk posisi x,y milik paddle dan bola, arah bola dan posisiterakhir bola dan juga paddle. Seluruh variable ini memiliki tipe integer. int paddle X = 0 ;
int paddle Y = 0 ;
int oldPaddleX, oldPaddle Y ;
int ballDirection X =1 ;
int ballDirection Y = 1 ;
int ballX, ballY, oldBallX, oldBallY ;
Sekarang, kita inisiasi layar TFT lalu menghapus background layar di dalam function setup().Berikut adalah kodenya.

void setup ( ) {
75TFTscreen .
begin ( ) ;
TFTscreen . background ( 0 , 0 , 0 ) ;
}

Dapat dilihat pada kode di atas, untuk menghapus background layar cukup menset backgroundlayar menjadi hitam melalui function background(). Argumen pada function tersebut adalah nilai masing-
masing channel RGB. elanjutnya, kita perlu menyimpan nilai tinggi dan lebar layar. Kemudian, kita harus membaca nilai dari potentiometer sebelum proses mapping untuk menggunakan range nilainya. Berikut adalah kodenya.

void loop ( ) {
i n t myWidth = TFTscreen . width ( ) ;
i n t myHeight = TFTscreen . h e i g h t ( ) ;
76paddleX = map( analogRead (A0 ) , 0 , 1023 ,
0 , myWidth )
= 2 0 / 2 ;
paddleY = map( analogRead (A1 ) , 0 , 1023 ,
0 , myHeight )
= 5 / 2 ;

Nilai tinggi dan lebar layar didapatkan dari unction width() dan height() yang diakses dari  objek TF- Tscreen. Lalu untuk membaca nilai dari potentiometer, gunakan function analogRead()engan argumen pin analog pada Arduino yang terhubung dengan potentiometer. Setelah membaca nilai dari potentiometer, proses mapping dilakukan menggunakan function map(). Function ini digunakan untuk mengatur suatu nilai dari suatu range ke range lain. Nilai rendah potentiometer pertama yang terhubung ke pin A0 sebesar 0 akan dimap ke nilai terendah yaitu 0 dan nilai tertingginya yaitu sebesar 1023 akan dimap ke nilai lebar layar. Hal yang serupa juga dilakukan untuk potentiometer yang terhubung dengan pin A1, hanya saja nilai tertinggi pada potentiometer ini dimap ke nilai tinggi layar. Setelah proses mapping, nilai hasil mappingpotentiometer A0 dikurangi dengan 20/2 dan disimpan ke dalam variabel paddleX. Nilai hasilmapping potentiometer A1 dikurangi dengan 5/2 dan disimpan ke vari- abel paddleY. Ok, selanjutnya dalah menghapus lokasi terakhir paddle jika ada pergerakan. Berikut adalah kodenya.

TFTscreen . f i l l ( 0 , 0 , 0 ) ;
i f ( oldPaddleX != paddleX | |
oldPaddleY != paddleY ) {
TFTscreen . rect ( oldPaddleX ,
78oldPaddleY , 2 0 , 5 ) ;
}
Untuk menghapus lokasi terakhir paddle, cukup memuat persegi panjang dengan warna hitam.Pada kode di atas, function #ll() digunakan untuk memberi warna pada objek yang akan digambar. Function ini memiliki argumen yang sama dengan function background. Setelah mengatur warna, program akan mencek apalah nilai old PaddleX tidak sama dengan nilai paddleX atau nilai oldPaddleY tidak sama dengan nilai paddleY. Jika benar, berarti ada pergerakan paddle. Maka, program akan membuat persegi di koordinat oldPaddleX dan 50 oldPaddleY sebesar 20 x 5.Untuk menggambar paddlenya dengan warna putih, tuliskan kode berikut.

TFTscreen . #ll ( 255 , 255 , 255 ) ;
TFTscreen . rect ( paddleX , paddleY , 20 , 5
) ;

Lalu kita perlu menyimpan posisi paddle saat ini menjadi posisi sebelumnya. Hal ini dilakukanagar kita dapat melakukan pengecekan apakah paddle bergerak atau tidak. Masih ingat kode untuk mengecek pergerakan paddle? Ya, paddle dianggap bergerak jika posisi terakhir paddle tidak sama dengan posisi paddle sekarang. adalah kodenya.

oldPaddleX = paddleX ;
oldPaddleY = paddleY ;

BerikutTerakhir, kita akan menggunakan nilai dari variabel ballSpeed untuk menentukan seberapa cepat layar melakukan perubahan. Kode di bawah ini ditulis pada akhir function loop().if ( millis ( ) % ballSpeed < 2)
{ moveBall ( ) ;
}
}
Kode di atas digunakan untuk mencek apakah millisec modulo nilai ballSpeed lebih kecil dari 2.Jika iya, program akan menjalankan function buatan kita yaitu moveBall() untuk menggerakkanbola. Function moveBall() akan mengubah posisi bola dengan cara seperti mengubah posisi paddle, yaitu meng- gambar persegi panjang warna hitam pada posisi sebelumnya dan menggambar 81persegi panjang warna putih pada posisi yang baru. Function ini juga akan memastikan bola tidak keluar dari layar jika bola menyentuh sisi layar. Berikut adalah kodenya. Ingat, tulis kode ini di luar

function loop() ya.
void moveBall ( ) {
if ( ballX > TFTscreen . width ( ) | |
ballX < 0) {
ballDirectionX =
= ballDirectionX
;
}
if ( ballY > TFTscreen . height ( ) | |
ballY < 0) {
ballDirectionY =
= ballDirectionY
;
}
if ( inPaddle ( ballX , ballY , paddleX ,
paddleY , 20 , 5 ) ) {
ballDirectionY =
= ballDirectionY
}
ballX += ballDirectionX ;
ballY += ballDirecti nY ;
82
;TFTscreen . #ll ( 0 , 0 , 0 ) ;
if ( oldBallX != ballX | |
oldBallY != ballY ) {
TFTscreen . rect ( oldBallX , oldBallY ,
5 , 5);
}
TFTscreen . #ll ( 255 , 255 , 255 ) ;
TFTscreen . rect ( ballX , ballY , 5 , 5 ) ;
oldBallX = ballX ; oldBallY = ballY ;
}

Pada function tersebut, if pertama dan kedua digunakan agar bola tidak keluar dari sisi layar lalu arah bola dibuat negatif untuk menandakan bola bergerak ke arah datang. Pada if ketiga,terdapat function baru yaitu inPaddle(). Function ini kita gunakan untuk mencek apakah bolamenyentuh paddle. Jika menyentuh paddle, arah bola terhadap sumbu Y diubah menjadi berlawanan. Setelah melakukan pengecekan, masing-masing variabel yang menyimpan koordinat X dan Y milik bola ditambah dengan nilai dari variabel ballDirection masing-masing sumbu. Lalu, kita hapus bola pada posisi sebelumnya dengan cara yang sama seperti menghapus paddle. Setelah kita hapus bola tersebut, kita gambar bola dengan warna putih pada posisi yang baru. Terakhir, jangan lupa untuk menyimpan koordinat posisi bola saat ini ke variabel oldBall masing-masing sumbu. Variabel ini digunakan untuk mencek ada atau tidakpergerakan bola. Kode terakhir adalah function inPaddle(). Function ini memiliki 6 buah argumen. Berikut adalah kodenya.

boolean inPaddle ( int x , int y ,
int rectX , int rectY ,
int rectWidth , int rectHeight ) {
boolean result = false ;
if ( ( x >= rectX && x <=
( rectX + rectWidth ) ) &&
( y >= rectY && y <=
( rectY + rectHeight ) ) ) { }
result = true ;
}
return result ;
}

Function inPaddle() akan mencek posisi bola dan paddle. Jika posisi mereka sama, maka function akan memberikan nilai true dan mengubah arah bola pada function moveBall(). Itu adalah keseluruhan kode untuk membuat game Pong sederhana. Di bawah ini adalah bentuk utuh dari programnya.

/ * TFT Pong
This example for the Arduino screen reads the
values of 2 potentiometers to move a rectangular
platform on the x and y axes . The platform can
intersect with a ball causing it to bounce. This
example code is in the public domain . Created
by Tom Igoe December 2012 Modi#ed 15 April
2013 by Scott Fitzgerald
http : / /www. arduino . cc/en/Tutorial/TFTPong
* /
#include <SPI.h>
#include <TFT.h>
#de#ne cs 10
#de#ne dc 9
#de#ne rst 8
86TFT TFTscreen = TFT( cs , dc , rst ) ;
int paddleX = 0 ;
int paddleY = 0 ;
int oldPaddleX , oldPaddleY ;
int ballDirectionX = 1;
int ballDirectionY = 1;
int ballX , ballY , oldBallX , old BallY ;
void setup ( ) {
TFTscreen . begin ( ) ;
TFTscreen . background ( 0 , 0 , 0 ) ;
}
void loop ( ) {
int myWidth = TFTscreen . width ( ) ;
int myHeight = TFTscreen . height ( ) ;
paddleX = map( analogRead (A0 ) , 0 , 1023 ,
0 , myWidth )
=
20/2 ;
paddleY = map( analogRead (A1 ) , 0 , 1023 ,
0 , myHeight )
=
5/2 ;
TFTscreen . #ll ( 0 , 0 , 0 ) ;
if ( oldPaddleX != paddleX | |
oldPaddleY != paddleY ) {
87TFTscreen . rect ( oldPaddleX ,
oldPaddleY , 20 , 5 ) ;
}
TFTscreen . #ll ( 255 , 255 , 255 ) ;
TFTscreen . rect ( paddleX , paddleY , 20 , 5
) ;
oldPaddleX = paddleX ;
oldPaddleY = paddleY ;
if ( millis ( ) % ballSpeed < 2) {
moveBall ( ) ;
}
}
void moveBall ( ) {
if ( ballX > TFTscreen . width ( ) | |
ballX < 0) {
ballDirectionX =
= ballDirectionX
;
}
if ( ballY > TFTscreen . height ( ) | |
ballY < 0) {
ball Direction Y =
= ball
Direction Y ;
}
if (in Paddle (ballX, ballY ,paddleX ,
88paddleY, 20, 5 )) {
ball Direction Y =
= ball
Direction Y ;
}
ball X += ball Direction X ;
ball Y += ball Direction Y ;
TFTscreen.#ll (0, 0, 0) ;
if (old Ball X != ball X ||
oldBall Y != ball Y ) {
TFTscreen.rect ( oldBallX , oldBallY ,
5, 5);
}
TFTscreen.#ll (255, 255, 255);
TFTscreen.rect (ballX, ballY, 5, 5);
oldBallX = ballX; oldBallY = ballY;
}
boolean inPaddle (int x, int y,
int rectX, intrectY,
int rectWidth, intrectHeight) {
boolean result = false;
if ((x >= rectX && x <=
89(rectX+rectWidth)) &&
(y >= rectY && y <=
(rectY + rectHeight))) {
result = true;
}
return result;
}


Bab 4
RUNNING GAME

Pada bab ini akan memaparkan tentang proses dan hasil dari implementasi alat yang sudah dibuat. Mulai dari state awal hingga bagaimana bola dapat mendapatkan score dan akhirnya game over. Kemudian akan dipaparkan bola yang sudah game ver akan menempatkan dirinya pada posisi awal
seperti semula.

Gambar 4.1 Awal Permainan

Bola akan bergerak ketika tombol launcher ball ditekan/ditarik maka bola akan memasuki arenadan akan bergerak turun menuju pemukul jika emukul tidak dapat memukul bola maka gameakan selesai dan game bisa bermain dari awal lagi.

Gambar 4.2 Bergerak Mengenai Bumper

Gambar diatas bola sedang menuju bumper dan terpental oleh bumper. Gambar bola sedang bergerak terlihat dengan tanda lingkaran merah pada gambar diatas.

Gambar 4.3 Pemukul Mengarahkan Bola ke Atas

Gambar diatas merupakan bola yang sedang ipukul oleh salah satu pemukul pinball tersebutagar game ini terus berlanjut dan tidak selesai ola bergerak seperti pada lingkaran merah padagambar diatas. Pada gambar dibawah adalah kondisi game over dimana bola tidak dapat dicapai oleh kedua pemukul kemudian bola tersebut akan jatuh kembali ke wadah dan diambil kembali setelah itu masuk kembali ke pelontar.

Gambar 4.4 Bola Lose (Game Over)

Pada gambar dibawah ini merupakan papan skor untuk hasil sementara dengan lifepoint/nyawapemain yaitu sisa bola yang dapat dimainkan.

Gambar 4.5 Game Score

Gambar dibawah merupakan arena wadah bola ika terjatuh dan tidak dapat dipukul oleh kedua  pemukul .jika terjatuh maka bola akan bergerak embali ke pelontar seperti gambar dengan panah  garis merah pada gambar dibawah.

Gambar 4.6 Bola Kembali ke State Awal


 Gambar 4.7 Bola pada State Awal

Gambar 4.7 Bola Siap Dilontarkan

Bola dimulai di pojok kanan bawah playfield dan digerakkan oleh solenoid "sirip". Tujuannyaadalah untuk memasukkan bola ke dalam salah atu dari tiga kurung siku di lapangan utama,  atau saluran sempit di sepanjang tepi kiri. Berbaai target diberi nilai poin. Dua target 10 poinrelatif mudah untuk mencetak gol. Target 50 point lebih menantang dan kanal 100 point lebih98sulit lagi. Saat bola jatuh ke sasaran, tombol ang tepat ditekan untuk mengeluarkan bola danjuga untuk kenaikan tampilan nilai LCD dengan nilai titik target. Saat bola turun di bawahpengaruh gravitasi, ia juga mengendap di sudut kanan bawah, di mana ia bergerak lagi oleh solenoid "sirip", atau turun melalui saluran pembuangan dan di luar lapangan permainan yang mengakhiri permainan. Tombol reset pada pap- an seluncur piring menyetel ulang LCD dan permainan siap untuk putaran berikutnya. Posisi dan sudut kurung bisa diubah untuk menam- bah atau mengurangi kesulitan. Lengan yang berputar menambahkan elemen acak pada permainan, membuat keterampilan yang diperlukan untuk membawa bola ke saluran bernilai tinggi di sebelah kiri. Pilihan lainnya adalah menggunakan servo 180 derajat reguler dengan set posisi menggunakan generator bilangan acak Arduino, dan lengan diprogram untuk bergerak setiap setengah detik atau lebih. Banyak arena bermain yang berbeda memungkinkan dan trial and error dapat digunakan untuk menentukan posisi terbaik dari target, hambatan dan senjata pemintalan.


 Bab 5
PENUTUP

5.1 Kesimpulan
Game Pinball merupakan jenis permainan arade, yaitu sebuah mesin permainan hiburan yangdioperasikan dengan koin yang terpasang di tempattempat umum seperti pusat permainan hiburan. Bentuk kebanyakan permainan arcade adalah permainan-permainan yang mengumpulkan point dan men dapat reward atau berhadiah. Saat pastinya masihdiperdebatkan, zaman keemasan permainan video arkade biasanya disebutkan pada periode awal sekitar akhir 1970-an dan berakhir di pertengahanan. Permainan ini bangkit sebentar awal 1990-an, tetapi kemudian industri arcade semakin menurun di belahan bumi barat karena idak mampu bersaing dengan konsol permainan  video yang dapat dimainkan di rumah dan beragam jenisnya, serta lebih murah dalam biaya. Game pinball dapat dibuat bentuknya secara fisikdengan beberapa komponen yang dibutuhkan dan untuk pemrosesannya dapat menggunakan Arduino. rduino merupakan sebuah mikrokontroler yang  memiliki prosesor Atmel AVR. Arduino dapat mengendalikan beberapa komponen seperti sensor, lampu erta layar display sebagai output. Untuk melakukan pengendalian tersebut Arduino harus di program terlebih dahulu dengan software bawaan yait IDE dari Ardunio tersebut. IDE tersebut terbuat dari bahasa java sedangkan jika pengguna ingin memprogramnya harus menggunakan bahasa C. Untuk mentransfer program yang telah dibuat pada IDE tersebut maka harus dilakukan penyambungan Arduino dengan kabel usb ke laptop atau komputer kemudian malakukan proses upload. Arduino memiliki beberapa tipe yang menjadikan nya unik satu sama lain, seperti jumlah pin yang dimilikinya, besar volt, fitur tambahan dan ukuran Arduino. Oleh karena itu sesuaikan kebutuhan pada alat yang akan dibuat, jika seandainya ingin membuat alat yang membutuhkan koneksi bluetooth maka gunaka- nlah Arduino BT. Walau Arduino memiliki banyak tipe tetapi untuk proses penulisan program tetap menggunakan IDE yang sama dan dengan cara yang sama untuk melakukan transfer ke Arduino tersebut.

Pada kesimpulanini Game Pinball dengan mikrokontroler Arduino adalah permainan bola kecil di dalam stage yang menuntut pemain untuk mempertahankan bola tersebut tetap ada di dalam stage untuk mendapatkan nilai sebanyak - banyaknya. Dengan bantuan berbagai mikrokontroler dapat dibuat menjadi design pinball yang sempurna.Game pinball ini bisa dimainkan oleh anak remaja maupun yang sudah lanjut usia denga design tertentu dengan kebutuhan masing masing.

5.2 Saran
Game Pinball dengan mikrokontroler Arduino dapat dikembangkan menjadi lebih leluasa dengan berbagai macam tipe Arduino dan mikrokontroler lainnya. Lebih teliti jika ada kesalahan atau bug terdapat pada game Pinball. Perhatikan penempatan pin pada Arduino karena setiap pinmemiliki fungsinya masing - masing, seandainya salah maka konsekuensi yang didapat adalah IC Arduino dapat hangus dan tidak dapat digunakan lagi.
















Bibliografi

[1] https://id.wikipedia.org/wiki/Arduino
[2] http://www.kelasrobot.com/2014/12/jenis-jenis-
microcontroller-arduino.html
[3] http://tentangarduino.blogspot.co.id/2014/09/macam-
macam-arduino-iniakan-saya.html
[4] http://www.sinauarduino.com/artikel/mengenal-
arduino-software-ide/
[5] https://create.arduino.cc/projecthub/BobB/arduino-
controlled-pinball-machine-525863
[6] https://www.codepolitan.com/tutorial/digital-
input-output-pada-arduino
[7] http://ecadio.com/mengenal-dan-belajar-
arduino-uno-r3
[8] https://www.academia.edu/18955745/Gamification
[9] https://www.academia.edu/10507735/Pengertian-
Gamification
[10] http://komunikasi.us/index.php/mata-
kuliah/dmnm/4475-gamification-basic-of-a-
game-in-a-real-life
[11] http://id.wikipedia.org/wiki/Gamifikasi
[12] http://wartawarga.gunadarma.ac.id/2010/04/game-
based-learning/