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

Buat Game Snake pada Matriks LED 16x16 dengan Arduino UNO

Komponen dan Perlengkapan

Tentang Proyek Ini

Halo! Saya sedang mempelajari peluang Arduino. Dan saya memutuskan untuk menyalin game snake arcade klasik dari nokia lama saya. Jadi, inilah caranya.

Saya menggunakan matriks LED 16x16, joystick dan Arduino UNO. Itu tidak mudah karena setiap LED terhubung secara berurutan. Jadi, logika pergerakan sedikit rumit.

Di sini Anda dapat mengontrol karakter snake. Makan makanan lezat, tumbuh, dan mati. Kode program siap untuk ditingkatkan.

Selamat bersenang-senang dan nikmati. Jika Anda menyukainya jangan ragu untuk langganan YouTube dan Instagram saya :) Mereka dalam bahasa Rusia, tetapi saya akan segera membuat subtitle.

Buat Game Snake pada Matriks LED 16x16 dengan Arduino UNO
Buat Game Snake pada Matriks LED 16x16 dengan Arduino UNO
Buat Game Snake pada Matriks LED 16x16 dengan Arduino UNO

Kode

KodeC/C++
#include <FastLED.h> //pengaturan matriks #define NUM_LEDS 256 #define DATA_PIN 3 #define BRIGHTNESS 8 //pengaturan joystick #define pinX A2 // sumbu X joystick #define pinY A1 // sumbu Y joystick #define swPin 2 // tombol joystick int snake[256]; // array elemen snake int snakeSize = 2; // ukuran snake sebenarnya int snakeSpeed = 500; int row; // nomor baris int col; // nomor kolom int lastDirection = 135; // arah awal int i, newDirection, OlddX = 1, OlddY, f; int red, green, blue, fred, fgreen, fblue; //warna CRGB leds[NUM_LEDS]; void setup() { red = random(0, 255); green = random(0, 255); blue = random(0, 255); fred = random(127, 255); fgreen = random(127, 255); fblue = random(127, 255); Serial.begin(9600); pinMode(pinX, INPUT); pinMode(pinY, INPUT); pinMode(swPin, INPUT); digitalWrite(swPin, HIGH); FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS); FastLED.setBrightness(BRIGHTNESS); for( i=0; i<=255; i++ ){ snake[i] = 0; } for( i=0; i<=snakeSize; i++ ){ snake[i] = lastDirection+i; } f = random(0, 255); FastLED.show(); } int Snakedirection(int last, int dX, int dY ){ dX = map(dX, 0, 1000, -1, 1); dY = map(dY, 0, 1000, -1, 1); if(dX == 0 && dY == 0 && OlddX != dX){ dX = OlddX; } if(dY == 0 && dX == 0 && OlddY != dY){ dY = OlddY; } int newDirection = last; if( dX != 0 ){ // bergerak di arah X if ( row&1 ){ if( col == 0 && dX == 1){ newDirection = last -15; } else if( col == 15 && dX == -1){ newDirection = last +15; } else newDirection = last + dX; // genap } else { if( col == 0 && dX == 1){ newDirection = last +15; } else if( col == 15 && dX == -1 ){ newDirection = last -15; } else newDirection = last - dX; // ganjil } } if( dY < 0){ // bergerak di arah Y BAWAH if(row == 15 && dY == -1){newDirection = col;} else if ( row&1 ){ newDirection = last + (col*2)+1; // genap } else { newDirection = last + (16-col-1)+(16-col); // ganjil } } if( dY > 0){ // bergerak di arah Y ATAS if( row == 0 && dY == 1){ newDirection = 255 - col;} else if ( row&1 ){ newDirection = last - (last - 16*row) - (16 - col); // genap } else { newDirection = last - (col*2)-1; // ganjil } } OlddX = dX; OlddY = dY; return newDirection; } int snakeMove(int snakeDirection){ for( i=0; i<=255; i++ ){ if( snake[i] == snakeDirection ){ death(); } } FastLED.clear(); for(i=snakeSize; i>=1; i--){ snake[i] = snake[i-1]; } snake[0] = snakeDirection; for( i=0; i<=255; i++ ){ if( snake[i] ){ leds[snake[i]].setRGB(red, green, blue); } } FastLED.show(); row = (int)(snakeDirection/16); // nomor baris if ( row&1 ){ col = (row+1) * 16 - snakeDirection - 1; } else { col = snakeDirection - row * 16; } return snakeDirection; } void food( int eaten ){ if( eaten == f ){ snakeSize++; f = random(0, 255); red = fred; green = fgreen; blue = fblue; fred = random(0, 255); fgreen = random(0, 255); fblue = random(0, 255); snakeSpeed = snakeSpeed / 1.1; } else { leds[f].setRGB(fred, fgreen, fblue); FastLED.show(); } } void death(){ snakeSize = 2; snakeSpeed = 500; red = 255; green = 0; blue = 0; } void color(boolean sw){ if(!sw){ red = random(0,255); green = random(0,255); blue = random(0,255); } } void loop() { color( digitalRead(swPin) ); newDirection = Snakedirection(lastDirection, analogRead(pinX), analogRead(pinY)); lastDirection = snakeMove(newDirection); food(newDirection); delay(snakeSpeed); } 

Skematik

Buat Game Snake pada Matriks LED 16x16 dengan Arduino UNO

Proses manufaktur

  1. Pengontrol USB Game Arduino DIY – Buat Gamepad Tinggi Performa Sendiri
  2. Bangun Konsol Pong LED 24×16 dengan Arduino Nano & MAX7219
  3. Buat Game Tetris dengan Arduino Nano pada Matriks LED DIY 16×8
  4. Kontrol LED melalui Bluetooth dengan Arduino – Panduan DIY Sederhana
  5. Tampilan Pintu Matriks LED Interaktif dengan Sensor Gerak PIR – Ucapan Liburan Arduino
  6. Membuat Robot Quadruped Arduino Cerdas: Panduan Langkah demi Langkah
  7. Pixel Chaser: Game LED Interaktif Satu Ketukan dengan Arduino Nano
  8. Jam Flip Arduino dengan Matriks LED 8×8 – Proyek Jam Waktu Nyata DIY
  9. Pencampur Warna LED RGB Arduino – Proyek DIY Untuk Pemula
  10. Menguasai Matriks LED 8×8 dengan Arduino Uno: Panduan Langkah demi Langkah