Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Pixel Chaser-game

Componenten en benodigdheden

Arduino Nano R3
× 1
Adafruit NeoPixel Ring:WS2812 5050 RGB LED
× 1
Soldeerloze breadboard halve grootte
× 1
Weerstand 10k ohm
× 1
SparkFun Drukknopschakelaar 12 mm
× 1
Jumperdraden (algemeen)
× 1

Apps en online services

Arduino IDE

Over dit project

Ik was vroeger een game-ontwikkelaar en een van de heilige graal in de ontwikkeling van mobiele games is het maken van het ultieme "one tap"-spel.

Ik wilde zien of ik een geweldig 'fysica'-spel met één klik kon maken met een microcontroller, een knop en een of andere vorm van visuele feedback.

Introductie van PIXEL CHASER!

Het is vrij eenvoudig te bouwen, dus laten we beginnen!

Welke onderdelen hebben we nodig?

We hebben het volgende nodig:

  • Arduino Nano (of een andere microcontroller met 2 beschikbare IO-pinnen)
  • RGB "NeoPixel" ring of strip
  • Kortknop
  • 10k weerstand
  • Broodplanken
  • Draden

Stap 1

Plaats de Nano aan het ene uiteinde van het breadboard met de USB-connector aan de rand.

Stap 2

Plaats de knop aan het andere uiteinde van het breadboard, zo dicht mogelijk bij de rand, zodat u er gemakkelijk bij kunt.

Stap 3

Voeg de 10k-weerstand toe tussen een van de zijkanten van de knop en de GND-rail van het breadboard. Dit is de standaard LOW-status van de knop. We gebruiken een weerstand om ervoor te zorgen dat er geen kortsluiting is tussen VCC en GND wanneer de knop wordt ingedrukt, omdat dit de microcontroller en andere componenten kan beschadigen.

Stap 4

Sluit een jumperdraad van de andere kant van de knop aan op de VCC-rail. De knop gaat hoog wanneer erop wordt gedrukt.

Stap 5

Sluit een jumperdraad van de GND-kant van de knop aan op D3 op de Nano. We zullen D3 lezen om de status van de knop te bepalen.

Stap 6

Sluit de RGB-strip/ring aan op het breadboard. Sluit de VCC-draad aan op de VCC-stroomrail, de GND-draad op de GND-stroomrail en de DI (Data In)-draad op D4 op de Nano. We zullen de pixels besturen met D4.

Stap 7

Sluit een draadjumper van de 5V-pin op de Nano aan op de VCC-voedingsrail en sluit vervolgens een jumperdraad van de GND-pin op de Nano aan op de GND-voedingsrail.

Stap 8

Upload de code en speel!

Ik hoop dat je genoten hebt van dit project!

Je kunt meer van dit soort leuke projecten vinden op mijn YouTube-kanaal.

Volg mij:

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-spel - Arduino-code
Pixel Chaser-spel - Arduino-codeArduino
Voeg deze code toe in Arduino en volg de bouwinstructies!
/*---------------------------------- ----------------------------------------- Pixel Chaser Game - v1.0.0 - 24 /03/2019.AUTHOR/LICENSE:Gemaakt door Seon Rozenblum - [email protected] 2016 Licentie:GNU GPL v3 http://www.gnu.org/licenses/gpl-3.0.htmlLINKS:Blog:onverwachtemaker.comYOUTUBE:youtube .com/c/unexpectedmakerDISCLAIMER:Deze software wordt geleverd "zoals ze is", zonder technische ondersteuning en zonder garantie, expliciet of impliciet, met betrekking tot het nut ervan voor welk doel dan ook.DOEL:Deze controller is de software die wordt uitgevoerd op de Reflow Master broodroosterovencontroller gemaakt door Unexpected MakerHISTORY:24/03/2019 v1.0.0 - Eerste release.OPMERKING:Dit is een werk in uitvoering...------------------- -------------------------------------------------- ------*/// We moeten deze bibliotheken installeren vanuit bibliotheekbeheer#include #include "OneButton.h"// Welke GPIO is de strip waarmee is verbonden#define PIXELPIN 4// Hoeveel Ne oPixels in de strip#define NUMPIXELS 24// Met welke GPIO is de knop verbonden?#define BUTTON_TAP 3// Initialiseer de knop, met een standaard lowOneButton buttonTAP(BUTTON_TAP, false);// Initialiseer de pixelstripAdafruit_NeoPixel pixels =Adafruit_NeoPixel(NUMPELS) , PIXELPIN, NEO_GRB + NEO_KHZ800);// Een heleboel variabelenint playerIndex =-1;int playerIndexTrail =-1;int playerDirection =1;float nextMove =0;float currentPlayerSpeed ​​=150;unsigned long countdown =0;int vijandindex =- 1;int coinIndex =-1;int score =0;int bestScore =0;int lastScore =0;bool gameOver =false;void setup(){ // maak de knop pin een input pinMode (BUTTON_TAP, INPUT); // Koppel klikfuncties aan de knop buttonTAP.attachClick (singleClick); buttonTAP.attachLongPressStart(longClick); // Initialiseer de strip en stel de helderheid in op 20% pixels.begin(); pixels.setBrightness(20); // stel een aftelling van 2 seconden in voordat de speler verschijnt en begint af te tellen =millis() + 2000;}void loop(){ // Elke cyclus moeten we de knopstatus buttonTAP.tick(); // Als de game zich in de game-over-status bevindt, verlaat dan de lus vroeg als (gameOver) terugkeert; // Stel de pixelweergavestatus van het niveau in // Dit stelt de vijandelijke positie en de muntpositie in SetLevel(); // wacht even totdat de speler klaar is if ( countdown> millis () ) { pixels.show(); opbrengst; } // Alle spelersweergave, beweging en spellogica is hier DisplayPlayer(); // Dit stuurt de bijgewerkte pixelkleur naar de hardware. pixels.show();}// Wis het niveau, stel alle pixels in op blackvoid ClearLevel(){ for(int i=0;i=0 ) pixels.setPixelColor(playerIndexTrail, pixels.Color(0, 0, 0)); if ( playerIndex>=0) { pixels.setPixelColor (playerIndex, pixels.Color (0, 100, 0)); playerIndexTrail =playerIndex; } // Verplaats de speler in de huidige richting playerIndex +=playerDirection; // Wikkel de speler bij de strookranden als ( playerIndex <0 ) playerIndex =NUMPIXELS - 1; else if ( playerIndex ==NUMPIXELS ) playerIndex =0; pixels.setPixelColor(playerIndex, pixels.Color(0, 255, 0)); // Heeft de speler de munt geraakt? // Als dat zo is, verhoog dan de score, reset munt- en vijandelijke posities en wis het niveau // Volgende lus zal de SetLevel() de vijand en munt resetten // Spelerssnelheid wordt ook verhoogd voor elke munt die wordt geraakt als ( playerIndex ==coinIndex) { vijandIndex =-1; muntIndex =-1; scoren++; currentPlayerSpeed ​​=beperken (currentPlayerSpeed ​​- 10, 50, 150); ClearLevel(); pixels.setPixelColor(playerIndex, pixels.Color(0, 255, 0)); } // Heeft de speler de vijand geraakt? // Stel de laatste/beste score in en call game over else if (playerIndex ==vijandIndex) { lastScore =score; if (score>=bestScore) bestScore =score; Spel is over(); gameOver =waar; vijandIndex =-1; muntIndex =-1; playerIndex =-1; } }}// Single-button clickvoid singleClick(){ // Geen invoer totdat de speler zichtbaar is als ( countdown> millis() ) terugkeer; // verander de richting van de speler playerDirection =-playerDirection;} // Lange knop clickvoid longClick(){ // Verander de game-over-status // Als het game-over was, start je het spel, anders annuleer je een lopend spel gameOver =!gameOver; if (gameOver) {vijandIndex =-1; muntIndex =-1; playerIndex =-1; huidigePlayerSpeed ​​=150; ClearLevel(); } else { ClearLevel(); score =0; huidigePlayerSpeed ​​=150; aftellen =millis() + 2000; }}

Productieproces

  1. Arduino-gyroscoopspel met MPU-6050
  2. Arduino digitale dobbelstenen
  3. Arduino Pong Game - OLED-scherm
  4. DIY 37 LED Roulette Game
  5. Arduino-gamecontroller
  6. Arduino Touch Breakout-spel
  7. Arduino Nano Tetris-spel op zelfgemaakte 16x8 Matrix
  8. Arduino afstotende elektromagnetische levitatie
  9. Geautomatiseerd Dino-spel met arduino
  10. Arduino Home Controller geactiveerd door Alexa
  11. NeoMatrix Arduino Pong