Obsah:
- Krok 1: Seznam součástí:
- Krok 2: Hardwarové připojení
- Krok 3: Programování
- Krok 4: Výsledek experimentu
Video: Matice NeoPixels, hadí hra: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
Pamatujete si ještě hadí hru, kterou jsme v dětství hráli na našem herním boxu nebo mobilu? Dnes se naučíme, jak vytvořit hadí hru s maticí 8*8 NeoPixels. Jako ovládací centrum jsme zvolili Arduino uno a pro ovládání hada modul Breakout Breakout.
Krok 1: Seznam součástí:
Hardware:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X Flexibilní 64 RGB LED 8*8 NeoPixels Matrix
1 X Joystick vylamovací modul BKOUT_MD01
3 X Vodicí linie
Software:
Arduino IDE
Krok 2: Hardwarové připojení
Připojte NeoPixels na pin D2.
„X“na odpojovacím modulu joysticku připojte pin A0 na desce Arduino UNO, „Y“připojte pin A1, „K“připojte pin A2.
Krok 3: Programování
P#zahrnout
#define PIN 2 // Výstupní pin #define MAX_LED 64 // Množství korálků uint32_t c; int a = 0, číslo; nepodepsaný char huan = 0, ci = 0; znak bez znaménka u = 40; // Velikost písma skupiny slov bez znaménka char x = 0; nepodepsaný znak Barva [3]; znak bez znaménka = {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 znaménka [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 znaménka [8] = // Nastavení odesílané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 },}; unsigned char displayscore [8] [8]; int rychlostS = 400; // Počáteční rychlost int skóre snake; // Skóre hry int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Souřadnice jídla int SX, SY; // Souřadnice hadí hlavy int KEY, K; int Povoleno; // Povolit restartování hry char sx [64]; // Souřadnice znaku hadího těla [64]; Proužek 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 ++) // Zabraňte zobrazení jídla na těle hada {if (FX == sx && FY == sy ) goto A; }} void myDelay (unsigned int Time) {// Během zpoždění pohybu hada musíme udělat něco jako lesk jídla a přečíst směr Joysticku pro (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; }} // Zde můžete porovnat, zda je směr klávesnice opačný než směr pohybu hada. Pokud je to naopak, vzdejte se klávesnice. /******************************************************** ******************************************************* ****************************************************** ******************************************************* ********/ void gameover () {// Jakmile se program Gameover zastaví, restartujte hru stisknutím centrálního tlačítka. hodnota znaku bez znaménka, y; Barva [0] = náhodná (3, 18); // Nastav barvu. Parametr je R G B, rozsah 0-255. Barva [1] = náhodný (3, 18); Barva [2] = náhodné (3, 18); c = pruh. Barva (Barva [1], Barva [0], Barva [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) // Posoudit, zda světlo je zapnuto {strip.setPixelColor (světlo [horizontální] [vertikální], c); } else strip.setPixelColor (světlo [horizontální] [vertikální], 0); }} strip.show (); // Zpoždění odeslání dat (5000); K = 0; // Reset směru joysticku sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Reset skóre souřadnic hada = 0; // Reset rychlosti skóre hry S = 400; // Počáteční rychlost hada} neplatné nastavení () {Serial.begin (9600); // Inicializace knihovny strip.begin (); // Odeslání dat. Výchozí barva každého bodu je 0. Každý bod tedy není na začátku osvětlen. strip.show (); K = 0; // Reset směru joysticku sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Reset skóre souřadnic hada = 0; // Reset skóre hry Barva [0] = náhodný (3, 18); // Nastav barvu. Parametr je R G B, rozsah 0-255. Barva [1] = náhodný (3, 18); Barva [2] = náhodné (3, 18); c = pruh. Barva (Barva [1], Barva [0], Barva [2]); // Zelená Červená Modrá // Nastavit barvu pro (číslo = 0; číslo <24; číslo ++) {strip.setPixelColor (go [číslo], c); } strip.show (); // Zpoždění odeslání dat (2000); NÁHODNÝ(); // Produkce potravin} void mobile () {KEY = K; // Každý pohyb hada jednou změní směr. if (KEY == 8) // Pohyb nahoru hadem {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) // Přejděte za hranici a pokračujte na druhé straně sy [0] = 7; } else if (KEY == 5) // Pohyb hada dolů {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) // Přejděte za hranici a pokračujte na druhé straně sy [0] = 0; } else if (KEY == 4) // Snake left 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] <0) // Přejděte za hranici a pokračujte na druhé straně 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) // Přejděte za hranici a pokračujte na druhé straně sx [0] = 0; } // Přesun těla hada tlačítkem} neplatné zobrazení () {for (číslo = 0; číslo <64; číslo ++) // Vymazání obrazovky {strip.setPixelColor (číslo, 0); } strip.show (); Barva [0] = 40; // Nastavit barvu. Parametr je R G B, rozsah 0-255. Barva [1] = 0; Barva [2] = 0; c = proužek. Barva (Barva [1], Barva [0], Barva [2]); // Zelená Červená Modrá // Nastavit barvu x = světlo [FX] [FY]; // Zobrazení potravinového proužku.setPixelColor (x, c); Barva [0] = náhodná (3, 18); // Nastavit barvu. Parametr je R G B, rozsah 0-255. Barva [1] = náhodný (3, 18); Barva [2] = náhodné (3, 18); c = pruh. Barva (Barva [1], Barva [0], Barva [2]); // Zelená Červená Modrá // Nastavit barvu pro (int i = 2 + skóre; i> 0; i--) // Zobrazit tělo hada {x = světlo [sx [sy ; strip.setPixelColor (x, c); } Barva [0] = 0; // Nastavit barvu. Parametr je R G B, rozsah 0-255. Barva [1] = 40; Barva [2] = 0; c = pruh. Barva (Barva [1], Barva [0], Barva [2]); // Zelená Červená Modrá // Nastavit barvu x = světlo [sx [0] [sy [0]; // Zobrazení pruhu hadí hlavy.setPixelColor (x, c); strip.show (); // Odeslat data} void loop () {mobile (); myDelay (speedS); // Do () je doba zpoždění. zobrazí (); SX = sx [0]; SY = sy [0]; // Získejte souřadnice hadí hlavy pro (int i = 1; i <= 2+skóre; i ++) {if (SX == sx && SY == sy ) gameover (); } // Posuďte, zda se hadí hlava dotkla jejího těla. Pokud se dotknete, přepošlete na GameOver. if (SY == FY && SX == FX) {RANDOM (); skóre ++; Barva [0] = 40; // Nastavit barvu. Parametr je R G B, rozsah 0-255. Barva [1] = 0; Barva [2] = 0; c = pruh. Barva (Barva [1], Barva [0], Barva [2]); // Zelená Červená Modrá // Nastavit barvu x = světlo [FX] [FY]; // Zobrazení potravinového proužku.setPixelColor (x, c); strip.show (); // Odesílání dat if (! (skóre % 5)) {// Zvýšení rychlosti hada podle skóre. Každých 5 snědených potravin zdůrazněte 100 ms. speedS = speedS - 50; if (speedS <150) // Dolní limit je 200ms. Pokud je rychlost nižší než 200 ms, rychlost zůstane 200 ms. rychlost S = 150; }} // Posuďte, zda se jídlo jí. Pokud had jedl jídlo, pak plus skóruje a regeneruje jídlo náhodně. }
Výsledek experimentu
Krok 4: Výsledek experimentu
Relativní hodnoty:
FreaksBot Bluetooth auto
Zapalte první kuličku na 8*8 NeoPixels Matrix s Arduino
Micro: bit Experiment 05: RGB LED - Elecfreaks Mirco: Kurz bitové startovací sady
Páteční produktový příspěvek: Sada pro pájení displeje LED s frekvenčním spektrem hudby
Použijte ElecFreaks Micro: bit Tinker Kit k vytvoření chytrého světla
Doporučuje:
Dvoumístný displej s použitím jedné matice 8x8 LED: 3 kroky
Dvoumístný displej využívající jednu matici 8x8 LED: Zde bych chtěl do svého pokoje zabudovat indikátor teploty a vlhkosti. Pro zobrazení dvouciferných čísel jsem použil jeden 8x8 LED Matrix a myslím si, že část projektu se stala užitečnější. Finál postavený jsem zabalil pomocí lepenkové krabice, bolest
Aruduino LED hra Rychlé klikání Hra pro dva hráče: 8 kroků
Aruduino LED Game Rychlé klikání Hra pro dva hráče: Tento projekt je inspirován @HassonAlkeim. Pokud jste ochotni se podrobně podívat, zde je odkaz, který můžete zkontrolovat https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Tato hra je vylepšenou verzí hry Alkeim's. Jedná se o
Kaskádovatelná LED matice 8x16 Rgb: 3 kroky
Cascadable 8x16 Rgb LED Matrix: V tomto projektu jsem vytvořil kaskádovatelnou 8x16 rgb LED matici a její ovladač. Pro podporu USB slouží mikročip 18F2550. RGB LED diody jsou poháněny posuvnými registry 74hc595 s rezistory. Pro animace a konfigurační data; 24C512 externí eeprom
Zobrazení matice počasí: 4 kroky (s obrázky)
Weather Matrix Display: O projektu Ukážu vám, jak vytvořit miniaturní zobrazení stavu počasí z maticového displeje 8x8. Pomocí Genuino MKR1000 načtu teplotu, vlhkost a stav počasí ve vybraném místě. Zobrazit stav pro zobrazení v řezu
Matice LED 10x10 RGBW: 4 kroky
10x10 RGBW LED Matrix: V tomto projektu vytvářím 10x10 RGB LED Matrix. Tento projekt trval asi 8 hodin pájení. Tento projekt bych doporučil a nedoporučil bych. Výroba trvá velmi dlouho, ale hotový výrobek je velmi fascinující