Përmbajtje:
- Hapi 1: Lista e Komponentëve:
- Hapi 2: Lidhja e harduerit
- Hapi 3: Programimi
- Hapi 4: Rezultati i eksperimentit
Video: NeoPixels Matrix : Snake Lojë: 4 Hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:10
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:
DIY SMART LED MATRIX (ESP8266 + WS2812 / NeoPixels): 7 hapa (me fotografi)
DIY SMART LED MATRIX (ESP8266 + WS2812 / NeoPixels): Këtu është prezantimi im në një projekt që jam shumë i emocionuar t'ju tregoj. Bëhet fjalë për një DIY Smart LED Matrix që do t’ju lejojë të tregoni mbi të, të dhëna, të tilla si YouTube Stats, Smart Home Stats, pasi temperatura, lagështia, mund të jenë një orë e thjeshtë, ose thjesht
Mini lojë "Guess the Number" Lojë me mikro: bit: 10 hapa
Mini Makina e lojës "Guess the Number" me Micro: bit: A keni luajtur ndonjëherë " Guess the Number "? Kjo është një makinë lojërash shumë e thjeshtë për t’u ndërtuar që luan " Guess the Number " me ty Ne e projektuam këtë projekt DIY për të inkurajuar lojën fizike dhe për t'i ndihmuar fëmijët të mësojnë programim. Ai përdor një MU
Arduino OLED Snake Lojë: 3 hapa
Arduino OLED Snake Lojë: Përshëndetje dhe mirëseardhje, në udhëzuesit tanë se si të bëjmë dhe arduino OLED Game, ky projekt erdhi ndërsa ne po përpiqeshim të bënim lojën tonë të parë ndonjëherë me një arduino, kështu që, ne menduam se ku është më mirë të fillojmë sesa nokia. Gjarpri klasik (mirë të paktën
Lojë 8x16 LED Matrix Pong (2 Paddles Për Lojtar Version): 3 hapa
Lojë 8x16 LED Matrix Pong (2 Paddles Per Player Version): Unë jam frymëzuar nga shumë variacione të lojës klasike Pong të zbatuar në Arduino duke përdorur një matricë LED 8x8. Në këtë udhëzues, unë do t'ju tregoj se si të krijoni versionin tim të preferuar Pong i cili ka dy lopata - sulmues dhe portier - për lojtar.
Lojë Microbit Tic Tac Toe Lojë: 4 hapa (me fotografi)
Microbit Tic Tac Toe Lojë: Për këtë projekt, bashkëpunëtori im - @descartez dhe unë krijuam një lojë të mrekullueshme tic tac toe duke përdorur radio funksionalitetin e mikrobitëve. Nëse nuk keni dëgjuar më parë për mikrobit, ata janë një mikrokontrollues i mrekullueshëm i krijuar për t'u mësuar fëmijëve programimin. Ata