Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Snake LED 16x16 Matrixspiel

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
RGB-LED-Pixelmatrix, NeoPixel NeoMatrix
Ich bin mir da nicht sicher. Ich habe meine LED-Matrix bei aliexpress gekauft. Der Link ist hier http://ali.pub/4wxs2s
× 1
Jumper (generisch)
× 1
Analoger Joystick (generisch)
× 1
Breadboard (generisch)
× 1

Über dieses Projekt

Hi! Ich lerne Arduino-Möglichkeiten. Und ich beschloss, das klassische Arcade-Schlangenspiel von meinem alten Nokia zu kopieren. Hier ist es also.

Ich habe 16x16 LED-Matrix, Joystick und Arduino UNO verwendet. Es war nicht einfach, jede LED ist durchgängig verbunden. Die Bewegungslogik ist also etwas knifflig.

Hier können Sie den Schlangencharakter steuern. Iss leckeres Essen, werde erwachsen und stirb. Der Programmcode kann aktualisiert werden.

Viel Spaß und Freude. Wenn es dir gefällt, denke nicht zweimal darüber nach, mein Youtube und Instagram zu abonnieren :) Sie sind auf Russisch, aber ich werde sehr bald Untertitel machen.

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 джой .стика#define swPin 2 // кнопка джойстикаint Schlange[256]; // Array von Schlangenelementenint snakeSize =2; // echte Schlangengröße int snakeSpeed ​​=500;int row; // Zeilennummerint col; // Spaltennummerint lastDirection =135; // start directionint i, newDirection, OlddX =1, OlddY, f;int red, green, blue, fred, fgreen, fblue; //colorsCRGB LEDs [NUM_LEDS];void setup () {rot =random (0, 255); grün =zufällig (0, 255); blau =zufällig (0, 255); fred =zufällig (127, 255); fgrün =zufällig (127, 255); fblau =zufällig (127, 255); Serial.begin (9600); pinMode (pinX, EINGANG); pinMode (pinY, EINGANG); pinMode (swPin, EINGANG); digitalWrite (swPin, HIGH); FastLED.addLeds(LEDs, NUM_LEDS); FastLED.setHelligkeit (HELLIGKEIT); for(i=0; i<=255; i++){Schlange[i] =0; } for( i=0; i<=snakeSize; i++ ){ snake[i] =lastDirection+i; } f =zufällig (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 ){ // Bewegung in X-Richtung if ( row&1 ){ if( col ==0 &&dX ==1){ newDirection =last -15; aufrechtzuerhalten. Sonst if (col ==15 &&dX ==-1) { newDirection =last +15; } else newDirection =last + dX; // четная} else { if(col ==0 &&dX ==1){ newDirection =last +15; aufrechtzuerhalten. Sonst if (col ==15 &&dX ==-1) { newDirection =last -15; } else newDirection =last - dX; // не четная } } if( dY <0){ // Bewegung in Y DOWN-Richtung if(row ==15 &&dY ==-1){newDirection =col;} else if ( row&1 ){ newDirection =last + ( Spalte*2)+1; // етная } else { newDirection =last + (16-col-1)+(16-col); // не четная } } if( dY> 0){ // Bewegung in Y-UP-Richtung if( row ==0 &&dY ==1){ newDirection =255 - col;} else if ( row&1 ){ newDirection =last - (letzte - 16*Reihe) - (16 - Spalte); // етная } 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--){ Schlange[i] =Schlange[i-1]; } Schlange[0] =SchlangeRichtung; for ( i =0; i <=255; i ++ ) { if ( Schlange [i] ) { LEDs [Schlange [i]]. setRGB (rot, grün, blau); } } FastLED.show(); Zeile =(int)(snakeDirection/16); // Zeilennummer if ( row&1 ){ col =(row+1) * 16 - snakeDirection - 1; aufrechtzuerhalten. Else {col =snakeDirection - row * 16; } return snakeDirection;}void food( int eaten ){ if( eaten ==f ){ snakeSize++; f =zufällig (0, 255); rot =Fred; grün =fgrün; blau =fblau; fred =zufällig (0, 255); fgrün =zufällig (0, 255); fblau =zufällig (0, 255); Schlangengeschwindigkeit =Schlangengeschwindigkeit / 1,1; aufrechtzuerhalten. Else { leds[f].setRGB (fred, fgreen, fblue); FastLED.show(); }}void Death () { SnakeSize =2; Schlangengeschwindigkeit =500; rot =255; grün =0; blau =0; }void color(boolean sw){ if(!sw){ red =random (0,255); grün =zufällig (0,255); blau =zufällig (0,255); }}void loop () { color (digitalRead (swPin)); newDirection =Snakedirection(lastDirection, analogRead(pinX), analogRead(pinY)); lastDirection =snakeMove(newDirection); Nahrung (neue Richtung); Verzögerung(snakeSpeed);}

Schaltpläne


Herstellungsprozess

  1. Arduino-Gamecontroller
  2. Arduino-Pong-Spiel auf einer 24x16-Matrix mit MAX7219
  3. Arduino Nano Tetris-Spiel auf hausgemachter 16x8-Matrix
  4. Arduino mit Bluetooth zur Steuerung einer LED!
  5. LED-Matrix + Bewegungssensor-Türanzeige [Arduino Holiday]
  6. Arduino-Vierbeiner
  7. Pixel-Chaser-Spiel
  8. Einzelne LED-Matrix-Arduino Flip Clock
  9. Arduino RGB-Farbmischer
  10. Steuerung einer LED-Matrix mit Arduino Uno