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

Ninja Dollar - permainan LCD

Komponen dan persediaan

Arduino UNO
× 1
Adafruit LCD Standar - 16x2 Putih di Atas Biru
× 1
Breadboard (generik)
Saya menggunakan dua untuk lebih banyak ruang, Anda hanya dapat menggunakan satu papan tempat memotong roti.
× 2
Potensiometer Putaran Tunggal- 10k ohm
× 1
LED (generik)
× 2
Resistor 1k ohm
× 4
Sakelar Tombol Tekan SparkFun 12mm
× 2
RobotGeek Buzzer
× 1
Kabel jumper (generik)
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)
Untuk menyolder LCD

Tentang proyek ini

Ini adalah permainan LCD sederhana. Inspirasi saya adalah game Dinosaurus Google Chrome, tetapi saya menambahkan beberapa perubahan lagi. Prajurit dolar bergerak terus-menerus dan dia bisa melompat untuk menghindari rintangan dan mengumpulkan poin "bintang". Jika dia melompati rintangan, dia mengumpulkan satu poin dan jika dia menangkap bintang, dia mengumpulkan lima poin. Dia juga bisa menembak dan menghilangkan rintangan di depannya. Ada juga dioda led yang menunjukkan apakah dia melompat atau menembak. Ketika dia mengumpulkan 10, 20 atau 30 poin, dia mulai bergerak lebih cepat dari sebelumnya. Ketika dia mengumpulkan 50 poin, Anda menang. Jika Anda menabrak rintangan, Anda kalah. Tentu saja, Anda dapat mengubah batasan ini dengan mudah dalam kode. Saya juga menambahkan buzzer pasif yang membuat suara saat prajurit melompat atau menembak dan melodi khusus saat Anda kalah atau menang. Ini adalah proyek pertama saya di sini dan saya harap Anda menyukainya. Beri saya komentar dan ulasan Anda.

Videonya

Koneksi

Modul LCD (Liquid Crystal Display) memiliki header laki-laki 16-pin di bagian bawah. Tancapkan ini ke papan tempat memotong roti seperti yang ditunjukkan pada gambar. Semua sinyal elektronik yang memberi daya dan mengontrol LCD melewati header ini.

Pin ini (dari kiri ke kanan):

  • GND - sinyal arde daya
  • VCC - sinyal daya positif
  • V0 - penyesuaian kontras
  • RS - daftar pilih
  • R/W - pilih baca/tulis
  • E - aktifkan sinyal
  • D0 - bit data 0 (tidak digunakan di sini)
  • D1 - bit data 1 (tidak digunakan di sini)
  • D2 - data bit 2 (tidak digunakan di sini)
  • D3 - data bit 3 (tidak digunakan di sini)
  • D4 - bit data 4
  • D5 - bit data 5
  • D6 - bit data 6
  • D7 - bit data 7
  • A - LED lampu latar positif
  • K - LED lampu latar negatif

Gunakan kabel jumper untuk menghubungkan sinyal 5V pada Arduino dengan baris merah di bagian atas papan tempat memotong roti.

Gunakan kabel jumper untuk menghubungkan sinyal GND di Arduino dengan baris biru di bagian atas papan tempat memotong roti.

  • Hubungkan pin VSS ke ground
  • Hubungkan pin VDD ke sinyal 5V
  • Pasang V0 ke pin keluaran potensiometer
  • Pin RS ke pin Arduino 12
  • Pasang RW ke ground
  • Pin E ke pin Arduino 11
  • D4 ke pin Arduino 5
  • D5 ke pin arduino 4
  • D6 ke pin 3 Arduino
  • D7 ke pin 2 Arduino
  • Pin ke sinyal 5V
  • K pin ke sinyal GND

Hubungkan pin potensiometer yang tersisa ke sinyal 5V dan sinyal GND.

Jika Anda memiliki 3 pin piezo buzzer sambungkan pin S ke pin Arduino 7, pin '-' ke GND dan pin sisanya ke sinyal 5V. Jika Anda memiliki 2 pin piezo buzzer, sambungkan satu pin ke sinyal GND dan pin lainnya ke pin Arduino 7.

Hubungkan tombol sakelar sesuai dengan skema. Tombol pertama (tombol lompat) terhubung ke pin Arduino 1 dan tombol kedua (tombol tembak) terhubung ke pin Arduino 6. Led hanya dikendalikan oleh tombol dan bukan oleh Arduino. Anoda terhubung ke pin tombol yang terhubung ke Arduino dan katoda terhubung ke ground.

Kode

  • pejuang_dolar
dollar_warriorArduino
#include const int rs =12, en =11, d4 =5, d5 =4, d6 =3, d7 =2;const int buttonPin1=1;const int buttonPin2=6;const int buzzer=7;unsigned long pts=0;//set buttonstatus bool buttonState1=0;bool buttonState2=0;//angka acak untuk posisi rintangandiangka acak[6];//angka acak untuk jumlah rintanganinangkaacak=0;// nomor acak untuk posisi ptsint randomNums1[3];//nomor acak untuk jumlah ptsint randomNum1=0;//waktu tunda mulai, yang berkurang secara bertahapunsigned int myDelay=500;//membuat boolean ini untuk memeriksa apakah tombol2 ditekan karena jika itu ditekan sekali di loop pertama saya ingin rintangan tidak ditulis sampai akhir itbool temp=0;//variabel ini menyimpan posisi prajurit saat dia menembak. bisa ada 16 posisi karena warrior memiliki 16 posisi.int tempI[16];//i menggunakan boolean ini untuk memeriksa apakah titik tersebut ditangkapbool temp1=0;//gunakan variabel ini untuk menyimpan posisi titik yang ditangkap. itu harus dan array untuk menyimpan posisi semua titik dalam satu iterasi dari loop for pertama. jika disimpan hanya satu posisi, maka titik "lama" akan kembali di iterationint tempI1 yang baru[3]; //gunakan variabel ini untuk mendapatkan sejumlah bidikan prajurit, yang juga merupakan panjang array tempIint button2IsPressed=0;LiquidCrystal lcd(rs, en, d4, d5, d6, d7);void setup() { / / atur jumlah kolom dan baris LCD:lcd.begin(16, 2); // setel mode pin tombol pinMode(buttonPin1,INPUT); pinMode(tombolPin2,INPUT); pinMode(buzzer,OUTPUT); lcd.setCursor(4,0); lcd.print("PERMAINAN"); lcd.setCursor(2,1); lcd.print("MULAI DALAM "); lcd.print("5"); penundaan (1000); lcd.setCursor(12,1); lcd.print("4"); penundaan (1000); lcd.setCursor(12,1); lcd.print("3"); penundaan (1000); lcd.setCursor(12,1); lcd.print("2"); penundaan (1000); lcd.setCursor(12,1); lcd.print("1"); penundaan (1000); lcd.clear();}void loop() { di sini:randomNum=random(5); for(int i=0; i9 &&pts<20) {lcd.setCursor(14,0); penundaan saya=400; } else if(pts>19 &&pts<30) { lcd.setCursor(14,0); penundaan saya=300; } else if(pts>29 &&pts<50) { myDelay=200; lcd.setCursor(14,0); } else if(pts>=50){ pts=0; penundaan saya=500; lcd.clear(); lcd.setCursor(5,0); lcd.print("MENANG"); nada(buzzer,262); penundaan (200); nada (buzzer,330); penundaan (200); nada (bel, 392); penundaan(100); nada (buzzer,330); penundaan(100); nada (bel, 392); penundaan(100); nada (bel, 523); penundaan (200); tidakNada(bel); penundaan(3000); lcd.clear(); pergi ke sini; } else lcd.setCursor(15,0); lcd.print(poin); buttonState1=digitalRead(buttonPin1); buttonState2=digitalRead(buttonPin2); //menetapkan rintangan jika prajurit tidak menembak atau dia menembak tetapi dia juga melompat if(!temp){ for(int j=0; jrandomNums[j]){ lcd.setCursor(randomNums[j],1); lcd.print("#"); } } } //mengatur ptsif(!temp1){ for(int j=0; j  

Skema

game_aUIjA6VZxX.fzz

Proses manufaktur

  1. Catur
  2. Pinball
  3. Sepakbola
  4. Game Arduino Gyroscope dengan MPU-6050
  5. Game Roulette LED 37 DIY
  6. Arduclock RGB 3D
  7. MyRiver
  8. Game Joystick
  9. Temukan Saya
  10. Osiloskop DIY 10Hz-50kHz pada Layar LCD 128x64