INHOUDSOPGAWE:
- Stap 1: Komponentelys:
- Stap 2: Hardewareverbinding
- Stap 3: Programmering
- Stap 4: Eksperimentresultaat
Video: NeoPixels Matrix : Slangspel: 4 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Onthou jy nog die slangetjie wat ons tydens ons kinderjare op ons boks of selfoon gespeel het? Vandag gaan ons leer hoe om 'n slangspel te maak met 8*8 NeoPixels Matrix. Ons kies Arduino uno as die beheersentrum en die joystick -uitbreekmodule om die slang te beheer.
Stap 1: Komponentelys:
Hardeware:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X Buigsame 64 RGB LED 8*8 NeoPixels Matrix
1 X Joystick -uitbreekmodule BKOUT_MD01
3 X gidslyn
Sagteware:
Arduino IDE
Stap 2: Hardewareverbinding
Koppel NeoPixels aan pin D2.
"X" op joystick -uitbreekmodule verbind pen A0 op Arduino UNO -bord, "Y" aansluitpen A1, "K" aansluitpen A2.
Stap 3: Programmering
P#insluit
#definieer PIN 2 // Uitvoerpen #definieer MAX_LED 64 // Hoeveelheid kraal uint32_t c; int a = 0, getal; ongetekende char huan = 0, ci = 0; ongetekende teken u = 40; // Die lettergrootte van die woordgroep ongeteken char x = 0; ongetekende char Kleur [3]; ongetekende 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 ongetekende 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] = // Stel die woord wat gestuur moet word {{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 },}; ongetekende char displayscore [8] [8]; int spoedS = 400; // Aanvanklike snelheid van slang int telling; // Speletelling int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Koördinaat van voedsel int SX, SY; // Koördinaat van slangkop int KEY, K; int aangeskakel; // Aktiveer om game char sx [64] weer te begin; // Koördinaat van slangliggaam [64]; Adafruit_NeoPixel strip = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); nietig RANDOM () {A: FX = random (0, 7); FY = ewekansig (0, 7); for (int i = 0; i <3+telling; i ++) // Voorkom voedselvertoning op slangliggaam {if (FX == sx && FY == sy ) gaan na A; }} void myDelay (ongetekende int -tyd) {// Gedurende die vertragingsperiode van slangbeweging moet ons iets soos voedselglans doen en die rigting van die joystick lees vir (int t = 1; t 950 && KEY! = 5) { K = 8; } anders as (yValue <50 && KEY! = 8) {K = 5; } anders as (xValue 950 && KEY! = 4) {K = 6; }}} // Hier kan u vergelyk of die rigting van die bedieningspaneel teenoorgestelde is as die rigting van die slang. As dit teenoorgestelde is, moet u die toetsbord weggee. /************************************************ ************************************************* ************************************************* ************************************************* ********/ void gameover () {// Sodra die Gameover -program gestop is, druk die sentrale knoppie om die spel weer te begin. ongetekende char waarde, y; Kleur [0] = ewekansig (3, 18); // Stel kleur in. Parameter is R G B, reeks 0-255. Kleur [1] = ewekansig (3, 18); Kleur [2] = ewekansig (3, 18); c = strook. Kleur (Kleur [1], Kleur [0], Kleur [2]); waarde = telling / 10; waarde = waarde * 4; y = 0; vir (getal = waarde; getal <waarde+4; getal ++) {vir (ongetekende karakter vertikaal = 0; vertikaal <8; vertikaal ++) {displayscore [y] [vertikaal] = karakter [getal] [vertikaal]; } y ++; } waarde = telling % 10; waarde = waarde * 4; vir (getal = waarde; getal <waarde+4; getal ++) {vir (ongetekende karakter vertikaal = 0; vertikaal <8; vertikaal ++) {displayscore [y] [vertikaal] = karakter [getal] [vertikaal]; } y ++; } vir (ongeteken teken horisontaal = 0; horisontaal <8; horisontaal ++) {vir (ongetekende karakter vertikaal = 0; vertikaal <8; vertikaal ++) {if (displayscore [horisontaal] [vertikaal] == 1) // Beoordeel of die lig is aan. {strip.setPixelColor (lig [horisontaal] [vertikaal], c); } anders strip.setPixelColor (lig [horisontaal] [vertikaal], 0); }} strip.show (); // Stuur datavertraging (5000); K = 0; // Stel joystickrigting sx [0] = 2 terug; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Stel slangkoördinaat -telling terug = 0; // Stel die snelheid van die spel telling S = 400 terug; // Die aanvanklike snelheid van die slang} leemte -opstelling () {Serial.begin (9600); // Initialiseer biblioteek strip.begin (); // Stuur data. Verander die kleur van elke punt as 0. Elke punt word dus nie aan die begin belig nie. strip.show (); K = 0; // Stel die rigting van die joystick sx [0] = 2 terug; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Herstel die slangkoördinaat telling = 0; // Herstel spel telling Kleur [0] = ewekansig (3, 18); // Stel kleur in. Parameter is R G B, reeks 0-255. Kleur [1] = ewekansig (3, 18); Kleur [2] = ewekansig (3, 18); c = strook. Kleur (Kleur [1], Kleur [0], Kleur [2]); // Groen Rooi Blou // Stel kleur in vir (getal = 0; getal <24; getal ++) {strip.setPixelColor (gaan [nommer], c); } strip.show (); // Stuur datavertraging (2000); RANDOM (); // Produseer voedsel} void mobile () {SLEUTEL = K; // Elke beweging van die slang laat die rigting vir 'n slag verander. as (SLEUTEL == 8) // Slang opwaartse beweging {vir (int i = 2 + telling; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; if (sy [0] <0) // Gaan oor die grens en gaan aan die ander kant sy [0] = 7; } anders as (KEY == 5) // Slang afwaartse beweging {vir (int i = 2 + telling; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; if (sy [0]> 7) // Gaan oor die grens en gaan aan die ander kant sy [0] = 0; } anders as (SLEUTEL == 4) // Slang links beweging {vir (int i = 2 + telling; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; if (sx [0] <0) // Gaan oor die grens en gaan aan die ander kant sx [0] = 7; } anders as (SLEUTEL == 6) // Slangregte beweging {vir (int i = 2 + telling; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; if (sx [0]> 7) // Gaan oor die grens en gaan aan die ander kant sx [0] = 0; } // Beweeg slangliggaam met knoppie} leë skerms () {vir (getal = 0; getal <64; getal ++) // Maak die skerm skoon {strip.setPixelColor (getal, 0); } strip.show (); Kleur [0] = 40; // Stel kleur. Parameter is R G B, reeks 0-255. Kleur [1] = 0; Kleur [2] = 0; c = strook. Kleur (Kleur [1], Kleur [0], Kleur [2]); // Groen rooi blou // Stel kleur x = lig [FX] [FY]; // Wys voedselstrook.setPixelColor (x, c); Kleur [0] = ewekansig (3, 18); // Stel kleur. Parameter is R G B, reeks 0-255. Kleur [1] = ewekansig (3, 18); Kleur [2] = ewekansig (3, 18); c = strook. Kleur (Kleur [1], Kleur [0], Kleur [2]); // Groen Rooi Blou // Stel kleur in vir (int i = 2 + telling; i> 0; i--) // Vertoon slangliggaam {x = lig [sx [sy ; strip.setPixelColor (x, c); } Kleur [0] = 0; // Stel kleur. Parameter is R G B, reeks 0-255. Kleur [1] = 40; Kleur [2] = 0; c = strook. Kleur (Kleur [1], Kleur [0], Kleur [2]); // Groen Rooi Blou // Stel kleur x = lig [sx [0] [sy [0]; // Vertoon slangkopstrook.setPixelColor (x, c); strip.show (); // Stuur data} leemte -lus () {mobile (); myDelay (speedS); // Binne () is vertragingstyd. vertoon (); SX = sx [0]; SY = sy [0]; // Kry koördinaat van slangkop vir (int i = 1; i <= 2+telling; i ++) {if (SX == sx && SY == sy ) gameover (); } // Beoordeel of die slangkop aan sy liggaam geraak het. As dit aangeraak word, stuur dan na GameOver. as (SY == FY && SX == FX) {RANDOM (); telling ++; Kleur [0] = 40; // Stel kleur. Parameter is R G B, reeks 0-255. Kleur [1] = 0; Kleur [2] = 0; c = strook. Kleur (Kleur [1], Kleur [0], Kleur [2]); // Groen rooi blou // Stel kleur x = lig [FX] [FY]; // Wys voedselstrook.setPixelColor (x, c); strip.show (); // Stuur data as (! (telling % 5)) {// Versnel slangspoed volgens die telling. Versamel elke 5 kosse 100 ms. spoedS = spoedS - 50; if (speedS <150) // Die onderste limiet is 200 ms. As die spoed laer is as 200 ms, bly die spoed 200 ms. spoed S = 150; }}} // Beoordeel of voedsel geëet word. As die slang kos geëet het, tel dan die tellings op en genereer voedsel lukraak. }
Eksperimentresultaat
Stap 4: Eksperimentresultaat
Relatiewe lesings:
FreaksBot Bluetooth -motor
Steek die eerste kraal aan op 8*8 NeoPixels Matrix met Arduino
Micro: bit Experiment 05: RGB LED - Elecfreaks Mirco: bit Starter Kit Course
Vrydag -produkpos: LED -musiekfrekwensiespektrum -soldeerstel vir skerms
Gebruik ElecFreaks Micro: bit Tinker Kit om 'n slim lig te maak
Aanbeveel:
DIY SMART LED MATRIX (ESP8266 + WS2812 / NeoPixels): 7 stappe (met foto's)
DIY SMART LED MATRIX (ESP8266 + WS2812 / NeoPixels): Hier is my inleiding tot 'n projek wat ek baie opgewonde is om aan u te wys. Dit gaan oor 'n DIY Smart LED Matrix waarmee u daarop kan wys dat data, soos YouTube -statistieke, u Smart Home -statistieke, temperatuur, humiditeit 'n eenvoudige horlosie kan wees, of net
IoT Smart Clock Dot Matrix Gebruik Wemos ESP8266 - ESP Matrix: 12 stappe (met foto's)
IoT Smart Clock Dot Matrix Gebruik Wemos ESP8266-ESP Matrix: Maak jou eie IoT Smart Clock wat kan: Display Clock met 'n pragtige animasie-ikoon Display Reminder-1 to Reminder-5 Display Calendar Display Moslem Gebedstye Weer Weerinligting Nuus Vertoon Advies Vertoon Bitcoin koers vertoon
Slangspel: 4 stappe
Snake Game: Hallo ouens, vandag gaan ek jou wys hoe om 'n basiese slangspel in Python te maak en vriende in hierdie vakansie te verbaas. Dit is baie eenvoudig; u hoef net python 3 en pygame te installeer. In hierdie instruksies het ek 'n video bygevoeg oor hoe om pygame te installeer. Na
Arduino OLED -slangspel: 3 stappe
Arduino OLED Snake Game: Hallo en welkom, ons instruksies oor hoe om te maak en arduino OLED Game, hierdie projek het ontstaan toe ons probeer om ons eerste wedstryd ooit met 'n arduino te maak, soooo, ons het gedink waar beter om te begin as die Nokia klassieke slang (wel ten minste
MATRIX Voice en MATRIX Creator met Alexa (weergawe C ++): 7 stappe
MATRIX Voice en MATRIX Creator met Alexa (weergawe C ++): Vereiste hardeware Laat ons eers kyk wat u benodig voordat u begin. Raspberry Pi 3 (aanbeveel) of Pi 2 Model B (ondersteun). MATRIX Voice of MATRIX Creator - Raspberry Pi het nie 'n ingeboude mikrofoon nie, die MATRIX Voice/Creator het 'n