Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Jeu Pixel Chaser

Composants et fournitures

Arduino Nano R3
× 1
Anneau Adafruit NeoPixel :WS2812 5050 LED RVB
× 1
Planche à pain sans soudure demi-taille
× 1
Résistance 10k ohm
× 1
Interrupteur à bouton-poussoir SparkFun 12mm
× 1
Câbles de raccordement (générique)
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet

J'étais développeur de jeux, et l'un des saints Graal du développement de jeux mobiles est de créer le jeu ultime "en un seul clic".

Je voulais voir si je pouvais créer un jeu "physique" génial en un clic à l'aide d'un micro-contrôleur, d'un bouton et d'une forme de retour visuel.

Présentation de PIXEL CHASER !

C'est une construction assez simple, alors allons-y !

De quelles pièces avons-nous besoin ?

Nous avons besoin des éléments suivants :

  • Arduino Nano (ou tout microcontrôleur avec 2 broches IO disponibles)
  • Anneau ou bande RVB "NeoPixel"
  • Bouton momentané
  • Résistance 10k
  • Planches à pain
  • Fils

Étape 1

Placez le Nano à une extrémité de la maquette avec le connecteur USB sur le bord.

Étape 2

Placez le bouton à l'autre extrémité de la planche à pain, aussi près que possible du bord pour qu'il soit facile d'accès.

Étape 3

Ajoutez la résistance de 10k entre l'un des côtés du bouton et le rail GND de la maquette. Ce sera l'état BAS par défaut du bouton. Nous utilisons une résistance pour nous assurer qu'il n'y a pas de court-circuit entre VCC et GND lorsque le bouton est enfoncé car cela peut endommager le microcontrôleur et d'autres composants.

Étape 4

Connectez un cavalier du côté opposé du bouton au rail VCC. Le bouton s'élèvera lorsqu'il sera enfoncé.

Étape 5

Connectez un cavalier du côté GND du bouton à D3 sur le Nano. Nous lirons D3 pour déterminer l'état du bouton.

Étape 6

Câblez la bande/anneau RVB à la planche à pain. Connectez le fil VCC au rail d'alimentation VCC, le fil GND au rail d'alimentation GND et le fil DI (Data In) à D4 sur le Nano. Nous contrôlerons les pixels avec D4.

Étape 7

Connectez un cavalier de la broche 5V du Nano au rail d'alimentation VCC, puis connectez un cavalier de la broche GND du Nano au rail d'alimentation GND.

Étape 8

Téléchargez le code et jouez !

J'espère que ce projet vous a plu !

Vous pouvez trouver d'autres projets amusants comme celui-ci sur ma chaîne YouTube.

Suivez-moi :

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

  • Jeu Pixel Chaser - Code Arduino
Jeu Pixel Chaser - Code ArduinoArduino
Ajoutez ce code dans Arduino et suivez les instructions de construction !
/*---------------------------------- -----------------------------------------Jeu de chasseur de pixels - v1.0.0 - 24 /03/2019.AUTEUR/LICENCE :Créé par Seon Rozenblum - [email protected] 2016 Licence :GNU GPL v3 http://www.gnu.org/licenses/gpl-3.0.htmlLINKS :Blog :inattendumaker.comYOUTUBE :youtube .com/c/unexpectedmakerAVIS DE NON-RESPONSABILITÉ : Ce logiciel est fourni « tel quel », sans support technique et sans aucune garantie, expresse ou implicite, quant à son utilité à quelque fin que ce soit. OBJECTIF : Ce contrôleur est le logiciel qui s'exécute sur le Reflow Master contrôleur de four grille-pain fabriqué par Unexpected MakerHISTORY :24/03/2019 v1.0.0 - Version initiale. REMARQUE :il s'agit d'un travail en cours...------------------- -------------------------------------------------- ------*/// Nous avons besoin de ces bibliothèques installées à partir du gestionnaire de bibliothèques#include #include "OneButton.h"// À quoi GPIO est la bande connectée#define PIXELPIN 4// Combien de Ne oPixels dans la bande#define NUMPIXELS 24// À quel GPIO le bouton est-il connecté ?#define BUTTON_TAP 3// Initialiser le bouton, avec un bouton lowOneButton par défautTAP(BUTTON_TAP, false);// Initialiser la bande de pixelsAdafruit_NeoPixel pixels =Adafruit_NeoPixel(NUMPIXELS , PIXELPIN, NEO_GRB + NEO_KHZ800);// Un tas de variablesint playerIndex =-1;int playerIndexTrail =-1;int playerDirection =1;float nextMove =0;float currentPlayerSpeed ​​=150;unsigned long countdown =0;intennemiIndex =- 1;int coinIndex =-1;int score =0;int bestScore =0;int lastScore =0;bool gameOver =false;void setup(){ // fait du bouton une broche d'entrée pinMode( BUTTON_TAP, INPUT ); // Attachez les fonctions de clic au bouton buttonTAP.attachClick(singleClick); buttonTAP.attachLongPressStart(longClick); // Initialiser la bande et régler sa luminosité à 20% pixels.begin(); pixels.setBrightness(20); // définit un compte à rebours de 2 secondes avant que le joueur n'apparaisse et commence à se déplacer countdown =millis() + 2000;}void loop(){ // Chaque cycle, nous devons cocher l'état du bouton buttonTAP.tick(); // Si le jeu est dans l'état de fin de partie, quitte la boucle plus tôt si ( gameOver ) return ; // Définit l'état d'affichage des pixels du niveau // Ceci définit la position de l'ennemi et la position de la pièce SetLevel(); // attend une seconde que le joueur soit prêt if ( countdown> millis() ) { pixels.show(); retourner; } // Tout l'affichage du joueur, les mouvements et la logique de jeu sont ici DisplayPlayer(); // Ceci envoie la couleur de pixel mise à jour au matériel. pixels.show();}// Effacer le niveau, en définissant tous les pixels sur 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; } // Déplace le joueur dans sa direction actuelle playerIndex +=playerDirection; // Enveloppe le lecteur sur les bords de la bande if ( playerIndex <0 ) playerIndex =NUMPIXELS - 1; else if ( playerIndex ==NUMPIXELS ) playerIndex =0; pixels.setPixelColor(playerIndex, pixels.Color(0, 255, 0)); // Le joueur a-t-il touché la pièce ? // Si c'est le cas, augmentez le score, réinitialisez les positions des pièces et des ennemis et effacez le niveau // La prochaine boucle, SetLevel() réinitialisera l'ennemi et la pièce // La vitesse du joueur est également augmentée pour chaque pièce touchée si ( playerIndex ==coinIndex ) { ennemiIndex =-1; coinIndex =-1; note++ ; currentPlayerSpeed ​​=constrain( currentPlayerSpeed ​​- 10, 50, 150 ); ClearLevel(); pixels.setPixelColor(playerIndex, pixels.Color(0, 255, 0)); } // Le joueur a-t-il touché l'ennemi ? // Définit le dernier/meilleur score et annule la partie else if ( playerIndex ==ennemiIndex ) { lastScore =score; if ( score>=meilleur score ) meilleur score =score ; Jeu terminé(); gameOver =vrai; ennemiIndex =-1; coinIndex =-1; playerIndex =-1; } }}// Bouton unique clickvoid singleClick(){ // Aucune entrée jusqu'à ce que le joueur soit visible if ( countdown> millis() ) return; // changer la direction du joueur playerDirection =-playerDirection;} // Bouton long clickvoid longClick(){ // Changer l'état de la partie terminée // Si c'était la partie terminée, démarre le jeu, sinon annule une partie en cours gameOver =!gameOver; if ( gameOver ) { ennemiIndex =-1; coinIndex =-1; playerIndex =-1; CurrentPlayerSpeed ​​=150 ; ClearLevel(); } else { ClearLevel(); note =0 ; CurrentPlayerSpeed ​​=150 ; compte à rebours =millis() + 2000 ; }}

Processus de fabrication

  1. Jeu de gyroscope Arduino avec MPU-6050
  2. Dés numériques Arduino
  3. Jeu Arduino Pong - Écran OLED
  4. Jeu de roulette DIY 37 LED
  5. Contrôleur de jeu Arduino
  6. Arduino Touch Breakout Game
  7. Jeu Arduino Nano Tetris sur matrice 16x8 maison
  8. Lévitation électromagnétique répulsive Arduino
  9. Jeu Dino automatisé utilisant arduino