Indholdsfortegnelse:
- Trin 1: Komponentliste:
- Trin 2: Hardwareforbindelse
- Trin 3: Programmering
- Trin 4: Eksperimentresultat
Video: NeoPixels Matrix : Snake Game: 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Kan du stadig huske slangespil, vi spillede på vores spilkasse eller mobil i vores barndom? I dag skal vi lære at lave et slangespil med 8*8 NeoPixels Matrix. Vi vælger Arduino uno som kontrolcenter og joystick -udbrudsmodul til at styre slangen.
Trin 1: Komponentliste:
Hardware:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X Fleksibel 64 RGB LED 8*8 NeoPixels Matrix
1 X Joystick breakout -modul BKOUT_MD01
3 X guidelinje
Software:
Arduino IDE
Trin 2: Hardwareforbindelse
Tilslut NeoPixels til pin D2.
"X" på joystick -breakout -modul tilslut pin A0 på Arduino UNO -kort, "Y" connect pin A1, "K" connect pin A2.
Trin 3: Programmering
P#inkluderer
#define PIN 2 // Output Pin #define MAX_LED 64 // Mængde perle uint32_t c; int a = 0, tal; usigneret char huan = 0, ci = 0; usigneret tegn u = 40; // Skriftstørrelsen på ordgruppen usigneret tegn x = 0; usigneret fork Farve [3]; usigneret char go = {2, 3, 4, 5, 9, 14, 17, 20, 22, 26, 27, 29, 34, 35, 36, 37, 41, 46, 49, 54, 58, 59, 60, 61}; // 24 unsigned char light [8] [8] = {{0, 1, 2, 3, 4, 5, 6, 7}, {15, 14, 13, 12, 11, 10, 9, 8}, {16, 17, 18, 19, 20, 21, 22, 23}, {31, 30, 29, 28, 27, 26, 25, 24}, {32, 33, 34, 35, 36, 37, 38, 39}, {47, 46, 45, 44, 43, 42, 41, 40}, {48, 49, 50, 51, 52, 53, 54, 55}, {63, 62, 61, 60, 59, 58, 57, 56},}; unsigned char character [8] = // Indstil det ord, der skal sendes {{0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, // 0 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, // 1 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 2 {0, 1, 1, 1, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 3 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, // 4 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 5 {0, 1, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 6 {0, 1, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, // 7 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 8 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 9 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0 },}; usigneret char viser score [8] [8]; int hastighedS = 400; // Indledende hastighed af slange int score; // Spilscore int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Koordinat for fødevarer int SX, SY; // Koordinat for slangehoved int KEY, K; int Aktiveret; // Aktiver for at genstarte game char sx [64]; // Koordinat for slangekropssy [64]; Adafruit_NeoPixel strip = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void RANDOM () {A: FX = tilfældig (0, 7); FY = tilfældig (0, 7); for (int i = 0; i <3+score; i ++) // Forhindre madvisning på slangekrop {if (FX == sx && FY == sy ) gå til A; }} void myDelay (unsigned int Time) {// I forsinkelsesperioden for slangebevægelse skal vi gøre noget som madglitter og læse joysticks retning for (int t = 1; t 950 && KEY! = 5) { K = 8; } ellers hvis (yValue <50 && KEY! = 8) {K = 5; } ellers hvis (xValue 950 && KEY! = 4) {K = 6; }}} // Her kan du sammenligne, om tastaturets retning er modsat slangens bevægelsesretning. Hvis det er modsat, skal du opgive tastaturet. /************************************************* ************************************************* ************************************************* ************************************************* ********/ void gameover () {// Når Gameover -programmet er stoppet, skal du trykke på den centrale knap for at genstarte spillet. usigneret kulværdi, y; Farve [0] = tilfældig (3, 18); // Indstil farve. Parameter er R G B, område 0-255. Farve [1] = tilfældig (3, 18); Farve [2] = tilfældig (3, 18); c = strimmel. Farve (farve [1], farve [0], farve [2]); værdi = score / 10; værdi = værdi * 4; y = 0; for (tal = værdi; tal <værdi+4; tal ++) {for (unsigned char vertical = 0; vertical <8; vertical ++) {displayscore [y] [vertical] = character [number] [vertical]; } y ++; } værdi = score % 10; værdi = værdi * 4; for (tal = værdi; tal <værdi+4; tal ++) {for (unsigned char vertical = 0; vertical <8; vertical ++) {displayscore [y] [vertical] = character [number] [vertical]; } y ++; } for (usigneret tegn vandret = 0; vandret <8; vandret ++) {for (usigneret tegn lodret = 0; lodret <8; lodret ++) {hvis (displayscore [vandret] [lodret] == 1) // Bedøm om lyset er tændt. {strip.setPixelColor (lys [vandret] [lodret], c); } ellers strip.setPixelColor (lys [vandret] [lodret], 0); }} strip.show (); // Send dataforsinkelse (5000); K = 0; // Nulstil joystickretning sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Nulstil slangekoordinat score = 0; // Nulstil game score speedS = 400; // Slangens starthastighed} hulrumsopsætning () {Serial.begin (9600); // Initialiser biblioteksstrimmel. Begynd (); // Send data. Standardfarven på hvert punkt som 0. Så hvert punkt belyses ikke i begyndelsen. strip.show (); K = 0; // Nulstil retningen for Joystick sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Nulstil slangekoordinat score = 0; // Nulstil spilscore Farve [0] = tilfældig (3, 18); // Indstil farve. Parameter er R G B, område 0-255. Farve [1] = tilfældig (3, 18); Farve [2] = tilfældig (3, 18); c = strimmel. Farve (farve [1], farve [0], farve [2]); // Grøn Rød Blå // Indstil farve for (tal = 0; tal <24; tal ++) {strip.setPixelColor (gå [nummer], c); } strip.show (); // Send dataforsinkelse (2000); TILFÆLDIG(); // Producer mad} void mobile () {NØGLE = K; // Hver slangebevægelse får retningen til at ændre sig for en gangs skyld. hvis (KEY == 8) // Slangens opadgående bevægelse {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; hvis (sy [0] <0) // Gå ud over grænsen og fortsæt på den anden side sy [0] = 7; } ellers hvis (KEY == 5) // Slange nedadgående bevægelse {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; hvis (sy [0]> 7) // Gå ud over grænsen og fortsæt på den anden side sy [0] = 0; } ellers hvis (KEY == 4) // Slange venstre bevægelse {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; hvis (sx [0] <0) // Gå ud over grænsen og fortsæt på den anden side sx [0] = 7; } ellers hvis (KEY == 6) // Slange til højre bevægelse {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; hvis (sx [0]> 7) // Gå ud over grænsen og fortsæt på den anden side sx [0] = 0; } // Flyt slangekrop med knap} tomrum viser () {for (tal = 0; tal <64; tal ++) // Ryd skærmen {strip.setPixelColor (tal, 0); } strip.show (); Farve [0] = 40; // Indstil farve. Parameter er R G B, område 0-255. Farve [1] = 0; Farve [2] = 0; c = strimmel. Farve (farve [1], farve [0], farve [2]); // Grøn Rød Blå // Indstil farve x = lys [FX] [FY]; // Vis madstrimmel.setPixelColor (x, c); Farve [0] = tilfældig (3, 18); // Indstil farve. Parameter er R G B, område 0-255. Farve [1] = tilfældig (3, 18); Farve [2] = tilfældig (3, 18); c = strimmel. Farve (farve [1], farve [0], farve [2]); // Grøn Rød Blå // Indstil farve for (int i = 2 + score; i> 0; i--) // Vis slangekrop {x = light [sx [sy ; strip.setPixelColor (x, c); } Farve [0] = 0; // Indstil farve. Parameter er R G B, område 0-255. Farve [1] = 40; Farve [2] = 0; c = strimmel. Farve (farve [1], farve [0], farve [2]); // Grøn Rød Blå // Indstil farve x = lys [sx [0] [sy [0]; // Vis slangehovedstrimmel.setPixelColor (x, c); strip.show (); // Send data} void loop () {mobile (); myDelay (speedS); // Inden for () er forsinkelsestid. displays (); SX = sx [0]; SY = sy [0]; // Få koordinat for slangehoved for (int i = 1; i <= 2+score; i ++) {if (SX == sx && SY == sy ) gameover (); } // Bedøm om slangehovedet rørte ved dets krop. Hvis det berøres, skal du derefter videresende til GameOver. hvis (SY == FY && SX == FX) {RANDOM (); score ++; Farve [0] = 40; // Indstil farve. Parameter er R G B, område 0-255. Farve [1] = 0; Farve [2] = 0; c = strimmel. Farve (farve [1], farve [0], farve [2]); // Grøn Rød Blå // Indstil farve x = lys [FX] [FY]; // Vis madstrimmel.setPixelColor (x, c); strip.show (); // Send data hvis (! (score % 5)) {// Accelererate slangehastighed i henhold til scoren. Hver 5 spiste mad, accelerer 100 ms. speedS = speedS - 50; hvis (speedS <150) // Den nederste grænse er 200 ms. Hvis hastigheden er lavere end 200 ms, forbliver hastigheden 200 ms. hastighed S = 150; }} // Bedøm, om der spises mad. Hvis slangen spiste mad, så plus score og regenerer mad tilfældigt. }
Eksperimentresultat
Trin 4: Eksperimentresultat
Relative læsninger:
FreaksBot Bluetooth bil
Tænd det første perle på 8*8 NeoPixels Matrix med Arduino
Micro: bit Eksperiment 05: RGB LED - Elecfreaks Mirco: bit Starter Kit Course
Fredagspost: LED musikfrekvensspektrum display lodningssæt
Brug ElecFreaks Micro: bit Tinker Kit til at lave et smart lys
Anbefalede:
DIY SMART LED MATRIX (ESP8266 + WS2812 / NeoPixels): 7 trin (med billeder)
DIY SMART LED MATRIX (ESP8266 + WS2812 / NeoPixels): Her er min introduktion til et projekt, som jeg glæder mig meget til at vise dig. Det handler om en DIY Smart LED Matrix, der lader dig vise på det, data, såsom YouTube -statistik, dine Smart Home -statistikker, da temperatur, luftfugtighed, kan være et simpelt ur eller bare sho
3D -trykt Snake Robot: 7 trin (med billeder)
3D -trykt slangebot: Da jeg fik min 3D -printer, begyndte jeg at tænke over, hvad jeg kan lave med den. Jeg printede mange ting, men jeg ville lave en hel konstruktion ved hjælp af 3D -print. Så tænkte jeg på at lave robotdyr. Min første idé var at lave en hund eller edderkop, men en god
Snake Game: 4 trin
Snake Game: Hello Guys, I dag viser jeg dig, hvordan du laver et grundlæggende slangespil i Python og forbløffer venner i denne ferie. Dette er meget enkelt, du skal bare bruge python 3 og pygame -installation. I denne instruerbare har jeg tilføjet video om, hvordan man installerer pygame. Efter
Arduino OLED Snake Game: 3 trin
Arduino OLED Snake Game: Hej og velkommen, til vores instruktører om hvordan man laver og arduino OLED Game, dette projekt opstod, da vi forsøgte at lave vores første spil nogensinde med en arduino, sååå, vi tænkte på, hvor bedre at starte end Nokia klassisk slange (vel i hvert fald
Game of Snake i C: 8 trin
Game of Snake in C: Snake -spil var populært i gamle mobiltelefoner, som meget let kan udvikles ved hjælp af c -program. For at bygge dette projekt kræver du grundlæggende forståelse af c -syntaks. Eksempel: for loop, while loop osv. Ved at bygge denne type spil projekt dit programmin