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

Ninja Dollar - Jeu LCD

Composants et fournitures

Arduino UNO
× 1
Adafruit Standard LCD - 16x2 Blanc sur Bleu
× 1
Planche à pain (générique)
J'en ai utilisé deux pour plus d'espace, vous ne pouvez utiliser qu'une seule maquette.
× 2
Potentiomètre à un tour - 10k ohms
× 1
LED (générique)
× 2
Résistance 1k ohm
× 4
Interrupteur à bouton-poussoir SparkFun 12mm
× 2
Sonnerie RobotGeek
× 1
Câbles de raccordement (générique)
× 1

Outils et machines nécessaires

Fer à souder (générique)
Pour souder LCD

À propos de ce projet

Il s'agit d'un simple jeu LCD. Mon inspiration était le jeu Dinosaur de Google Chrome, mais j'y ai ajouté quelques modifications supplémentaires. Le guerrier dollar bouge constamment et il peut sauter pour éviter les obstacles et collecter les points "étoiles". S'il saute par-dessus l'obstacle, il récolte un point et s'il attrape l'étoile, il récolte cinq points. Il peut également tirer et éliminer les obstacles devant lui. Il y a aussi des diodes led qui indiquent s'il saute ou tire. Lorsqu'il accumule 10, 20 ou 30 points, il commence à avancer plus vite qu'avant. Quand il récolte 50 points, vous gagnez. Si vous frappez l'obstacle, vous perdez. Bien sûr, vous pouvez facilement modifier ces limites dans le code. J'ai également ajouté un buzzer passif qui émet un son lorsque le guerrier saute ou tire et une mélodie spéciale lorsque vous perdez ou gagnez. C'est mon premier projet ici et j'espère qu'il vous plaira. Donnez-moi vos commentaires et critiques.

La vidéo

Connexions

Le module LCD (Liquid Crystal Display) a un en-tête mâle à 16 broches sur la face inférieure. Branchez-le sur la planche à pain comme indiqué sur l'image. Tous les signaux électroniques qui alimentent et contrôlent l'écran LCD passent par cet en-tête.

Ces épingles sont (de gauche à droite) :

  • GND - signal de masse d'alimentation
  • VCC - signal de puissance positif
  • V0 - réglage du contraste
  • RS - enregistrer sélectionner
  • R/W - lecture/écriture sélection
  • E - activer le signal
  • D0 - bit de données 0 (non utilisé ici)
  • D1 - bit de données 1 (non utilisé ici)
  • D2 - bit de données 2 (non utilisé ici)
  • D3 - bit de données 3 (non utilisé ici)
  • D4 - bit de données 4
  • D5 - bit de données 5
  • D6 - bit de données 6
  • D7 - bit de données 7
  • A - rétroéclairage LED positif
  • K - rétroéclairage LED négatif

Utilisez un cavalier pour connecter le signal 5V sur l'Arduino avec la rangée rouge en haut de la planche à pain.

Utilisez un cavalier pour connecter le signal GND sur l'Arduino avec la rangée bleue en haut de la maquette.

  • Connectez la broche VSS à la terre
  • Connectez la broche VDD au signal 5 V
  • Broche V0 vers la broche de sortie du potentiomètre
  • Broche RS vers broche Arduino 12
  • Broche RW au sol
  • Broche E vers broche Arduino 11
  • D4 à Arudino broche 5
  • D5 vers la broche 4 de l'arduino
  • D6 vers Arduino broche 3
  • D7 vers Arduino broche 2
  • Une broche vers le signal 5 V
  • Broche K au signal GND

Connectez les broches restantes du potentiomètre au signal 5V et au signal GND.

Si vous avez un buzzer piézo à 3 broches, connectez la broche S à la broche Arduino 7, la broche '-' au GND et la broche restante au signal 5V. Si vous avez un buzzer piézo à 2 broches, connectez une broche au signal GND et l'autre à la broche Arduino 7.

Connectez les boutons de commutation selon les schémas. Le premier bouton (bouton de saut) est connecté à la broche Arduino 1 et le second (bouton de prise de vue) est connecté à la broche Arduino 6. Les leds sont contrôlées uniquement par les boutons et non par Arduino. L'anode est connectée à la broche du bouton qui est connectée à l'Arduino et la cathode est connectée à la terre.

Code

  • guerrier_dollar
dollar_warriorArduino
#include const int rs =12, en =11, d4 =5, d5 =4, d6 =3, d7 =2;const int buttonPin1=1;const int buttonPin2=6;const int buzzer=7;unsigned long pts=0;//set buttonstatesbool buttonState1=0;bool buttonState2=0;//nombre aléatoire pour la position des obstaclesint randomNums[6];//nombre aléatoire pour le nombre d'obstaclesint randomNum=0;// nombre aléatoire pour la position du ptsint randomNums1[3] ;// nombre aléatoire pour le nombre de ptsint randomNum1=0 ;//temps de retard de démarrage, qui diminue progressivement unsigned int myDelay=500 ; // fait ce booléen pour vérifier si le bouton 2 est enfoncé car si il est appuyé une fois dans la première boucle for je veux que les obstacles ne soient pas écrits avant la fin de itbool temp=0;//cette variable stocke les positions du guerrier pendant qu'il tire. il peut y avoir 16 positions car le guerrier a 16 positions.int tempI[16];//j'utilise ce booléen pour vérifier si le point est attrapébool temp1=0;//j'utilise cette variable pour stocker la position du point attrapé. il doit être et un tableau pour stocker la position de tous les points dans une itération de la première boucle for. s'il ne stockait qu'une seule position, alors l'"ancien" point reviendrait dans la nouvelle itérationint tempI1[3] ; //utiliser cette variable pour avoir un nombre de plans du guerrier, qui est aussi la longueur d'un tableau tempIint button2IsPressed=0;LiquidCrystal lcd(rs, en, d4, d5, d6, d7);void setup() { / / configurer le nombre de colonnes et de lignes de l'écran LCD :lcd.begin(16, 2); // définit le mode pinMode pinMode(buttonPin1,INPUT); pinMode (boutonPin2, INPUT); pinMode (buzzer, SORTIE); lcd.setCursor(4,0); lcd.print("LE JEU"); lcd.setCursor(2,1) ; lcd.print("COMMENCE DANS "); lcd.print("5"); retard(1000); lcd.setCursor(12,1) ; lcd.print("4"); retard(1000); lcd.setCursor(12,1) ; lcd.print("3"); retard(1000); lcd.setCursor(12,1) ; lcd.print("2"); retard(1000); lcd.setCursor(12,1) ; lcd.print("1"); retard(1000); lcd.clear();}void loop() { ici :randomNum=random(5) ; for(int i=0; i9 &&pts<20) {lcd.setCursor(14,0); monDélai=400 ; } else if(pts>19 &&pts<30) { lcd.setCursor(14,0); monDélai=300 ; } else if(pts>29 &&pts<50) { myDelay=200; lcd.setCursor(14,0); } else if(pts>=50){ pts=0; monDélai=500 ; lcd.clear(); lcd.setCursor(5,0); lcd.print("VICTOIRE"); tonalité (buzzer, 262) ; retard (200); tonalité (buzzer, 330); retard (200); tonalité (buzzer,392) ; retard (100); tonalité (buzzer, 330); retard (100); tonalité (buzzer,392) ; retard (100); tonalité (buzzer,523) ; retard (200); pas de tonalité (buzzer); retard (3000); lcd.clear(); aller ici ; } else lcd.setCursor(15,0); lcd.print(pts); buttonState1=digitalRead(buttonPin1) ; buttonState2=digitalRead(buttonPin2) ; //mettre des obstacles si le guerrier n'a pas tiré ou il a tiré mais il a aussi sauté if(!temp){ for(int j=0; jrandomNums[j]){ lcd.setCursor(randomNums[j],1) ; lcd.print("#"); } } } //définir ptsif(!temp1){ for(int j=0; j 

Schémas

game_aUIjA6VZxX.fzz

Processus de fabrication

  1. Échecs
  2. Flipper
  3. Football
  4. Jeu de gyroscope Arduino avec MPU-6050
  5. Jeu de roulette DIY 37 LED
  6. Ardulock 3D RVB
  7. MyRiver
  8. Jeu de manette
  9. Trouvez-moi