NeoPixels Matrix: Schlangenspiel - Gunook
NeoPixels Matrix: Schlangenspiel - Gunook
Anonim
NeoPixels Matrix: Schlangenspiel
NeoPixels Matrix: Schlangenspiel

Erinnerst du dich noch an das Schlangenspiel, das wir in unserer Kindheit auf unserer Spielbox oder auf unserem Handy gespielt haben? Heute lernen wir, wie man ein Schlangenspiel mit 8 * 8 NeoPixels Matrix macht. Wir wählen Arduino uno als Kontrollzentrum und Joystick-Breakout-Modul zur Steuerung der Schlange.

Schritt 1: Komponentenliste:

Hardware:

1 X Freaduino UNO Rev2.2 MB_EFUNO

1 X Flexible 64 RGB LED 8 * 8 NeoPixels Matrix

1 X Joystick Breakout-Modul BKOUT_MD01

3 X Führungslinie

Software:

Arduino-IDE

Schritt 2: Hardwareverbindung

Verbinden Sie NeoPixel mit Pin D2.

"X" auf dem Joystick-Breakout-Modul verbinden Pin A0 auf der Arduino UNO-Platine, "Y" verbindet Pin A1, "K" verbindet Pin A2.

Schritt 3: Programmierung

P#einschließen

#define PIN 2 //Ausgangspin #define MAX_LED 64 //Anzahl der Perlen uint32_t c; int a = 0, Zahl; unsigned char huan = 0, ci = 0; unsigniertes Zeichen u = 40; //Die Schriftgröße der Wortgruppe unsigned char x = 0; unsigned char Farbe[3]; unsigned 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 unsigned char light[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}, }; unsigned char character[8] = //Setze das zu sendende Wort { {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 }, }; unsigned char displaycore [8][8]; int-GeschwindigkeitS = 400; // Anfangsgeschwindigkeit der Schlange int score; // Spielstand int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Koordinate des Essens int SX, SY; // Koordinate des Schlangenkopfes int KEY, K; int aktiviert; // Aktivieren zum Neustart des Spielzeichens sx[64]; //Koordinate des Schlangenkörpers char sy[64]; Adafruit_NeoPixel-Streifen = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); Void ZUFALL () { A: FX = zufällig (0, 7); FY = zufällig (0, 7); for (int i = 0; i < 3 + score; i++) // Nahrungsanzeige auf Schlangenkörper verhindern { if (FX == sx && FY == sy) goto A; aufrechtzuerhalten. K = 8; aufrechtzuerhalten. Sonst if (yValue < 50 && KEY != 8) {K = 5; aufrechtzuerhalten. Sonst if (xValue 950 && KEY != 4) {K = 6; } } // Hier können Sie vergleichen, ob die Richtung der Tastatur entgegengesetzt zur Bewegungsrichtung der Schlange ist. Wenn es umgekehrt ist, geben Sie die Tastatur auf. /************************************************ ************************************************* ************************************************* ************************************************* ********/ void gameover () { // Sobald das Gameover-Programm gestoppt wurde, drücken Sie die mittlere Taste, um das Spiel neu zu starten. vorzeichenloser Zeichenwert, y; Farbe[0] = zufällig(3, 18); // Setze color. Parameter ist R G B, Bereich 0-255. Farbe[1] = zufällig (3, 18); Farbe [2] = zufällig (3, 18); c = Streifen. Farbe(Farbe[1], Farbe[0], Farbe[2]); Wert = Punktzahl / 10; Wert = Wert * 4; y = 0; for (Zahl = Wert; Zahl < Wert + 4; Zahl++) { for (unsigned char vertikal = 0; vertikal < 8; vertikal++) { Displayscore[y][vertikal] = Zeichen[Zahl][vertikal]; } y++; } Wert = Punktzahl % 10; Wert = Wert * 4; for (Zahl = Wert; Zahl < Wert + 4; Zahl++) { for (unsigned char vertikal = 0; vertikal < 8; vertikal++) { Displayscore[y][vertikal] = Zeichen[Zahl][vertikal]; } y++; } for (unsigned char horizontal = 0; horizontal < 8; horizontal++) { for (unsigned char vertical = 0; vertikal < 8; vertikal++) { if (displayscore[horizontal][vertikal] == 1) //Beurteile, ob das Licht ist an. { strip.setPixelColor(light[horizontal][vertikal], c); aufrechtzuerhalten. Sonst strip.setPixelColor (Licht [horizontal] [vertikal], 0); } } strip.show (); // Datenverzögerung senden (5000); K = 0; // Joystick-Richtung zurücksetzen sx[0] = 2; sx[1] = 1; sx[2] = 0; sy[0] = 1; sy[1] = 1; sy[2] = 1; // Schlangenkoordinatenbewertung zurücksetzen = 0; // Spielpunktgeschwindigkeit zurücksetzenS = 400; // Die Anfangsgeschwindigkeit der Schlange aufrechtzuerhalten. Void setup () { Serial.begin (9600); // Initialisieren der Bibliothek strip.begin(); // Schicke Daten. Stellen Sie die Farbe jedes Punktes auf 0. Jeder Punkt wird also am Anfang nicht beleuchtet. Strip-Show(); K = 0; // Die Richtung des Joysticks zurücksetzen sx[0] = 2; sx[1] = 1; sx[2] = 0; sy[0] = 1; sy[1] = 1; sy[2] = 1; // Schlangenkoordinatenbewertung zurücksetzen = 0; // Spielstand zurücksetzen Colour[0] = random(3, 18); // Setze color. Parameter ist R G B, Bereich 0-255. Farbe[1] = zufällig (3, 18); Farbe [2] = zufällig (3, 18); c = Streifen. Farbe(Farbe[1], Farbe[0], Farbe[2]); //Grün Rot Blau // Setze Farbe für (Zahl = 0; Zahl <24; Zahl++) { strip.setPixelColor (go[Zahl], c); } strip.show (); // Datenverzögerung senden (2000); WILLKÜRLICH(); // Lebensmittel produzieren aufrechtzuerhalten. Void mobile () { KEY = K; // Jede Bewegung der Schlange bewirkt eine einmalige Richtungsänderung. if (KEY == 8) // Aufwärtsbewegung der Schlange { 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) // Über die Grenze hinausgehen und auf der anderen Seite weitergehen sy[0] = 7; aufrechtzuerhalten. Sonst if (KEY == 5) // Schlangenabwärtsbewegung { 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) // Über die Grenze hinausgehen und auf der anderen Seite weitermachen sy[0] = 0; aufrechtzuerhalten. Sonst if (KEY == 4) // Schlangenbewegung nach links { 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) // Über die Grenze hinausgehen und auf der anderen Seite weitergehen sx[0] = 7; aufrechtzuerhalten. Sonst if (KEY == 6) // Schlangenbewegung nach rechts { 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) // Über die Grenze hinausgehen und auf der anderen Seite weitermachen sx[0] = 0; } // Schlangenkörper mit Schaltfläche bewegen} void display() { for (number = 0; number <64; number++) // Bildschirm löschen { strip.setPixelColor(number, 0); } Strip-Show(); Farbe[0] = 40; // Farbe einstellen. Parameter ist R G B, Bereich 0-255. Farbe[1] = 0; Farbe [2] = 0; c = Streifen. Farbe(Farbe[1], Farbe[0], Farbe[2]); // Grün Rot Blau // Farbe einstellen x = light[FX][FY]; // Essensstreifen anzeigen.setPixelColor (x, c); Farbe[0] = zufällig(3, 18); // Farbe einstellen. Parameter ist R G B, Bereich 0-255. Farbe[1] = zufällig (3, 18); Farbe [2] = zufällig (3, 18); c = Streifen. Farbe(Farbe[1], Farbe[0], Farbe[2]); //Grün Rot Blau // Farbe einstellen für (int i = 2 + score; i> 0; i--) // Schlangenkörper anzeigen { x = light[sx[sy; strip.setPixelColor(x, c); } Farbe[0] = 0; // Farbe einstellen. Parameter ist R G B, Bereich 0-255. Farbe[1] = 40; Farbe [2] = 0; c = Streifen. Farbe(Farbe[1], Farbe[0], Farbe[2]); //Grün Rot Blau // Setze Farbe x = light[sx[0][sy[0]; // Schlangenkopf anzeigen strip.setPixelColor (x, c); strip.show (); // Daten senden aufrechtzuerhalten. Void Schleife () { mobile (); myDelay (GeschwindigkeitS); // Innerhalb() ist die Verzögerungszeit. zeigt an (); SX = sx[0]; SY = sy[0]; // Koordinate des Schlangenkopfes für (int i = 1; i <= 2 + score; i++) { if (SX == sx && SY == sy) gameover(); } // Beurteile, ob der Schlangenkopf seinen Körper berührt hat. Bei Berührung an GameOver weiterleiten. wenn (SY == FY && SX == FX) { ZUFALL (); Punktzahl ++; Farbe[0] = 40; // Farbe einstellen. Parameter ist R G B, Bereich 0-255. Farbe[1] = 0; Farbe [2] = 0; c = Streifen. Farbe(Farbe[1], Farbe[0], Farbe[2]); // Grün Rot Blau // Farbe einstellen x = light[FX][FY]; // Essensstreifen anzeigen.setPixelColor (x, c); strip.show(); // Daten senden if (! (Score % 5)) { // Beschleunigen Sie die Snake-Geschwindigkeit entsprechend der Punktzahl. Alle 5 gegessenen Lebensmittel beschleunigen 100 ms. GeschwindigkeitS = GeschwindigkeitS - 50; if (speedS < 150) // Die untere Grenze beträgt 200ms. Wenn die Geschwindigkeit unter 200 ms liegt, bleibt die Geschwindigkeit bei 200 ms. GeschwindigkeitS = 150; } } // Beurteilen, ob Nahrung gegessen wird. Wenn Schlange Nahrung gefressen hat, dann plus Punkte und Nahrung nach dem Zufallsprinzip regenerieren. }

Versuchsergebnis

Schritt 4: Versuchsergebnis

Relative Messwerte:

FreaksBot Bluetooth-Auto

Beleuchten Sie die erste Perle auf einer 8 * 8 NeoPixels Matrix mit Arduino

Micro:bit Experiment 05: RGB LED -- Elecfreaks Mirco: bit Starter Kit Course

Freitag Produktbeitrag: LED-Musik-Frequenzspektrum-Display-Lötkit

Verwenden Sie das ElecFreaks Micro:bit Tinker Kit, um ein intelligentes Licht zu machen

Empfohlen: