Kazalo:
- 1. korak: Seznam komponent:
- 2. korak: Povezava strojne opreme
- 3. korak: Programiranje
- 4. korak: Rezultat poskusa
Video: Matrica NeoPixels : Igra s kačami: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Se še spomnite igre s kačami, ki smo jo v otroštvu igrali na igralni škatli ali mobilnem telefonu? Danes se bomo naučili, kako narediti igro kače z matriko 8*8 NeoPixels. Za nadzorni center izberemo Arduino uno in modul za prekinitev krmilne palice za nadzor kače.
1. korak: Seznam komponent:
Strojna oprema:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X Prilagodljiva 64 RGB LED 8*8 NeoPixels Matrix
1 X Modul za prekinitev krmilne palice BKOUT_MD01
3 X vodilna črta
Programska oprema:
Arduino IDE
2. korak: Povezava strojne opreme
Priključite NeoPixels na pin D2.
"X" na odklopnem modulu igralne palice povežite nožico A0 na plošči Arduino UNO, "Y" priključite nožico A1, "K" priključite nožico A2.
3. korak: Programiranje
P#vključi
#define PIN 2 // Izhodni pin #define MAX_LED 64 // Količina kroglice uint32_t c; int a = 0, število; nepodpisani char huan = 0, ci = 0; nepodpisani znak u = 40; // Velikost pisave skupine besed unsigned char x = 0; barva brez podpisanega znaka [3]; brez podpisa 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 brezznačna znakovna črka [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 brez znaka [8] = // Nastavite besedo za pošiljanje {{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 },}; podpisan znak brez znakov [8] [8]; int hitrostS = 400; // Začetna hitrost kačjega int score; // rezultat igre int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Koordinata hrane int SX, SY; // Koordinata kačje glave int KEY, K; int Omogočeno; // Omogoči ponovni zagon igre char sx [64]; // Koordinata kačjega telesa char sy [64]; Adafruit_NeoPixel strip = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void RANDOM () {A: FX = naključno (0, 7); FY = naključno (0, 7); for (int i = 0; i <3+score; i ++) // Prepreči prikaz hrane na kačjem telesu {if (FX == sx && FY == sy ) goto A; }} void myDelay (unsigned int Time) {// V obdobju zakasnitve gibanja kač moramo narediti nekaj podobnega bleščanju hrane in prebrati smer igralne palice za (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; }} // Tukaj lahko primerjate, ali je smer tipkovnice nasprotna smeri gibanja kače. Če je nasprotno, opustite tipkovnico. /*********************************************** ************************************************ ************************************************ ************************************************ ********/ void gameover () {// Ko se program Gameover ustavi, pritisnite osrednji gumb, da znova zaženete igro. vrednost brez podpisanega znaka, y; Barva [0] = naključno (3, 18); // Nastavi barvo. Parameter je R G B, razpon 0-255. Barva [1] = naključno (3, 18); Barva [2] = naključno (3, 18); c = trak. Barva (Barva [1], Barva [0], Barva [2]); vrednost = rezultat / 10; vrednost = vrednost * 4; y = 0; za (število = vrednost; število <vrednost+4; število ++) {za (nepodpisani navpični znak = 0; navpično <8; navpično ++) {prikazovalnik [y] [navpično] = znak [število] [navpično]; } y ++; } vrednost = rezultat % 10; vrednost = vrednost * 4; za (število = vrednost; število <vrednost+4; število ++) {za (nepodpisani navpični znak = 0; navpično <8; navpično ++) {prikazovalnik [y] [navpično] = znak [število] [navpično]; } y ++; } za (brez podpisanega znaka vodoravno = 0; vodoravno <8; vodoravno ++) {za (brez podpisanega navpičnega znaka navpično = 0; navpično <8; navpično ++) {if (prikazovalnik [vodoravno] [navpično] == 1) // Presodite, ali svetloba je vklopljen. {strip.setPixelColor (svetloba [vodoravna] [navpična], c); } else strip.setPixelColor (svetloba [vodoravna] [navpična], 0); }} strip.show (); // Zakasnitev pošiljanja podatkov (5000); K = 0; // Ponastavi smer igralne palice sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Ponastavi rezultat koordinate kače = 0; // Ponastavi hitrost rezultata igreS = 400; // Začetna hitrost kače} void setup () {Serial.begin (9600); // Inicializirajte knjižnico strip.begin (); // Pošlji podatke. Barva vsake točke je privzeta 0. Tako da vsaka točka na začetku ni osvetljena. strip.show (); K = 0; // Ponastavi smer igralne palice sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Ponastavi rezultat koordinate kače = 0; // Ponastavi rezultat igre Barva [0] = naključno (3, 18); // Nastavi barvo. Parameter je R G B, razpon 0-255. Barva [1] = naključno (3, 18); Barva [2] = naključno (3, 18); c = trak. Barva (Barva [1], Barva [0], Barva [2]); // Zelena Rdeča Modra // Nastavi barvo za (število = 0; število <24; število ++) {strip.setPixelColor (pojdi [število], c); } strip.show (); // Zakasnitev pošiljanja podatkov (2000); NAKLJUČEN(); // proizvaja hrano} void mobile () {KEY = K; // Vsako gibanje kače enkrat spremeni smer. if (KEY == 8) // Gibanje kače navzgor {for (int i = 2 + rezultat; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; if (sy [0] <0) // Pojdite čez mejo in nadaljujte na drugi strani sy [0] = 7; } else if (KEY == 5) // Zmijoče se gibanje navzdol {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) // Pojdite čez mejo in nadaljujte na drugi strani sy [0] = 0; } else if (KEY == 4) // Kača levo gibanje {for (int i = 2 + rezultat; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; if (sx [0] <0) // Pojdite čez mejo in nadaljujte na drugi strani sx [0] = 7; } else if (KEY == 6) // Gibanje kače desno {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) // Pojdite čez mejo in nadaljujte na drugi strani sx [0] = 0; } // Premakni telo kače z gumbom} void display () {for (number = 0; number <64; number ++) // Počisti zaslon {strip.setPixelColor (number, 0); } strip.show (); Barva [0] = 40; // Nastavi barvo. Parameter je R G B, razpon 0-255. Barva [1] = 0; Barva [2] = 0; c = trak. Barva (Barva [1], Barva [0], Barva [2]); // Zelena Rdeča Modra // Nastavi barvo x = svetlo [FX] [FY]; // Prikaz traku za hrano.setPixelColor (x, c); Barva [0] = naključno (3, 18); // Nastavi barvo. Parameter je R G B, razpon 0-255. Barva [1] = naključno (3, 18); Barva [2] = naključno (3, 18); c = trak. Barva (Barva [1], Barva [0], Barva [2]); // Zelena Rdeča Modra // Nastavitev barve za (int i = 2 + rezultat; i> 0; i--) // Prikaz kačjega telesa {x = svetlo [sx [sy ; strip.setPixelColor (x, c); } Barva [0] = 0; // Nastavi barvo. Parameter je R G B, razpon 0-255. Barva [1] = 40; Barva [2] = 0; c = trak. Barva (Barva [1], Barva [0], Barva [2]); // Zelena Rdeča Modra // Nastavi barvo x = svetlo [sx [0] [sy [0]; // Prikaz traka kačje glave.setPixelColor (x, c); strip.show (); // Pošlji podatke} void loop () {mobile (); myDelay (speedS); // Znotraj () je čas zakasnitve. zasloni (); SX = sx [0]; SY = sy [0]; // Pridobite koordinato kačje glave za (int i = 1; i <= 2+rezultat; i ++) {if (SX == sx && SY == sy ) gameover (); } // Presodite, ali se je kačja glava dotaknila njenega telesa. Če se dotaknete, pojdite naprej na GameOver. če (SY == FY && SX == FX) {RANDOM (); rezultat ++; Barva [0] = 40; // Nastavi barvo. Parameter je R G B, razpon 0-255. Barva [1] = 0; Barva [2] = 0; c = trak. Barva (Barva [1], Barva [0], Barva [2]); // Zelena Rdeča Modra // Nastavi barvo x = svetlo [FX] [FY]; // Prikaz traku za hrano.setPixelColor (x, c); strip.show (); // Pošljite podatke, če (! (rezultat % 5)) {// Pospešite hitrost kače glede na rezultat. Vsakih 5 zaužitih živil pospešite 100 ms. hitrostS = hitrostS - 50; if (hitrostS <150) // Spodnja meja je 200 ms. Če je hitrost manjša od 200 ms, ostane hitrost 200 ms. hitrostS = 150; }} // Presodite, ali je hrana zaužita. Če je kača jedla hrano, potem plus točke in hrano naključno regenerirajte. }
Rezultat eksperimenta
4. korak: Rezultat poskusa
Relativni odčitki:
Avtomobil FreaksBot Bluetooth
Prižgite prvo kroglico na matriki 8*8 NeoPixels z Arduinom
Micro: bit Experiment 05: RGB LED - Elecfreaks Mirco: bit Starter Kit
Petek Objava izdelka: Komplet za spajkanje LED -prikazovalnika frekvenčnega spektra
Za izdelavo pametne luči uporabite ElecFreaks Micro: bit Tinker Kit
Priporočena:
Igra Python Tic Tac Toe: 4 koraki
Python Tic Tac Toe Game: igra python tic tac toe ta igra je narejena v pythonu, ki je računalniški jezik, uporabil sem urejevalnik python, imenovan: pycharm, lahko uporabite tudi običajen urejevalnik kode python
Igra Corona v prahi: 4 koraki
Igra Corona v prazni: Pozdravljeni prijatelji, ustvaril sem igro v nič, da bi povedal pomen uporabe razkužila in maske v tem " Novo normalno " na zabaven in učljiv način. Uporabljeni duhovi: EarthDoctorCorona virusSantilizator stekleniceMaska
Igra Angry Birds: 4 koraki
Angry Birds Game: Pozdravljeni, vsi, ki sem naredil to neverjetno igro z uporabo javascripta. No, vsi so se v svojem življenju morali igrati igre jeznih ptic, kar je res neverjetna igra, zato sem poskušal narediti svojo različico igre jeznih ptic s pomočjo Java skripte in nekaterih kodirnih platform
Igra Arduino Sorta Sudoku: 3 koraki (s slikami)
Igra Arduino Sorta Sudoku: Veliko ljudi se rad igra Sudoku in vnuki radi ugibajo, zato sem se odločil za prenosno igro "Sorta Sudoku". V moji različici je igra 4x4, vendar je navedena samo ena številka. Ideja je uganiti preostale številke v
Igra srčnega utripa-projekt: 4 koraki
Srčni utrip-projekt: Danes je 20. maj, kot vsi vemo. To je že tradicionalno kitajsko valentinovo. (520 v kitajščini pomeni, da te ljubim). Zdaj bomo izdelali interaktivno napravo, imenovano heartbeat lab, da preizkusimo tiho razumevanje para. To je preizkus