Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Membuat Game Memori Arduino

Komponen dan persediaan

Arduino UNO
× 1
Resistor SparkFun 330 ohm
kami hanya membutuhkan 4 dari mereka
× 1
Resistor SparkFun 10k ohm
kami hanya membutuhkan 4 dari mereka
× 1
Berbagai macam LED SparkFun
kita membutuhkan 4 LED dengan warna berbeda
× 1
speaker SparkFun Mini
Anda dapat melakukannya tanpa ini jika Anda tidak peduli dengan suaranya
× 1
SparkFun BreadBoard (Ukuran penuh)
× 1
Kabel jumper (generik)
× 1

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Apakah Anda ingat permainan "Simon"? Banyak orang seusia saya (lahir tahun 70-an) kehilangan banyak waktu untuk memainkannya. Permainannya sederhana, memiliki 4 tombol dengan warna berbeda yang akan menyala secara berurutan dan Anda harus mengulangi urutannya. Setiap kali Anda melakukannya dengan benar, permainan akan memberi Anda urutan lagi dengan warna tambahan di akhir.

Saya punya satu untuk Xmas lama sekali tapi kemudian saya pindah dan pindah, dan pindah lagi sehingga permainan tersesat di salah satu dari banyak kotak yang tidak pernah dibongkar dari pindah ke yang lain...

Sebagai "dewasa", saya menemukan kegembiraan Arduino dan dengan itu, mendapat kesempatan untuk menghidupkan kembali teman saya yang telah lama terbuang.

Tutorial ini akan menunjukkan cara membuat game serupa menggunakan Arduino Uno beberapa LED dan resistor dan rangkaian yang relatif sederhana.

Program itu sendiri mungkin sedikit rumit untuk pemula jadi saya mencoba menjelaskan dalam kode apa fungsinya dan bagaimana caranya.

Cara paling sederhana untuk menjalankan game ini adalah ini.

1) Hubungkan sirkuit persis seperti yang ditunjukkan pada diagram. Warna kabel tidak relevan jadi jika Anda kehabisan kabel hitam, tidak apa-apa. :)

2) Tempel kode sumber ke editor Arduino favorit Anda dan unggah ke papan

3) Mainkan gamenya

Permainan dimulai setelah sekitar 3 detik dengan 5 kedipan lambat dari semua LED.

Jika satu atau lebih LED tidak berkedip, periksa kabelnya. Di papan saya, tombol yang sangat kecil tidak selalu terpasang dengan benar dan memiliki kecenderungan untuk keluar dengan sendirinya.

Jika pengkabelan terlihat benar, coba balikkan LED yang berfungsi dengan yang tidak berfungsi untuk melihat apakah itu kabel atau LED itu sendiri.

Setelah 5 berkedip selesai, Satu LED akan menyala. Saya tidak bisa memberi tahu Anda yang mana, ini kejutan :) Tekan tombol untuk LED itu. LED ini akan menyala lagi diikuti dengan yang baru. Tekan tombol yang benar secara berurutan... Anda lihat ke mana saya pergi dengan itu...

Kemudian, segera, Anda akan melihat semuanya berkedip dengan cepat. Itu artinya kamu kalah. :D

Urutan terakhir yang diberikan kepada Anda akan dimainkan sehingga Anda dapat menghitung poin Anda diikuti oleh 5 kedipan lambat dari sebelumnya yang menunjukkan bahwa permainan dimulai lagi.

Anda memiliki waktu 2 detik untuk menekan setiap tombol.

Ini dia! Selamat bersenang-senang!

Ingin membuatnya sedikit lebih sulit? Mengapa tidak mengubah baris teratas dalam kode ke nilai yang berbeda?

#define PLAYER_WAIT_TIME 2000  

Atau Anda dapat menambahkan LED lain, jika ada... Untuk ini, Anda harus mereproduksi bagian rangkaian ini terlebih dahulu:

Kabel oranye di sini akan menuju ke pin yang tidak digunakan di Arduino Anda (Hindari 0 dan 1)

Kemudian ubah baris berikut dalam kode:

byte noPins =4byte pin[] ={2, 13, 10, 8};  

jika Anda menambahkan satu LED pada pin 6, kodenya akan menjadi

byte noPins =5byte pin[] ={2, 13, 10, 8, 6};  

Tip kecil untuk menulis kode Arduino:

pengaturan batal() { delay(3000); Serial.begin(9600); Mengatur ulang(); }  

Letakkan penundaan singkat sebagai pernyataan pertama dari fungsi setup() Anda. Sangat mudah untuk membuat Arduino masuk ke loop tak terbatas atau menguncinya dengan cara tertentu. Jika itu terjadi, penundaan singkat itu memungkinkan Anda mengatur ulang Arduino dan mengunggah sketsa kosong sebelum terkunci lagi. .

Saya akhirnya mengambil ide kecil ini dan menjadikannya portabel...

Jika Anda ingin melihat ide yang sangat keren untuk game serupa (namun jauh lebih maju). Periksa ini https://www.instructables.com/id/Lego-Mini-Memory-Game oleh Peter Kent. Dia membuat game di ponsel dengan antarmuka ke mobil Lego. Ini benar-benar luar biasa!

Kode

  • Kode Permainan Memori
Kode Permainan MemoriArduino
Ini adalah seluruh kode untuk permainan. Cukup salin dan tempel di IDE favorit Anda dan unggah ke Arduino.
#define PLAYER_WAIT_TIME 2000 // Waktu yang diizinkan antara penekanan tombol - urutan byte 2 detik[100]; // Penyimpanan untuk light sequencebyte curLen =0; // Panjang saat ini dari sequencebyte inputCount =0; // Berapa kali pemain menekan tombol (benar) dalam satu putaran tertentu byte lastInput =0; // Input terakhir dari playerbyte expRd =0; // LED yang seharusnya dinyalakan oleh playerbool btnDwn =false; // Digunakan untuk memeriksa apakah tombol ditekanbool wait =false; // Apakah program menunggu pengguna untuk menekan tombol resetFlag =false; // Digunakan untuk menunjukkan ke program bahwa sekali player lostbyte soundPin =5; // Pengeras suara keluaranbita noPin =4; // Jumlah tombol/LED (Saat mengerjakan ini, saya hanya menggunakan 2 LED) // Anda dapat membuat permainan lebih sulit dengan menambahkan kombinasi LED/tombol/resistor tambahan.byte pin[] ={2, 13, 10 , 8}; // Pin input tombol dan pin output LED - ubah nilai ini jika Anda ingin menghubungkan tombol Anda ke pin lain // Jumlah elemen harus cocok dengan noPin di bawah input panjang Waktu =0; // Variabel pengatur waktu untuk penundaan antara input penggunavoid setup() { delay(3000); // Ini untuk memberi saya waktu untuk bernafas setelah koneksi arduino - dapat dihapus jika Anda ingin Serial.begin(9600); // Mulai Monitor serial. Ini dapat dihapus juga selama Anda menghapus semua referensi ke Serial di bawah Reset();}////// Mengatur semua pin sebagai INPUT atau OUTPUT berdasarkan nilai 'dir'///void setPinDirection(byte dir){ for(byte i =0; i  cepat | angka besar -> slow///void flash(frekuensi pendek){ setPinDirection(OUTPUT); /// Kami mengaktifkan LED sekarang untuk(int i =0; i <5; i++){ writeAllPins(HIGH); bip(50); penundaan (frekuensi); writeAllPins(RENDAH); penundaan (frekuensi); }}//////Fungsi ini mengatur ulang semua variabel game ke nilai defaultnya///void Reset(){ flash(500); curLen =0; masukanJumlah =0; masukan terakhir =0; expRd =0; btnDwn =salah; tunggu =salah; resetFlag =false;}////// Pengguna hilang///void Kalah(){ flash(50); }////// Arduino menunjukkan kepada pengguna apa yang harus dihafal/// Juga dipanggil setelah kalah untuk menunjukkan kepada Anda apa urutan terakhir Anda ///void playSequence(){ //Loop melalui urutan yang disimpan dan nyalakan yang sesuai LED secara bergantian for(int i =0; i  PLAYER_WAIT_TIME){ // Jika pemain membutuhkan lebih dari waktu yang diizinkan, DoLoseProcess(); // Semua hilang :( return; } if(!btnDwn){ // expRd =sequence[inputCount]; // Temukan nilai yang kita harapkan dari pemutar Serial.print("Expected:"); // Output Serial Monitor - Harus dihapus jika Anda menghapus Serial.begin di atas Serial.println(expRd); // Serial Monitor Output - Harus dihapus jika Anda menghapus Serial.begin di atas for(int i =0; i   

Skema

simonsays_siKds3Jmk2.fzz

Proses manufaktur

  1. Membuat Monitor Ambilight Menggunakan Arduino
  2. Game Arduino Gyroscope dengan MPU-6050
  3. Giroskop Menyenangkan dengan NeoPixel Ring
  4. Game Arduino Pong - Tampilan OLED
  5. Pengontrol Game Arduino
  6. Game Breakout Arduino Touch
  7. Pixie:Jam Tangan NeoPixel Berbasis Arduino
  8. Game Pixel Chaser
  9. Game Dino otomatis menggunakan arduino
  10. Kamera Pengawasan Jarak Jauh Seluler