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

Game Video LCD Arduino

Komponen dan persediaan

Breadboard (generik)
× 1
Kabel jumper (generik)
× 1
Arduino UNO
× 1
Kabel USB-A ke B
× 1
Potensiometer putar (generik)
× 1
Joystick analog (Generik)
× 1
Buzzer
× 1
Adafruit LCD Standar - 16x2 Putih di Atas Biru
× 1

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Ini adalah proyek yang didasarkan pada video game yang saya temukan di internet. Proyek ini memiliki banyak fitur seperti bel untuk berbunyi ketika karakter Anda bertabrakan atau melompati rintangan. Selain itu, untuk memberikan sensasi permainan video, ia memiliki joystick (harus memiliki tombol) karena Anda cukup menekan tombol joystick untuk melompat. Video game ini adalah tentang Anda dapat menebaknya! (Seorang pria berlari dan melompati rintangan dan menghindarinya.) Tujuan permainan ini adalah tentang mendapatkan poin sebanyak mungkin (satu poin untuk setiap detik Anda berada di jalur dan menghindari rintangan).

Kode

  • Kode
KodeArduino
#termasuk #menentukan PIN_BUTTON 2#menentukan PIN_AUTOPLAY 1#menentukan PIN_BUZZER 8#menentukan PIN_READWRITE 10#menentukan PIN_CONTRAST 12#menentukan SPRITE_RUN1 1#menentukan SPRITE_RUN2 #menentukan SPRITE_RUN2 // Menggunakan '.' //menentukan karakter untuk kepala#menentukan SPRITE_JUMP_LOWER 4#menentukan SPRITE_TERRAIN_EMPTY ' ' // Menggunakan karakter ' '#menentukan SPRITE_TERRAIN_SOLID 5#menentukan SPRITE_TERRAIN_SOLID_RIGHT 6#menentukan SPRITE_TERRAIN_TERRAIN_SOLID posisi horizontal pada layar HORID_#POSIHORID_LEFT. TERRAIN_EMPTY 0#mendefinisikan TERRAIN_LOWER_BLOCK 1#mendefinisikan TERRAIN_UPPER_BLOCK 2#mendefinisikan HERO_POSITION_OFF 0 // Pahlawan tidak terlihat#menentukan HERO_POSITION_RUN_LOWER_1 1 // Pahlawan berlari di baris bawah (pose 1)#menentukan HERO_POSER_2_POSITION_JULI_POS_2///(HERO_POSER_1_POSITION_RUN_POSITION_POSITION_RUN_RUN_POS) / Memulai lompatan#menentukan HERO_POSITION_JUMP_2 4 // Naik setengah jalan#menentukan HERO_POSITION_JUMP_3 5 // Melompat ada di baris atas#menentukan HERO_POSITION_JUMP_4 6 // Melompat ada di baris atas#menentukan HERO_POSITION_JUMP_5 7 // Melompat ada di baris atas#mendefinisikan HERO_POSITION_JUMP_POSITION_JUMP_POSITION_ 8 // Lompat ada di baris atas#menentukan HERO_POSITION_JUMP_7 9 // Setengah jalan ke bawah#menentukan HERO_POSITION_JUMP_8 10 // Tentang mendarat#menentukan HERO_POSITION_RUN_UPPER_1 11 // Pahlawan berlari di baris atas (pose 1)#define HERO_POSITION_RUN_UPPER_2 12 // (pose 2)LiquidCrystal lcd(11, 9, 6, 5, 4, 3);static char terrainUpper[TERRAIN_WIDTH + 1];static char terrainLower [TERRAIN_WIDTH + 1];tombol bool statisPushed =false;void initializeGraphics(){ static byte graphics[] ={ // Jalankan posisi 1 B01100, B01100, B00000, B01110, B11100, B01100, B11010, B10011, // Jalankan posisi 2 B01100, B01100, B00000, B01100, B01100, B01100, B01100, B01110, // Lompat B01100, B01100, B00000, B11110, B01101, B11111, B10000, B00000, // Lompat ke bawah B11110, B01101, B11111, B10000, B00000, B00000 , B00000, B00000, // Ground B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111, // Ground kanan B00011, B00011, B00011, B00011, B00011, B00011, B00011, B00011, // Ground kiri B11000, B11000, B11000, B11000, B11000, B11000, B11000, B11000, }; di aku; // Lewati menggunakan karakter 0, ini memungkinkan lcd.print() digunakan untuk // menggambar banyak karakter dengan cepat untuk (i =0; i <7; ++i) { lcd.createChar(i + 1, &graphics[i * 8]); } untuk (i =0; i  9999) ? 5 :(skor> 999) ? 4 :(skor> 99) ? 3 :(skor> 9) ? 2 :1; // Gambar pemandangan terrainUpper[TERRAIN_WIDTH] ='\0'; medanLower[TERRAIN_WIDTH] ='\0'; char temp =terrainUpper[16-digit]; medanUpper[16-digit] ='\0'; lcd.setCursor(0,0); lcd.print(terrainUpper); medanUpper[16-digit] =suhu; lcd.setCursor(0,1); lcd.print(terrainLower); lcd.setCursor(16 - angka,0); lcd.print(skor); medanUpper[HERO_HORIZONTAL_POSITION] =simpanan atas; medanLower[HERO_HORIZONTAL_POSITION] =lebih rendahSimpan; kembali bertabrakan;}// Tangani penekanan tombol sebagai tombolPush() interupsivoid { buttonPushed =true;}pengaturan batal(){ pinMode(PIN_READWRITE, OUTPUT); digitalWrite(PIN_READWRITE, RENDAH); pinMode(PIN_CONTRAST, OUTPUT); digitalWrite(PIN_CONTRAST, RENDAH); pinMode(PIN_BUTTON, INPUT); digitalWrite(PIN_BUTTON, TINGGI); pinMode(PIN_AUTOPLAY, OUTPUT); digitalWrite(PIN_AUTOPLAY, TINGGI); pinMode(PIN_BUZZER,OUTPUT);//menginisialisasi pin buzzer sebagai output digitalWrite(PIN_BUZZER, LOW); // Pin digital 2 memetakan untuk menginterupsi 0 attachInterrupt(0/*PIN_BUTTON*/, buttonPush, FALLING); initializeGraphics(); lcd.begin(16, 2);}void loop(){ byte statis heroPos =HERO_POSITION_RUN_LOWER_1; byte static newTerrainType =TERRAIN_EMPTY; byte statis newTerrainDuration =1; bermain bool statis =salah; kedipan bola statis =salah; static unsigned int distance =0; if (!playing) { drawHero((blink) ? HERO_POSITION_OFF :heroPos, terrainUpper, terrainLower, distance>> 3); if (berkedip) { lcd.setCursor(0,0); lcd.print("Tekan Mulai"); } penundaan (250); berkedip =!berkedip; if (tombolDidorong) { initializeGraphics(); heroPos =HERO_POSITION_RUN_LOWER_1; bermain =benar; buttonPushed =salah; jarak =0; } kembali; } // Geser medan ke kiri advanceTerrain(terrainLower, newTerrainType ==TERRAIN_LOWER_BLOCK ? SPRITE_TERRAIN_SOLID :SPRITE_TERRAIN_EMPTY); advanceTerrain(terrainUpper, newTerrainType ==TERRAIN_UPPER_BLOCK ? SPRITE_TERRAIN_SOLID :SPRITE_TERRAIN_EMPTY); // Buat medan baru untuk dimasuki di sebelah kanan if (--newTerrainDuration ==0) { if (newTerrainType ==TERRAIN_EMPTY) { newTerrainType =(random(3) ==0) ? TERRAIN_UPPER_BLOCK :TERRAIN_LOWER_BLOCK; newTerrainDuration =2 + acak(10); } else { newTerrainType =TERRAIN_EMPTY; newTerrainDuration =10 + acak(10); } } if (buttonPushed) { if (heroPos <=HERO_POSITION_RUN_LOWER_2) heroPos =HERO_POSITION_JUMP_1; buttonPushed =salah; digitalWrite(PIN_BUZZER,TINGGI); } if (drawHero(heroPos, terrainUpper, terrainLower, distance>> 3)) { bermain =false; // Pahlawan bertabrakan dengan sesuatu. Sangat buruk. for (int i =0; i <=2; i++) { digitalWrite(PIN_BUZZER, HIGH); penundaan(100); digitalWrite(PIN_BUZZER, RENDAH); penundaan(100); } } else { if (heroPos ==HERO_POSITION_RUN_LOWER_2 || heroPos ==HERO_POSITION_JUMP_8) { heroPos =HERO_POSITION_RUN_LOWER_1; } else if ((heroPos>=HERO_POSITION_JUMP_3 &&heroPos <=HERO_POSITION_JUMP_5) &&terrainLower[HERO_HORIZONTAL_POSITION] !=SPRITE_TERRAIN_EMPTY) { heroPos =HERO_POSITION_RUN_UPPER_1; } else if (heroPos>=HERO_POSITION_RUN_UPPER_1 &&terrainLower[HERO_HORIZONTAL_POSITION] ==SPRITE_TERRAIN_EMPTY) { heroPos =HERO_POSITION_JUMP_5; } else if (heroPos ==HERO_POSITION_RUN_UPPER_2) { heroPos =HERO_POSITION_RUN_UPPER_1; } else { ++heroPos; } ++jarak; digitalWrite(PIN_AUTOPLAY, terrainLower[HERO_HORIZONTAL_POSITION + 2] ==SPRITE_TERRAIN_EMPTY ? HIGH :LOW); } penundaan(100); digitalWrite(PIN_BUZZER,LOW);}

Skema

Ini akan menunjukkan kepada Anda bagaimana menghubungkan semua bagian bersama-sama karena tidak semua kabel ditunjukkan pada gambar sampul.

Proses manufaktur

  1. Detektor Bahasa TinyML Berbasis Edge Impulse &Arduino
  2. Game Arduino Gyroscope dengan MPU-6050
  3. Arduino Digital Dice
  4. Game Roulette LED 37 DIY
  5. Pengontrol Game Arduino
  6. Game Joystick
  7. Temukan Saya
  8. Game Pixel Chaser
  9. Osiloskop DIY 10Hz-50kHz pada Layar LCD 128x64
  10. Lampu Meja Reaktif Audio Arduino