Obsah:

Matica NeoPixels, hadia hra: 4 kroky
Matica NeoPixels, hadia hra: 4 kroky

Video: Matica NeoPixels, hadia hra: 4 kroky

Video: Matica NeoPixels, hadia hra: 4 kroky
Video: ПОКАЗЫВАЙ и РАССКАЖИ 30.12.2020 #ПокажииРасскажи 2024, Júl
Anonim
Matica NeoPixels, hadia hra
Matica NeoPixels, hadia hra

Pamätáte si ešte hadiu hru, ktorú sme v detstve hrali na hernom boxe alebo mobile? Dnes sa naučíme, ako vytvoriť hadiu hru s maticou 8*8 NeoPixels. Ako ovládacie centrum a Arduino Breakout modul na ovládanie hada sme vybrali Arduino uno.

Krok 1: Zoznam komponentov:

Hardvér:

1 X Freaduino UNO Rev2.2 MB_EFUNO

1 X flexibilná matica 64 RGB LED 8*8 NeoPixels

1 X Vylamovací modul joysticku BKOUT_MD01

3 X Vodiaca čiara

Softvér:

Arduino IDE

Krok 2: Pripojenie hardvéru

Pripojte NeoPixels na pin D2.

„X“na oddeľovacom module joysticku pripojte pin A0 na doske Arduino UNO, „Y“pripojte pin A1, „K“pripojte pin A2.

Krok 3: Programovanie

P#zahrnúť

#define PIN 2 // Výstupný pin #define MAX_LED 64 // Množstvo guľôčky uint32_t c; int a = 0, číslo; bez znamienka char huan = 0, ci = 0; znak bez znamienka u = 40; // Veľkosť písma skupiny slov bez znamienka char x = 0; bez znamienka Farba [3]; znak bez znamienka = {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 znak bez znaku [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},}; znak bez znamienka [8] = // Nastavenie odosielaného slova {{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} 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, 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, 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, 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, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0 },}; znak bez znamienka zobrazuje skóre [8] [8]; vnútorná rýchlosť S = 400; // Počiatočná rýchlosť skóre int hada; // Skóre hry int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Súradnica jedla int SX, SY; // Súradnica hadej hlavy int KEY, K; int Povolené; // Povoliť reštartovanie hry char sx [64]; // Súradnica znaku hadieho tela [64]; Pásik Adafruit_NeoPixel = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); neplatné NÁHODNÉ () {A: FX = náhodné (0, 7); FY = náhodný (0, 7); for (int i = 0; i <3+score; i ++) // Zabráňte zobrazovaniu jedla na tele hada {if (FX == sx && FY == sy ) goto A; }} void myDelay (unsigned int Time) {// Počas oneskorenia pohybu hada musíme urobiť niečo ako trblietky v jedle a prečítať smer joysticku pre (int t = 1; t 950 && KEY! = 5) { K = 8; } else if (yValue <50 && KEY! = 8) {K = 5; } else if (xValue 950 && KEY! = 4) {K = 6; }} // Tu môžete porovnať, či je smer klávesnice opačný ako smer pohybu hada. Ak je to naopak, vzdajte sa klávesnice. /*********************************************************************** ****************************************************** ****************************************************** ****************************************************** ********/ void gameover () {// Keď sa program Gameover zastaví, stlačením stredového tlačidla hru reštartujte. hodnota znaku bez znamienka, y; Farba [0] = náhodný (3, 18); // Nastavte farbu. Parameter je R G B, rozsah 0-255. Farba [1] = náhodný (3, 18); Farba [2] = náhodné (3, 18); c = pásik. Farba (farba [1], farba [0], farba [2]); hodnota = skóre / 10; hodnota = hodnota * 4; y = 0; for (number = value; number <value+4; number ++) {for (unsigned char vertical = 0; vertical <8; vertical ++) {displayscore [y] [vertical] = character [number] [vertical]; } y ++; } hodnota = skóre % 10; hodnota = hodnota * 4; for (number = value; number <value+4; number ++) {for (unsigned char vertical = 0; vertical <8; vertical ++) {displayscore [y] [vertical] = character [number] [vertical]; } y ++; } for (unsigned char horizontal = 0; horizontal <8; horizontal ++) {for (unsigned char vertical = 0; vertical <8; vertical ++) {if (displayscore [horizontal] [vertical] == 1) // Posúďte, či svetlo je zapnuté {strip.setPixelColor (svetlo [horizontálne] [vertikálne], c); } else strip.setPixelColor (svetlo [horizontálne] [vertikálne], 0); }} strip.show (); // Oneskorenie odoslania údajov (5000); K = 0; // Reset smeru joysticku sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Reset skóre súradnice hada = 0; // Resetovanie rýchlosti skóre hryS = 400; // Počiatočná rýchlosť hada} neplatné nastavenie () {Serial.begin (9600); // Inicializácia knižnice strip.begin (); // Odoslanie údajov. Predvolená farba každého bodu je 0. Každý bod teda nie je na začiatku osvetlený. strip.show (); K = 0; // Reset smeru joysticku sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Reset skóre súradnice hada = 0; // Reset skóre hry Farba [0] = náhodný (3, 18); // Nastavte farbu. Parameter je R G B, rozsah 0-255. Farba [1] = náhodný (3, 18); Farba [2] = náhodné (3, 18); c = pásik. Farba (farba [1], farba [0], farba [2]); // Zelená Červená Modrá // Nastaviť farbu pre (číslo = 0; číslo <24; číslo ++) {strip.setPixelColor (go [číslo], c); } strip.show (); // Oneskorenie odoslania údajov (2000); NÁHODNÝ (); // Produkcia jedla} neplatný mobil () {KEY = K; // Každý pohyb hada raz zmení smer. if (KEY == 8) // Pohyb hada nahor {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; if (sy [0] <0) // Choďte za hranicu a pokračujte na druhej strane sy [0] = 7; } else if (KEY == 5) // Pohyb hada smerom dole {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; if (sy [0]> 7) // Choďte za hranicu a pokračujte na druhej strane sy [0] = 0; } else if (KEY == 4) // Snake left left {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; if (sx [0] <0) // Choďte za hranicu a pokračujte na druhej strane sx [0] = 7; } else if (KEY == 6) // Snake right move {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; if (sx [0]> 7) // Choďte za hranicu a pokračujte na druhej strane sx [0] = 0; } // Pohyb tela hada pomocou tlačidla} neplatné zobrazenie () {pre (číslo = 0; číslo <64; číslo ++) // Vymazanie obrazovky {strip.setPixelColor (číslo, 0); } strip.show (); Farba [0] = 40; // Nastavenie farby. Parameter je R G B, rozsah 0-255. Farba [1] = 0; Farba [2] = 0; c = pásik. Farba (farba [1], farba [0], farba [2]); // Zelená Červená Modrá // Nastaviť farbu x = svetlo [FX] [FY]; // Zobraziť potravinový pás.setPixelColor (x, c); Farba [0] = náhodný (3, 18); // Nastavenie farby. Parameter je R G B, rozsah 0-255. Farba [1] = náhodný (3, 18); Farba [2] = náhodné (3, 18); c = pásik. Farba (farba [1], farba [0], farba [2]); // Zelená Červená Modrá // Nastaviť farbu pre (int i = 2 + skóre; i> 0; i--) // Zobraziť telo hada {x = svetlo [sx [sy ; strip.setPixelColor (x, c); } Farba [0] = 0; // Nastavenie farby. Parameter je R G B, rozsah 0-255. Farba [1] = 40; Farba [2] = 0; c = pásik. Farba (farba [1], farba [0], farba [2]); // Zelená Červená Modrá // Nastaviť farbu x = svetlo [sx [0] [sy [0]; // Zobrazenie pruhu hadej hlavy.setPixelColor (x, c); strip.show (); // Odosielanie dát} void loop () {mobile (); myDelay (speedS); // Do () je čas oneskorenia. zobrazuje (); SX = sx [0]; SY = sy [0]; // Získať súradnice hadej hlavy pre (int i = 1; i <= 2+skóre; i ++) {if (SX == sx && SY == sy ) gameover (); } // Posúďte, či sa hadia hlava dotkla jej tela. Ak sa ho dotknete, presmerujte ho na GameOver. if (SY == FY && SX == FX) {RANDOM (); skóre ++; Farba [0] = 40; // Nastavenie farby. Parameter je R G B, rozsah 0-255. Farba [1] = 0; Farba [2] = 0; c = pásik. Farba (farba [1], farba [0], farba [2]); // Zelená Červená Modrá // Nastaviť farbu x = svetlo [FX] [FY]; // Zobraziť potravinový pás.setPixelColor (x, c); strip.show (); // Odosielanie údajov, ak (! (skóre % 5)) {// Zvýšte rýchlosť hada podľa skóre. Každých 5 zjedených potravín skráťte 100 ms. speedS = speedS - 50; if (speedS <150) // Dolný limit je 200ms. Ak je rýchlosť nižšia ako 200 ms, rýchlosť zostane 200 ms. rýchlosť S = 150; }} // Posúďte, či sa jedlo. Ak had jedol jedlo, potom plus skóruje a regeneruje jedlo náhodne. }

Výsledok experimentu

Krok 4: Výsledok experimentu

Relatívne hodnoty:

Auto FreaksBot Bluetooth

Zapáľte prvú guľôčku na 8*8 maticiach NeoPixels s Arduino

Micro: bit Experiment 05: RGB LED - Elecfreaks Mirco: kurz bitovej štartovacej sady

Piatkový produktový príspevok: Súprava spájkovania displeja LED s frekvenčným spektrom hudby

Na výrobu inteligentného svetla použite súpravu ElecFreaks Micro: bit Tinker Kit

Odporúča: