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

Game matriks LED 16x16 Ular

Komponen dan persediaan

Arduino UNO
× 1
Matriks Piksel LED RGB, NeoPixel NeoMatrix
Saya tidak yakin tentang yang satu ini. saya membeli matriks led saya di aliexpress. Tautannya ada di sini http://ali.pub/4wxs2s
× 1
Kabel jumper (generik)
× 1
Joystick analog (Generik)
× 1
Breadboard (generik)
× 1

Tentang proyek ini

Hai, yang di sana! Saya belajar peluang arduino. Dan saya memutuskan untuk menyalin game ular arcade klasik dari nokia lama saya. Jadi, ini dia.

Saya menggunakan matriks LED 16x16, joystick dan Arduino UNO. itu tidak mudah karena setiap led terhubung secara konsisten. Jadi, logika geraknya agak rumit.

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

Bersenang-senang dan nikmati. Jika Anda suka, jangan berpikir dua kali untuk berlangganan youtube dan instagram saya :) Mereka dalam bahasa Rusia, tetapi saya akan segera membuat subtitle.

Kode

  • Kode
KodeC/C++
#include //matrix settings#define NUM_LEDS 256#define DATA_PIN 3#define BRIGHTNESS 8//joystick settings#define pinX A2 // ось X ойстика#define pinY A1 // ось Y ойстика#define swPin 2 // опка ойстикаint ular[256]; // array elemen ularint snakeSize =2; // ukuran ular asli int snakeSpeed ​​=500;int baris; // nomor barisint col; // nomor kolomint LastDirection =135; // mulai arah ke i, Arah baru, OlddX =1, OlddY, f;int merah, hijau, biru, fred, fgreen, fblue; //colorsCRGB leds[NUM_LEDS];void setup() { red =random(0, 255); hijau =acak(0, 255); biru =acak(0, 255); fred =acak(127, 255); fhijau =acak(127, 255); fbiru =acak(127, 255); Serial.begin(9600); pinMode(pinX, INPUT); pinMode(pinY, INPUT); pinMode(swPin, INPUT); digitalWrite(swPin, TINGGI); FastLED.addLeds(led, NUM_LEDS); FastLED.setBrightness(KECERAHAN); untuk( i=0; i<=255; i++ ){ ular[i] =0; } untuk( i=0; i<=Ular Ukuran; i++ ){ ular[i] =LastDirection+i; } f =acak(0, 255); FastLED.show();}int Snakedirection(int last, int dX, int dY ){ dX =map(dX, 0, 1000, -1, 1); dY =peta(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 =terakhir; if( dX !=0 ){ // bergerak ke arah X if ( baris&1 ){ if( col ==0 &&dX ==1){ newDirection =last -15; } else if( col ==15 &&dX ==-1){ newDirection =last +15; } else newDirection =last + dX; // етная } else { if( col ==0 &&dX ==1){ newDirection =last +15; } else if( col ==15 &&dX ==-1 ){ newDirection =last -15; } else newDirection =last - dX; // е етная } } if( dY <0){ // bergerak ke Y arah BAWAH if(row ==15 &&dY ==-1){newDirection =col;} else if ( row&1 ){ newDirection =last + ( col*2)+1; // етная } else { newDirection =last + (16-col-1)+(16-col); // е етная } } if( dY> 0){ // bergerak ke arah Y UP if( baris ==0 &&dY ==1){ newDirection =255 - col;} else if ( baris&1 ){ newDirection =last - (terakhir - 16*baris) - (16 - col); // етная } else { newDirection =last - (col*2)-1; // е етная } } 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--){ ular[i] =ular[i-1]; } ular[0] =arah ular; untuk( i=0; i<=255; i++ ){ if( ular[i] ){ leds[ular[i]].setRGB(merah, hijau, biru); } } FastLED.show(); baris =(int)(snakeDirection/16); // nomor baris if ( baris&1 ){ col =(baris+1) * 16 - snakeDirection - 1; } else { col =snakeDirection - baris * 16; } return snakeDirection;}void food( int eat ){ if( eat ==f ){ snakeSize++; f =acak(0, 255); merah =fred; hijau =hijau; biru =biru; fred =acak(0, 255); fhijau =acak(0, 255); fbiru =acak(0, 255); kecepatan ular =kecepatan ular / 1.1; } else { leds[f].setRGB(fred, fgreen, fblue); FastLED.show(); }}kematian batal(){ ukuran ular =2; kecepatan ular =500; merah =255; hijau =0; biru =0; }warna kosong(boolean sw){ if(!sw){ red =random(0,255); hijau =acak (0,255); biru =acak (0,255); }}void loop() { warna( digitalRead(swPin) ); newDirection =Snakedirection(Arah terakhir, analogRead(pinX), analogRead(pinY)); lastDirection =snakeMove(newDirection); makanan (Arah baru); delay(snakeSpeed);}

Skema


Proses manufaktur

  1. Pengontrol Game Arduino
  2. Game Arduino Pong pada Matrix 24x16 dengan MAX7219
  3. Game Arduino Nano Tetris di Matriks 16x8 Buatan Sendiri
  4. Arduino dengan Bluetooth untuk Mengontrol LED!
  5. Matriks LED + Tampilan Pintu Sensor Gerak [Arduino Holiday]
  6. Arduino Quadruped
  7. Game Pixel Chaser
  8. Matriks LED Tunggal Arduino Flip Clock
  9. Pencampur Warna RGB Arduino
  10. Mengontrol Matriks LED dengan Arduino Uno