Përmbajtje:

NeoPixels Matrix : Snake Lojë: 4 Hapa
NeoPixels Matrix : Snake Lojë: 4 Hapa

Video: NeoPixels Matrix : Snake Lojë: 4 Hapa

Video: NeoPixels Matrix : Snake Lojë: 4 Hapa
Video: Visual Art Display with Acrylic and NeoPixels #CircuitPython #3DPrinting #adafruit 2024, Nëntor
Anonim
Lojë NeoPixels Matrix : Snake
Lojë NeoPixels Matrix : Snake

A ju kujtohet akoma loja gjarpër që kemi luajtur në kutinë tonë të lojës ose celularin gjatë fëmijërisë sonë? Sot ne do të mësojmë se si të bëjmë një lojë gjarpri me Matricën NeoPixels 8*8. Ne zgjedhim Arduino uno si qendrën e kontrollit dhe modulin e shpërthimit të Joystick për të kontrolluar gjarprin.

Hapi 1: Lista e Komponentëve:

Hardware:

1 X Freaduino UNO Rev2.2 MB_EFUNO

1 X Fleksibël 64 RGB LED 8*8 NeoPixels Matrix

1 X modul shpërthimi Joystick BKOUT_MD01

3 X Linja udhëzuese

Softuer:

Arduino IDE

Hapi 2: Lidhja e harduerit

Lidhni NeoPixels me pin D2.

"X" në modulin Joystick Breakout lidh pinin A0 në bordin Arduino UNO, "Y" lidh pinin A1, "K" lidh pinin A2.

Hapi 3: Programimi

P#përfshijnë

#përcakto PIN 2 // Pin dalës #përcakto MAX_LED 64 // Sasia e rruazës uint32_t c; int a = 0, numër; huan i panënshkruar = 0, ci = 0; shkronja pa shenjë u = 40; // Madhësia e shkronjave të grupit të fjalëve pa shenjë char x = 0; shenjë e panënshkruar Ngjyra [3]; shkronja pa shenjë shko = {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 dritë e shenjëzuar pa shenjë [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},}; karakteri i pashkruar i shenjës [8] = // Vendosni fjalën që do të dërgohet {{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 },}; pikëpamja e ekranit e shenjave pa shenjë [8] [8]; int shpejtësiaS = 400; // Shpejtësia fillestare e rezultatit int të gjarprit; // Rezultati i lojës int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Koordinata e ushqimit në SX, SY; // Koordinata e kokës së gjarprit në KEY, K; int Aktivizuar; // Aktivizo rifillimin e lojës char sx [64]; // Koordinata e trupit të gjarprit char sy [64]; Rrip Adafruit_NeoPixel = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); i pavlefshëm RANDOM () {A: FX = rastësor (0, 7); VF = rastësore (0, 7); për (int i = 0; i <3+rezultati; i ++) // Parandaloni shfaqjen e ushqimit në trupin e gjarprit {if (FX == sx && FY == sy ) goto A; }} void myDelay (pa shenjë int Time) {// Gjatë periudhës së vonesës së lëvizjes së gjarprit, duhet të bëjmë diçka si shkëlqimi i ushqimit dhe të lexojmë drejtimin e Joystick për (int t = 1; t 950 && KEY! = 5) { K = 8; } tjetër nëse (yVlera <50 && KEY! = 8) {K = 5; } tjetër nëse (xValue 950 && KEY! = 4) {K = 6; }} // Këtu mund të krahasoni nëse drejtimi i tastierës është i kundërt me drejtimin e lëvizjes së gjarprit. Nëse është e kundërta, atëherë hiqni dorë nga tastiera. /********************************************* ********************************************** ********************************************** ********************************************** ********/ void gameover () {// Pasi programi Gameover të ndalet, shtypni butonin qendror për të rinisur lojën. vlera e pashënuar e char, y; Ngjyra [0] = e rastësishme (3, 18); // Vendosni ngjyrën. Parametri është R G B, diapazoni 0-255. Ngjyra [1] = e rastësishme (3, 18); Ngjyra [2] = e rastësishme (3, 18); c = shirit. Ngjyra (Ngjyra [1], Ngjyra [0], Ngjyra [2]); vlera = rezultati / 10; vlera = vlera * 4; y = 0; për (numër = vlerë; numër <vlerë+4; numër ++) {për (shenjë pa shenjë vertikale = 0; vertikale <8; vertikale ++) {pikëpamje [y] [vertikale] = karakter [numër] [vertikal]; } y ++; } vlera = rezultati % 10; vlera = vlera * 4; për (numër = vlerë; numër <vlerë+4; numër ++) {për (shenjë pa shenjë vertikale = 0; vertikale <8; vertikale ++) {pikëpamje [y] [vertikale] = karakter [numër] [vertikal]; } y ++; } për (shenja pa shenjë horizontale = 0; horizontale <8; horizontale ++) {për (shenja pa shenjë vertikale = 0; vertikale <8; vertikale ++) {nëse (tregon pikë [horizontale] [vertikale] == 1) // Gjykoni nëse drita është ndezur {strip.setPixelColor (dritë [horizontale] [vertikale], c); } else strip.setPixelColor (dritë [horizontale] [vertikale], 0); }} strip.show (); // Dërgoni vonesën e të dhënave (5000); K = 0; // Rivendos drejtimin e xhojstikut sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Rivendos rezultatin e koordinatës së gjarprit = 0; // Rivendos shpejtësinë e rezultatit të lojësS = 400; // Shpejtësia fillestare e gjarprit} void setup () {Serial.begin (9600); // Inicimi i bibliotekës strip.begin (); // Dërgoni të dhëna. Parazgjedhja e ngjyrës së secilës pikë si 0. Pra, çdo pikë nuk ndriçohet në fillim. shirit.shfaq (); K = 0; // Rivendos drejtimin e Joystick sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Rivendos rezultatin e koordinatës së gjarprit = 0; // Rivendos rezultatin e lojës Ngjyra [0] = e rastësishme (3, 18); // Vendos ngjyrën. Parametri është R G B, diapazoni 0-255. Ngjyra [1] = e rastësishme (3, 18); Ngjyra [2] = e rastësishme (3, 18); c = shirit. Ngjyra (Ngjyra [1], Ngjyra [0], Ngjyra [2]); // E kuqe e gjelbër blu // Vendos ngjyrën për (numër = 0; numër <24; numër ++) {strip.setPixelColor (shko [numri], c); } strip.show (); // Dërgimi i vonesës së të dhënave (2000); E RASTOMSISHME (); // Prodhoni ushqim} void celular () {KEY = K; // Çdo lëvizje e gjarprit bën që drejtimi të ndryshojë për një herë. nëse (KEY == 8) // Lëvizja lart e gjarprit {për (int i = 2 + rezultat; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; nëse (sy [0] <0) // Shkoni përtej kufirit dhe vazhdoni në anën tjetër sy [0] = 7; } tjetër nëse (KEY == 5) // Lëvizja e gjarprit poshtë {për (int i = 2 + rezultat; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; nëse (sy [0]> 7) // Shkoni përtej kufirit dhe vazhdoni në anën tjetër sy [0] = 0; } tjetër nëse (KEY == 4) // Gjarpri u largua nga lëvizja {për (int i = 2 + rezultat; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; nëse (sx [0] <0) // Shkoni përtej kufirit dhe vazhdoni në anën tjetër sx [0] = 7; } tjetër nëse (KEY == 6) // Lëvizja e djathtë e gjarprit {për (int i = 2 + rezultat; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; nëse (sx [0]> 7) // Shkoni përtej kufirit dhe vazhdoni në anën tjetër sx [0] = 0; } // Lëviz trupin e gjarprit me butonin} ekrane të pavlefshme () {për (numër = 0; numër <64; numër ++) // Pastro ekranin {strip.setPixelColor (numër, 0); } strip.shfaq (); Ngjyra [0] = 40; // Vendos ngjyrën. Parametri është R G B, diapazoni 0-255. Ngjyra [1] = 0; Ngjyra [2] = 0; c = shirit. Ngjyra (Ngjyra [1], Ngjyra [0], Ngjyra [2]); // E kuqe e gjelbër Blu // Vendos ngjyrën x = dritë [FX] [FY]; // Shfaq shiritin e ushqimit.setPixelColor (x, c); Ngjyra [0] = e rastësishme (3, 18); // Vendos ngjyrën. Parametri është R G B, diapazoni 0-255. Ngjyra [1] = e rastësishme (3, 18); Ngjyra [2] = e rastësishme (3, 18); c = shirit. Ngjyra (Ngjyra [1], Ngjyra [0], Ngjyra [2]); // E kuqe jeshile blu // Vendos ngjyrën për (int i = 2 + rezultat; i> 0; i--) // Shfaq trupin e gjarprit {x = dritë [sx [sy ; strip.setPixelColor (x, c); } Ngjyra [0] = 0; // Vendos ngjyrën. Parametri është R G B, diapazoni 0-255. Ngjyra [1] = 40; Ngjyra [2] = 0; c = shirit. Ngjyra (Ngjyra [1], Ngjyra [0], Ngjyra [2]); // E kuqe e gjelbër Blu // Vendos ngjyrën x = dritë [sx [0] [sy [0]; // Shfaq shiritin e kokës së gjarprit.setPixelColor (x, c); strip.show (); // Dërgoni të dhëna} loop void () {mobile (); myDelay (shpejtësiaS); // Brenda () është koha e vonesës. shfaq (); SX = sx [0]; SY = sy [0]; // Merrni koordinatën e kokës së gjarprit për (int i = 1; i <= 2+rezultat; i ++) {if (SX == sx && SY == sy ) gameover (); } // Gjykoni nëse koka e gjarprit e preku trupin e saj. Nëse preket, atëherë përpara në GameOver. nëse (SY == FY && SX == FX) {RANDOM (); rezultat ++; Ngjyra [0] = 40; // Vendos ngjyrën. Parametri është R G B, diapazoni 0-255. Ngjyra [1] = 0; Ngjyra [2] = 0; c = shirit. Ngjyra (Ngjyra [1], Ngjyra [0], Ngjyra [2]); // E kuqe e gjelbër Blu // Vendos ngjyrën x = dritë [FX] [FY]; // Shfaq shiritin e ushqimit.setPixelColor (x, c); strip.show (); // Dërgoni të dhëna nëse (! (rezultati % 5)) {// Përshpejtoni shpejtësinë e gjarprit sipas rezultatit. Çdo 5 ushqime të ngrëna, grumbulloni 100ms. shpejtësiaS = shpejtësiaS - 50; nëse (shpejtësiaS <150) // Kufiri i poshtëm është 200ms. Nëse shpejtësia është më e ulët se 200ms, shpejtësia mbetet 200ms. shpejtësiaS = 150; }} // Gjykoni nëse hahet ushqim. Nëse gjarpri hante ushqim, atëherë plus shënon dhe rigjeneron ushqimin rastësisht. }

Rezultati i eksperimentit

Hapi 4: Rezultati i eksperimentit

Lexime relative:

Makinë FreaksBot Bluetooth

Ndizni Rruazën e Parë në Matricën NeoPixels 8*8 me Arduino

Mikro: bit Eksperimenti 05: RGB LED - Elecfreaks Mirco: bit Starter Kit Kursi

Postimi i Produktit të së Premtes: Kompleti i Saldimit të Spektrit të Frekuencës së Muzikës LED

Përdorni ElecFreaks Micro: bit Tinker Kit për të bërë një dritë të zgjuar

Recommended: