• Tidak ada hasil yang ditemukan

Membuat Permainan Dadu

Bab 2 Proyek-proyek Arduino

3.7 Membuat Permainan Dadu

Menghidupkan dadu dasar kita menjadi sebuah permainan full-blown membutuhkan penambahan tombol tekan yang lain. Dengan yang pertama kita masih bisa melempar dadu, dan dengan yang kedua kita dapat memprogram menebak. Ketika kita melempar dadu lagi dan hasil saat ini sama dengan menebak kita, tiga LED pada mati akan berkedip. Jika tidak, mereka akan tetap gelap. Untuk memasukkan menebak, tekan tombol menebak nomor yang benar kali. Jika Anda pikir hasil selanjutnya akan menjadi 3, misalnya, tekan menebak tombol tiga kali dan kemudian tekan tombol start. Untuk menambahkan tombol lain ke sirkuit, melakukan hal yang sama seperti untuk yang pertama. Anda dapat melihat bahwa kita memiliki ditambahkan lagi rangkaian tombol lain untuk papan tempat breadboard. Kali ini kita sudah terhubung ke pin 5.

Sekarang kita perlu beberapa kode untuk mengontrol tombol baru, dan Anda mungkin tergoda untuk menyalin dari program terakhir kita. Setelah semua, kita disalin hardware desain juga, kan? Dalam dunia nyata, beberapa redundansi benar-benar diterima, karena kita benar-benar membutuhkan dua tombol fisik, bahkan jika mereka pada prinsipnya sama. Dalam dunia perangkat lunak, redundansi adalah Nogo a, jadi kita tidak akan menyalin logika menghilangkan bounce kita tapi menggunakan library1 yang ditulis untuk tujuan ini. Ambil library, dan ekstrak isinya ke dalam ~ / Documents / Arduino / library (pada Mac) atau My Documents \ Arduino \ library (pada kotak Windows). Biasanya itu saja yang harus Anda lakukan, tapi tidak pernah

46 salahnya untuk membaca petunjuk instalasi dan dokumentasi di halaman web. Berikut versi final dari kode biner dadu kita:

#include <Bounce.h>

-

- const unsigned int LED_BIT0 = 12;

- const unsigned int LED_BIT1 = 11;

5 const unsigned int LED_BIT2 = 10;

- const unsigned int START_BUTTON_PIN = 5;

- const unsigned int GUESS_BUTTON_PIN = 7;

- const unsigned int BAUD_RATE = 9600;

- 10 void setup(){ - pinMode(LED_BIT0, OUTPUT); - pinMode(LED_BIT1, OUTPUT); - pinMode(LED_BIT2, OUTPUT); - pinMode(START_BUTTON_PIN, INPUT); 15 pinMode(GUESS_BUTTON_PIN, INPUT); - randomSeed(analogRead(A0)); - Serial.begin(BAUD_RATE); - } -

20 const unsigned int DEBOUNCE_DELAY = 20;

- Bounce start_button(START_BUTTON_PIN, DEBOUNCE_DELAY);

- Bounce guess_button(GUESS_BUTTON_PIN, DEBOUNCE_DELAY);

- int guess = 0; - 25 void loop(){ - handle_guess_button(); - handle_start_button(); - } -

47 30 void handle_guess_button(){ - if (guess_button.update()){ - if (guess_button.read() == HIGH){ - guess = (guess % 6) + 1; - output_result(guess); 35 Serial.print("Guess:”); - Serial.println(guess); - } - } - } 40 - void handle_start_button(){ - if (start_button.update()){ - if (start_button.read() == HIGH){

- const int result = random(1, 7);

45 output_result(result); Serial.print("Result:”); - Serial.println(result); - if (guess > 0){ - if (result == guess){ 50 Serial.println("You win!"); - hooray(); - } else{ - Serial.println("You lose!"); - } 55 } - delay(2000); - guess = 0; - } - } 60 } -

48 - void output_result(const long result){

- digitalWrite(LED_BIT0, result & B001);

- digitalWrite(LED_BIT1, result & B010);

65 digitalWrite(LED_BIT2, result & B100);

- }

-

- void hooray(){

- for (int i = 0; i < 3; i++){

70 output_result(7); - delay(500); - output_result(0); - delay(500); - } 75 }

Diakui bahwa banyak kode, tapi kita tahu sebagian besar sudah, dan bagian-bagian baru cukup mudah. Pada baris pertama, kita termasuk library Bounce kita akan menggunakan nanti untuk menghilangkan bounce dua tombol kita. Kemudian kita mendefinisikan konstanta untuk semua pin yang kita gunakan, dan di setup () metode, kita menginisialisasi semua kita pin dan mengatur benih acak. Kita juga menginisialisasi port serial, karena kita akan keluaran beberapa pesan debug. The Bounce library menyatakan kelas bernama Bounce, dan Anda harus membuat objek Bounce untuk setiap tombol yang ingin Anda menghilangkan bounce. Itulah yang terjadi di jalur 21 dan 22.

Konstruktor dari kelas Bounce mengharapkan jumlah pin tombol yang terhubung ke dan menghilangkan bounce yang keterlambatan dalam milidetik. Akhirnya, kita menyatakan dan menginisialisasi variabel bernama menebak yang menyimpan dugaan kita saat ini. Our lingkaran () fungsi telah dikurangi menjadi dua fungsi panggilan. salah satunya adalah bertanggung jawab untuk menangani tombol menebak dorongan, dan yang lain menangani dorongan dari tombol start. Dalam handle_guess_button (), kita menggunakan Bounce Class untuk pertama kalinya.

49 Untuk menentukan keadaan saat ini kita guess_button objek, kita harus memanggil update () method. Setelah itu, kita membaca status saat ini

menggunakan read () method. Jika tombol ditekan, negara yang diatur ke

TINGGI, dan kita kenaikan variabel menebak. Untuk memastikan bahwa tebakan selalu dalam kisaran antara 1 dan 6, kita menggunakan operator modulus (%) sejalan 33. ini Operator membagi dua nilai dan mengembalikan sisanya. Untuk 6, ia mengembalikan nilai antara 0 dan 5, karena ketika Anda membagi angka dengan 6, yang sisanya selalu antara 0 dan 5.

Tambahkan 1 pada hasil, dan Anda mendapatkan nilai antara 1 dan 6. Akhirnya, kita menebak saat ini menggunakan tiga LED, dan kita juga mencetak ke port serial. Penanganan tombol start di handle_start_button () bekerja sama persis sama seperti penanganan tombol menebak. Ketika tombol start ditekan, kita menghitung hasil baru dan output pada port serial. Kemudian kita cek apakah pengguna telah memasuki menebak (menebak lebih besar dari nol dalam kasus ini) dan apakah pengguna telah menebak kanan hasil. Dalam kedua kasus, kita mencetak pesan ke port serial, dan jika pengguna menebak dengan benar, kita juga memanggil hore () method. hore () memungkinkan semua tiga LED berkedip beberapa kali.

Pada akhir metode ini, kita menunggu selama dua detik sampai pertandingan dimulai lagi, dan kita mengatur kembali menebak saat ini ke nol.

Setelah Anda meng-upload software ke Arduino, mulai seri IDE memantau. Ini akan mencetak nilai sekarang dari variabel menebak setiap kali Anda menekan tombol menebak. Tekan tombol start, dan hasil baru muncul. Dalam bab ini, Anda menyelesaikan proyek Arduino benar-benar kompleks pertama Anda. Anda membutuhkan breadboard, LED, tombol, resistor, dan kabel, dan Anda menulis sepotong trivial perangkat lunak untuk membuat semua

perangkat keras datang ke hidup. Pada bab selanjutnya, kita akan menulis sebuah program yang lebih canggih untuk menghasilkan kode Morse. Anda juga akan belajar cara membuat Arduino sendiri library yang Anda dapat dengan mudah berbagi dengan seluruh dunia.

50

3.8 Kesalahan-kesalahan yang Mungkin Terjadi

Banyak hal mungkin akan salah bila Anda bekerja dengan breadboards untuk pertama kalinya. Masalah terbesar biasanya adalah bahwa Anda tidak terhubung bagian dengan benar. Butuh beberapa waktu untuk menemukan teknik yang tepat untuk memasukkan LED, kabel, resistor, dan tombol ke papan tempat breadboard. Anda memiliki untuk menekan tegas tapi tidak terlalu keras jika tidak, anda akan menekuk konektor, dan mereka tidak akan cocok. Ini biasanya lebih mudah untuk plug bagian dalam setelah Anda dipersingkat konektor.

Ketika memotong konektor, memakai kacamata keselamatan untuk melindungi mata Anda! Sementara mengutak-atik main dengan bagian-bagian, jangan lupa bahwa beberapa dari mereka - LED, misalnya - membutuhkan arah tertentu. Pushbuttons adalah kandidat potensi masalah, juga. Perhatikan pada pushbuttons pada halaman 74 dan pastikan bahwa Anda telah terpasang mereka ke arah yang benar.

Bahkan hal-hal sederhana seperti kabel biasa dapat menyebabkan masalah, terutama jika mereka tidak panjang yang tepat. Jika kawat terlalu pendek dan mungkin berpotensi menyelinap keluar dari soketnya, menggantinya segera. Kabel terlalu murah untuk membuang waktu berharga Anda dengan tidak perlu dan mengganggu sesi debugging.

3.9 Latihan

• Dadu Binary semua sangat baik ketika Anda sedang bermain Monopoli dengan teman geeky Anda, tetapi kebanyakan orang lebih memilih dadu lebih akrab. coba mengubah dadu biner ke desimal dadu dengan tujuh LED. mengatur LED seperti mata dadu biasa.

• 1k resistor kita telah digunakan untuk melindungi LED kita dalam bab ini agak besar.

• LED dapat digunakan untuk lebih dari menampilkan hasil dadu biner. Asalkan Anda memiliki cukup LED, Anda dapat dengan mudah membangun hal-hal lain,

51 biner Anda sudah cukup tahu tentang elektronika dan pemrograman Arduino untuk membangun jam biner Anda sendiri. Cobalah atau berpikir tentang lainnya hal yang bisa menampilkan menggunakan beberapa LED.

• Menggunakan tombol untuk melempar dadu tampaknya sedikit canggung, bukan? Biasanya, Anda mengambil dadu ke kedua tangan dan kocok mereka. Anda dapat mudah mensimulasikan bahwa dengan sensor kemiringan. Sensor kemiringan mendeteksi tilting dari obyek dan perangkat sempurna untuk

mensimulasikan gulungan dadu. Pada prinsipnya, mereka bekerja seperti tombol tekan, tapi Anda tidak menekan mereka - Anda kocok mereka. Cobalah untuk menambahkan satu untuk dadu biner dengan bekerja jalan Anda melalui tutorial pada Situs Arduino.

52

Membuat Morse Code

Generator Library

Sekarang Anda cukup tahu tentang lingkungan pengembangan Arduino dan sekitar berkedip LED untuk memulai sebuah proyek yang lebih besar. Dalam bab ini, kita akan mengembangkan generator kode Morse yang membaca teks dari port serial dan output sebagai sinyal cahaya menggunakan LED. Dengan

membangun proyek ini, Anda akan memperdalam pemahaman Anda tentang seri komunikasi antara Arduino dan komputer Anda. Anda juga akan belajar banyak tentang proses pengembangan khas Arduino : bagaimana menggunakan library yang ada dan bagaimana struktur proyek yang lebih besar ke Anda sendiri library. Pada akhirnya, Anda akan dapat membuat library yang siap penerbitan di Internet.

4.1 Yang Anda Butuhkan

• Sebuah papan Arduino seperti Uno, Duemilanove, atau Diecimila • Kabel USB untuk menghubungkan Arduino ke komputer Anda • Sebuah LED

• Sebuah speaker atau buzzer (mereka adalah opsional)

Dokumen terkait