Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Snake LED 16x16 matrixspel

Componenten en benodigdheden

Arduino UNO
× 1
RGB LED-pixelmatrix, NeoPixel NeoMatrix
Ik weet het niet zeker. ik kocht mijn led-matrix op aliexpress. De link is hier http://ali.pub/4wxs2s
× 1
Jumperdraden (algemeen)
× 1
Analoge joystick (algemeen)
× 1
Broodplank (algemeen)
× 1

Over dit project

Hallo daar! Ik leer arduino-mogelijkheden. En ik besloot het klassieke arcade-slangspel van mijn oude nokia te kopiëren. Dus hier is het.

Ik gebruikte 16x16 LED-matrix, joystick en Arduino UNO. het was niet gemakkelijk want elke led is consistent aangesloten. De logica van bewegen is dus een beetje lastig.

Hier kun je het slangenkarakter besturen. Eet wat lekkers, word volwassen en sterf. Programmacode is klaar om te upgraden.

Veel plezier en geniet ervan. Als je het leuk vindt, denk dan niet twee keer na om mijn YouTube en Instagram te abonneren :) Ze zijn in het Russisch, maar ik ga binnenkort ondertitels maken.

Code

  • Code
CodeC/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 койстик swPin 2 // кнопка джойстикаint slang [256]; // array van snake-elementenint snakeSize =2; // echte slanggrootte int snakeSpeed ​​=500;int rij; // rijnummerint col; // kolom numberint lastDirection =135; // start directionint i, newDirection, OlddX =1, OlddY, f;int rood, groen, blauw, fred, fgroen, fblauw; //colorsCRGB leds [NUM_LEDS]; void setup () { rood =willekeurig (0, 255); groen =willekeurig (0, 255); blauw =willekeurig (0, 255); fred =willekeurig (127, 255); fgroen =willekeurig (127, 255); fblue =willekeurig (127, 255); Serieel.begin(9600); pinMode (pinX, INGANG); pinMode(pinY, INGANG); pinMode (swPin, INPUT); digitalWrite (swPin, HOOG); FastLED.addLeds(leds, NUM_LEDS); FastLED.setHelderheid (HELDERHEID); for( i=0; i<=255; i++ ){ snake[i] =0; } for( i=0; i<=snakeSize; i++ ){ snake[i] =lastDirection+i; } f =willekeurig (0, 255); FastLED.show();}int Snakedirection(int last, int dX, int dY ){ dX =map(dX, 0, 1000, -1, 1); dY =kaart(dY, 0, 1000, -1, 1); if(dX ==0 &&dY ==0 &&OlddX !=dX){ dX =OlddX; } if(dY ==0 &&dX ==0 &&OuddY !=dY){ dY =OuddY; } int newDirection =laatste; if( dX !=0 ){ // bewegen in X-richting if ( row&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 =laatste - dX; // не четная } } if( dY <0){ // bewegen in Y OMLAAG richting if(rij ==15 &&dY ==-1){newDirection =col;} else if ( row&1 ){ newDirection =last + ( kleur*2)+1; // четная } else { newDirection =last + (16-col-1)+(16-col); // не четная } } if( dY> 0){ // bewegen in Y OMHOOG richting if( row ==0 &&dY ==1){ newDirection =255 - col;} else if ( row&1 ){ newDirection =last - (laatste - 16*rij) - (16 - col); // четная } else { newDirection =last - (col*2)-1; // е етная } } OlddX =dX; OuddY =dY; return newDirection;}int snakeMove(int snakeDirection){ for( i=0; i<=255; i++ ){ if( snake[i] ==snakeDirection){ death(); } } FastLED.clear(); for(i=slanggrootte; i>=1; i--){ snake[i] =snake[i-1]; } snake[0] =snakeDirection; for( i=0; i<=255; i++ ){ if( snake[i]){ leds[snake[i]].setRGB(rood, groen, blauw); } } FastLED.show(); rij =(int)(snakeDirection/16); // rijnummer if ( row&1 ){ col =(row+1) * 16 - snakeDirection - 1; } else { col =snakeDirection - rij * 16; } return snakeDirection;}nietig voedsel (int gegeten){ if( gegeten ==f){ snakeSize++; f =willekeurig (0, 255); rood =Fred; groen =fgroen; blauw =fblauw; fred =willekeurig (0, 255); fgroen =willekeurig (0, 255); fblue =willekeurig (0, 255); snakeSpeed ​​=snakeSpeed ​​/ 1.1; } else { leds[f].setRGB(fred, fgreen, fblue); FastLED.show(); }} ongeldige dood (){ snakeSize =2; slangSnelheid =500; rood =255; groen =0; blauw =0; }void color(boolean sw){ if(!sw){ red =random(0,255); groen =willekeurig (0,255); blauw =willekeurig (0,255); }}void loop() { color(digitalRead(swPin)); newDirection =Snakedirection(lastDirection, analogRead(pinX), analogRead(pinY)); lastDirection =snakeMove(newDirection); voedsel (nieuwe richting); vertraging(slangensnelheid);}

Schema's


Productieproces

  1. Arduino-gamecontroller
  2. Arduino Pong Game op 24x16 Matrix met MAX7219
  3. Arduino Nano Tetris-spel op zelfgemaakte 16x8 Matrix
  4. Arduino met Bluetooth om een ​​LED te bedienen!
  5. LED-matrix + bewegingssensor deurdisplay [Arduino Holiday]
  6. Arduino Quadruped
  7. Pixel Chaser-game
  8. Enkele LED Matrix Arduino Flip Clock
  9. Arduino RGB-kleurenmixer
  10. Een LED-matrix besturen met Arduino Uno
  11. DIY Arduino 1D Pong-spel met WS2812 LED-strip