Innehållsförteckning:
- Steg 1: Komponentlista:
- Steg 2: Maskinvaruanslutning
- Steg 3: Programmering
- Steg 4: Experimentresultat
Video: NeoPixels Matrix : Ormspel: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:38
Kommer du fortfarande ihåg ormspel som vi spelade på vår låda eller mobil under vår barndom? Idag ska vi lära oss hur man gör ett ormspel med 8*8 NeoPixels Matrix. Vi väljer Arduino uno som kontrollcenter och styrspakmodul för styrning av ormen.
Steg 1: Komponentlista:
Hårdvara:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X Flexibel 64 RGB LED 8*8 NeoPixels Matrix
1 X Joystick -brytningsmodul BKOUT_MD01
3 X guidelinje
Programvara:
Arduino IDE
Steg 2: Maskinvaruanslutning
Anslut NeoPixels till stift D2.
"X" på joystick -brytningsmodul Anslut stift A0 på Arduino UNO -kort, "Y" Anslut stift A1, "K" Anslut stift A2.
Steg 3: Programmering
P#inkluderar
#define PIN 2 // Output Pin #define MAX_LED 64 // Antal pärlor uint32_t c; int a = 0, tal; osignerad char huan = 0, ci = 0; osignerad tecken u = 40; // Teckensnittsstorleken för ordgruppen osignerad tecken x = 0; osignerad röding Färg [3]; osignerad 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 osignerade teckenlampor [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},}; osignerat tecken [8] = // Ställ in det ord som ska skickas {{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 },}; osignerad char visar poäng [8] [8]; int hastighetS = 400; // Initial hastighet av orm int poäng; // Spelpoäng int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Koordinat för mat int SX, SY; // Koordinat för ormhuvud int KEY, K; int Aktiverat; // Aktivera för att starta om spel char sx [64]; // Koordinat för ormkroppssy [64]; Adafruit_NeoPixel strip = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void RANDOM () {A: FX = slumpmässig (0, 7); FY = slumpmässig (0, 7); för (int i = 0; i <3+poäng; i ++) // Förhindra att mat visas på ormkroppen {if (FX == sx && FY == sy ) gå till A; }} void myDelay (unsigned int Time) {// Under fördröjningsperioden för ormrörelser måste vi göra något som matglitter och läsa styrspaken för (int t = 1; t 950 && KEY! = 5) { K = 8; } annat om (yValue <50 && KEY! = 8) {K = 5; } annat om (xValue 950 && KEY! = 4) {K = 6; }}} // Här kan du jämföra om knappsatsens riktning är motsatt ormens rörelseriktning. Om det är motsatt, ge upp knappsatsen. /************************************************* ************************************************** ************************************************** ************************************************** ********/ void gameover () {// När Gameover -programmet har stoppats trycker du på den centrala knappen för att starta om spelet. osignerat rödningsvärde, y; Färg [0] = slumpmässig (3, 18); // Ställ in färg. Parameter är R G B, intervall 0-255. Färg [1] = slumpmässig (3, 18); Färg [2] = slumpmässig (3, 18); c = remsa. Färg (Färg [1], Färg [0], Färg [2]); värde = poäng / 10; värde = värde * 4; y = 0; för (tal = värde; tal <värde+4; tal ++) {för (osignerad char vertical = 0; vertikal <8; vertikal ++) {displayscore [y] [vertikal] = tecken [nummer] [vertikal]; } y ++; } värde = poäng % 10; värde = värde * 4; för (tal = värde; tal <värde+4; tal ++) {för (osignerad char vertical = 0; vertikal <8; vertikal ++) {displayscore [y] [vertikal] = tecken [nummer] [vertikal]; } y ++; } för (osignerat tecken horisontellt = 0; horisontellt <8; horisontellt ++) {för (osignerat tecken vertikalt = 0; vertikalt <8; vertikalt ++) {if (displayscore [horisontellt] [vertikalt] == 1) // Bedöm om ljuset är på. {strip.setPixelColor (ljus [horisontell] [vertikal], c); } annars strip.setPixelColor (ljus [horisontell] [vertikal], 0); }} strip.show (); // Skicka datafördröjning (5000); K = 0; // Återställ joystickriktningen sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Återställ ormkoordinatpoäng = 0; // Återställ spelet poäng hastighetS = 400; // Ormens initialhastighet} void setup () {Serial.begin (9600); // Initialize library strip.begin (); // Skicka data. Standardfärgen för varje punkt som 0. Så varje punkt belyses inte i början. strip.show (); K = 0; // Återställ riktningen för joystick sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Återställ ormkoordinatpoäng = 0; // Återställ spelpoäng Färg [0] = slumpmässig (3, 18); // Ställ in färg. Parameter är R G B, intervall 0-255. Färg [1] = slumpmässig (3, 18); Färg [2] = slumpmässig (3, 18); c = remsa. Färg (Färg [1], Färg [0], Färg [2]); // Grön Röd Blå // Ställ in färg för (tal = 0; tal <24; nummer ++) {strip.setPixelColor (gå [nummer], c); } strip.show (); // Skicka datafördröjning (2000); SLUMPMÄSSIG(); // Producera mat} void mobile () {KEY = K; // Varje ormrörelse gör att riktningen ändras för en gångs skull. om (KEY == 8) // Orm uppåtgående rörelse {för (int i = 2 + poäng; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; if (sy [0] <0) // Gå bortom gränsen och fortsätt på andra sidan sy [0] = 7; } annat om (KEY == 5) // Orm nedåtgående rörelse {för (int i = 2 + poäng; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; if (sy [0]> 7) // Gå bortom gränsen och fortsätt på andra sidan sy [0] = 0; } annat om (KEY == 4) // Snake vänster rörelse {för (int i = 2 + poäng; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; if (sx [0] <0) // Gå bortom gränsen och fortsätt på andra sidan sx [0] = 7; } annat om (KEY == 6) // Orm höger rörelse {för (int i = 2 + poäng; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; if (sx [0]> 7) // Gå bortom gränsen och fortsätt på andra sidan sx [0] = 0; } // Flytta ormkropp med knapp} tomrumsvisning () {för (nummer = 0; nummer <64; nummer ++) // Rensa skärmen {strip.setPixelColor (tal, 0); } strip.show (); Färg [0] = 40; // Ställ in färg. Parameter är R G B, intervall 0-255. Färg [1] = 0; Färg [2] = 0; c = remsa. Färg (Färg [1], Färg [0], Färg [2]); // Grön Röd Blå // Ställ in färg x = ljus [FX] [FY]; // Visa matremsa.setPixelColor (x, c); Färg [0] = slumpmässig (3, 18); // Ställ in färg. Parameter är R G B, intervall 0-255. Färg [1] = slumpmässig (3, 18); Färg [2] = slumpmässig (3, 18); c = remsa. Färg (Färg [1], Färg [0], Färg [2]); // Grön röd blå // Ställ in färg för (int i = 2 + poäng; i> 0; i--) // Visa ormkropp {x = ljus [sx [sy ; strip.setPixelColor (x, c); } Färg [0] = 0; // Ställ in färg. Parameter är R G B, intervall 0-255. Färg [1] = 40; Färg [2] = 0; c = remsa. Färg (Färg [1], Färg [0], Färg [2]); // Grön röd blå // Ställ in färg x = ljus [sx [0] [sy [0]; // Visa ormhuvudremsa.setPixelColor (x, c); strip.show (); // Skicka data} void loop () {mobile (); myDelay (speedS); // Inom () är fördröjningstid. visar (); SX = sx [0]; SY = sy [0]; // Få koordinat för ormhuvud för (int i = 1; i <= 2+poäng; i ++) {if (SX == sx && SY == sy ) gameover (); } // Bedöm om ormhuvudet rörde kroppen. Vid beröring, sedan vidare till GameOver. om (SY == FY && SX == FX) {RANDOM (); poäng ++; Färg [0] = 40; // Ställ in färg. Parameter är R G B, intervall 0-255. Färg [1] = 0; Färg [2] = 0; c = remsa. Färg (Färg [1], Färg [0], Färg [2]); // Grön Röd Blå // Ställ in färg x = ljus [FX] [FY]; // Visa matremsa.setPixelColor (x, c); strip.show (); // Skicka data om (! (poäng % 5)) {// Accelerera ormhastigheten enligt poängen. Var femte mat som äts får du 100 ms. speedS = speedS - 50; if (speedS <150) // Den nedre gränsen är 200 ms. Om hastigheten är lägre än 200 ms förblir hastigheten 200 ms. hastighet S = 150; }} // Bedöm om maten äts. Om ormen åt mat, plus poäng och återskapa mat slumpmässigt. }
Experiment Resultat
Steg 4: Experimentresultat
Relativa avläsningar:
FreaksBot Bluetooth -bil
Tänd den första pärlan på 8*8 NeoPixels Matrix med Arduino
Micro: bit Experiment 05: RGB LED - Elecfreaks Mirco: Bit Starter Kit Course
Produktprodukt på fredag: LED -musikfrekvensspektrumslödningssats
Använd ElecFreaks Micro: bit Tinker Kit för att skapa ett smart ljus
Rekommenderad:
Digital Clock LED Dot Matrix - ESP Matrix Android App: 14 steg
Digital Clock LED Dot Matrix - ESP Matrix Android App: Den här artikeln är stolt sponsrad av PCBWAY. PCBWAY gör prototyper av hög kvalitet för människor över hela världen. Prova själv och få 10 PCB för bara $ 5 på PCBWAY med mycket bra kvalitet, tack PCBWAY. ESP Matrix Board som jag utvecklat
DIY SMART LED MATRIX (ESP8266 + WS2812 / NeoPixels): 7 steg (med bilder)
DIY SMART LED MATRIX (ESP8266 + WS2812 / NeoPixels): Här är min introduktion till ett projekt som jag är mycket glada att visa dig. Det handlar om en DIY Smart LED -matris som låter dig visa på den, data, till exempel YouTube -statistik, dina smarta hemstatistik, eftersom temperatur, luftfuktighet, kan vara en enkel klocka eller bara
IoT Smart Clock Dot Matrix Använd Wemos ESP8266 - ESP Matrix: 12 steg (med bilder)
IoT Smart Clock Dot Matrix Använd Wemos ESP8266-ESP Matrix: Gör din egen IoT Smart Clock som kan: Visa klocka med en vacker animationsikon Display Påminnelse-1 till Påminnelse-5 Visa kalender Visa muslimsk bönstid Visa väderinformation Visa nyheter Visa råd Display Bitcoin -kursvisning
Ormspel: 4 steg
Ormspel: Hej killar, Idag ska jag visa dig hur du gör ett grundläggande ormspel i Python och förvånar vänner under denna semester. Det här är väldigt enkelt, du behöver bara installera python 3 och pygame. I denna instruerbara har jag lagt till video om hur man installerar pygame. Efter
MATRIX Voice och MATRIX Creator som kör Alexa (version C ++): 7 steg
MATRIX Voice och MATRIX Creator som kör Alexa (C ++ -version): Obligatorisk maskinvara Innan vi sätter igång, låt oss granska vad du behöver. Raspberry Pi 3 (rekommenderas) eller Pi 2 modell B (stöds). MATRIX Voice eller MATRIX Creator - Raspberry Pi har ingen inbyggd mikrofon, MATRIX Voice/Creator har en