Pixel-Chaser-Spiel
Komponenten und Verbrauchsmaterialien
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Apps und Onlinedienste
![]() |
|
Über dieses Projekt
Ich war früher Spieleentwickler und einer der Heiligen Gral in der Entwicklung von Handyspielen ist es, das ultimative "One-Tap"-Spiel zu entwickeln.
Ich wollte sehen, ob ich mit einem Mikrocontroller, einer Taste und einer Form von visuellem Feedback ein fantastisches Ein-Klick-Physikspiel erstellen kann.
Wir stellen vor:PIXEL CHASER!
Es ist ein ziemlich einfacher Build, also lass uns gleich loslegen!
Welche Teile brauchen wir?

Wir brauchen folgendes:
- Arduino Nano (oder jeder Mikrocontroller mit 2 verfügbaren IO-Pins)
- RGB-"NeoPixel"-Ring oder -Streifen
- Momentan-Schaltfläche
- 10k Widerstand
- Breadboards
- Drähte
Schritt 1
Platzieren Sie den Nano an einem Ende des Steckbretts mit dem USB-Anschluss am Rand.

Schritt 2
Platziere den Knopf am anderen Ende des Steckbretts, so nah wie möglich am Rand, damit du ihn leicht erreichen kannst.

Schritt 3
Fügen Sie den 10k-Widerstand zwischen einer der Seiten des Knopfes und der GND-Schiene des Steckbretts hinzu. Dies ist der standardmäßige LOW-Zustand der Schaltfläche. Wir verwenden einen Widerstand, um sicherzustellen, dass beim Drücken der Taste kein Kurzschluss zwischen VCC und GND entsteht, da dies den Mikrocontroller und andere Komponenten beschädigen kann.

Schritt 4
Verbinden Sie ein Überbrückungskabel von der gegenüberliegenden Seite des Tasters mit der VCC-Schiene. Die Taste wird hoch, wenn sie gedrückt wird.

Schritt 5
Verbinden Sie ein Überbrückungskabel von der GND-Seite des Tasters mit D3 auf dem Nano. Wir werden D3 lesen, um den Zustand der Schaltfläche zu bestimmen.

Schritt 6
Verdrahten Sie den RGB-Streifen / -Ring mit dem Steckbrett. Verbinden Sie das VCC-Kabel mit der VCC-Stromschiene, das GND-Kabel mit der GND-Stromschiene und das DI-Kabel (Data In) mit D4 am Nano. Wir werden die Pixel mit D4 steuern.

Schritt 7
Verbinden Sie eine Drahtbrücke vom 5V-Pin des Nano mit der VCC-Stromschiene und verbinden Sie dann eine Drahtbrücke vom GND-Pin des Nano mit der GND-Stromschiene.

Schritt 8
Lade den Code hoch und spiele!

Ich hoffe, Ihnen hat dieses Projekt gefallen!
Weitere lustige Projekte wie dieses findest du auf meinem YouTube-Kanal.
Folge mir:
http://twitter.com/unexpectedmaker
https://www.facebook.com/unexpectedmaker/
https://www.instagram.com/unexpectedmaker/
https://www.patreon.com/unexpectedmaker
https://www.tindie.com/stores/seonr/
Code
- Pixel-Chaser-Spiel - Arduino-Code
Pixel-Chaser-Spiel - Arduino-CodeArduino
Fügen Sie diesen Code in Arduino hinzu und folgen Sie den Build-Anweisungen!/*--------------------------------- -----------------------------------------Pixel-Chaser-Spiel - v1.0.0 - 24 /03/2019.AUTHOR/LICENSE:Erstellt von Seon Rozenblum - [email protected] 2016 Lizenz:GNU GPL v3 http://www.gnu.org/licenses/gpl-3.0.htmlLINKS:Blog:unerwartetmaker.comYOUTUBE:youtube .com/c/unexpectedmaker HAFTUNGSAUSSCHLUSS:Diese Software wird "wie besehen", ohne technischen Support und ohne ausdrückliche oder stillschweigende Gewährleistung hinsichtlich ihrer Nützlichkeit für jeden Zweck bereitgestellt.ZWECK:Dieser Controller ist die Software, die auf dem Reflow Master läuft Toaster-Ofen-Controller von Unexpected MakerHISTORY:24/03/2019 v1.0.0 - Erstveröffentlichung.HINWEIS:Dies ist in Arbeit...------------------ -------------------------------------------------- ------*/// Diese Bibliotheken müssen vom Bibliotheksmanager installiert werden#include#include "OneButton.h"// Mit welchem GPIO ist der Streifen verbunden#define PIXELPIN 4// Wie viele Ne oPixel im Strip#define NUMPIXELS 24// Mit welchem GPIO ist der Button verbunden?#define BUTTON_TAP 3// Initialisiere den Button mit einem Standard lowOneButton buttonTAP(BUTTON_TAP, false);// Initialisiere den Pixel StripAdafruit_NeoPixel Pixel =Adafruit_NeoS .(NUMPIXEL , PIXELPIN, NEO_GRB + NEO_KHZ800); // Eine Reihe von Variablenint playerIndex =-1;int playerIndexTrail =-1;int playerDirection =1;float nextMove =0;float currentPlayerSpeed =150;unsigned long Countdown =0;int FeindIndex =- 1;int coinIndex =-1;int Score =0;int bestScore =0;int lastScore =0;bool gameOver =false;void setup () {// Machen Sie den Button Pin zu einem Input PinMode ( BUTTON_TAP, INPUT ); // Klickfunktionen an die Schaltfläche anhängen buttonTAP.attachClick(singleClick); buttonTAP.attachLongPressStart(longClick); // Initialisiere den Streifen und setze seine Helligkeit auf 20% Pixel.begin(); Pixel.setBrightness(20); // Setze einen 2-Sekunden-Countdown, bevor der Spieler erscheint und sich zu bewegen beginnt countdown =millis() + 2000;}void loop(){ // In jedem Zyklus müssen wir den Button-Zustand ankreuzen buttonTAP.tick(); // Befindet sich das Spiel im Game-Over-Zustand, Schleife vorzeitig beenden if ( gameOver ) return; // Setze den Pixelanzeigestatus des Levels // Dies setzt die Feindposition und die Münzposition SetLevel(); // Warten Sie eine Sekunde, bis der Spieler bereit ist if (countdown> millis()) {pixel.show(); Rückkehr; } // Die gesamte Spieleranzeige, Bewegung und Spiellogik befindet sich hier DisplayPlayer(); // Dies sendet die aktualisierte Pixelfarbe an die Hardware. Pixel.show();} // Löscht den Level, setzt alle Pixel auf blackvoid ClearLevel(){ for(int i=0;i =0 ) Pixel.setPixelColor(playerIndexTrail, Pixel.Color(0, 0, 0)); if (playerIndex>=0) { Pixel.setPixelColor (playerIndex, Pixel.Color (0, 100, 0)); SpielerIndexTrail =SpielerIndex; } // Bewege den Spieler in seine aktuelle Richtung playerIndex +=playerDirection; // Den Player an den Streifenkanten umwickeln if (playerIndex <0 ) playerIndex =NUMPIXELS - 1; sonst if ( playerIndex ==NUMPIXELS ) playerIndex =0; Pixel.setPixelColor(playerIndex, Pixel.Color(0, 255, 0)); // Hat der Spieler die Münze getroffen? // Wenn ja, erhöhe die Punktzahl, setze Münz- und Feindpositionen zurück und lösche das Level // In der nächsten Schleife setzt SetLevel() den Feind und die Münze zurück // Die Spielergeschwindigkeit wird auch für jeden Münztreffer erhöht if ( playerIndex ==coinIndex ) { Feindindex =-1; Münzindex =-1; Punktzahl++; currentPlayerSpeed =Constraint( currentPlayerSpeed - 10, 50, 150 ); ClearLevel(); Pixel.setPixelColor(playerIndex, Pixel.Color(0, 255, 0)); } // Hat der Spieler den Feind getroffen? // Setze die letzte/beste Punktzahl und rufe das Spiel auf else if (playerIndex ==FeindIndex) { lastScore =score; if ( Score>=bestScore ) bestScore =Score; Spiel ist aus(); gameOver =wahr; FeindIndex =-1; Münzindex =-1; SpielerIndex =-1; } }} // Einzeltaste clickvoid singleClick () { // Keine Eingabe, bis der Spieler sichtbar ist if (countdown> millis()) return; // die Spielerrichtung ändern playerDirection =-playerDirection;} // Langer Button clickvoid longClick(){ // Spiel umschalten // Wenn das Spiel vorbei war, starte das Spiel, andernfalls breche ein laufendes Spiel ab gameOver =!gameOver; if (gameOver) { FeindIndex =-1; Münzindex =-1; SpielerIndex =-1; aktuelle Spielergeschwindigkeit =150; ClearLevel(); } sonst { ClearLevel(); Punktzahl =0; aktuelle Spielergeschwindigkeit =150; Countdown =Millis() + 2000; }}
Herstellungsprozess
- Arduino-Gyroskop-Spiel mit MPU-6050
- Arduino Digital Dice
- Arduino Pong-Spiel - OLED-Display
- DIY 37 LED-Roulette-Spiel
- Arduino-Gamecontroller
- Arduino Touch Breakout-Spiel
- Arduino Nano Tetris-Spiel auf hausgemachter 16x8-Matrix
- Arduino Repulsive Electromagnetic Levitation
- Automatisiertes Dino-Spiel mit Arduino
- Arduino Home Controller aktiviert von Alexa