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

Esquivez les défenses !

Composants et fournitures

Résistance 10k ohm
Un pour le contraste de l'écran LCD, un autre pour le bouton.Important :Utilisez la résistance en pull -configuration descendante, par opposition à la configuration pull-up indiquée dans le manuel.
× 2
Résistance 1k ohm
Pour le contraste de l'écran LCD.
× 1
Interrupteur à bouton-poussoir SparkFun 12mm
× 1
Adafruit Standard LCD - 16x2 Blanc sur Bleu
× 1
Arduino UNO
× 1
Câbles de raccordement (générique)
× 1

À propos de ce projet

Contexte

Je faisais partie d'un plus gros projet mais il y a eu un retard. J'ai donc décidé de faire quelque chose avec mon ancien kit Arduino. Je n'ai jamais utilisé l'écran LCD auparavant. J'ai donc soudé les broches dans l'écran (j'ai appris à souder pour la première fois).

Au départ, j'ai copié le code d'un manuel en ligne et l'ai téléchargé. Il n'affichait que du texte, se déplaçant à droite et à gauche. C'est à ce moment-là que j'ai découvert la bibliothèque LiquidCrystal. J'ai écrit un code qui faisait rebondir le nombre "0" sur l'écran, c'était assez amusant. C'est à ce moment-là que j'ai pensé à faire quelque chose d'un peu plus complexe, un jeu. J'ai recherché des jeux lcd sur arduino sur Google et n'ai trouvé que 3 jeux, dont 2 ont fonctionné pour moi. Le code de ces jeux était bien trop complexe pour que je puisse le comprendre, j'ai donc décidé de créer un jeu facile.

Mise en place

Connectez les broches lcd à l'arduino avec des fils comme indiqué dans le schéma ci-dessous.

J'ai utilisé un potentiomètre 10k pour régler le contraste et je l'ai ajusté au contraste que je voulais. J'ai mesuré la résistance entre les broches avec un multimètre et utilisé des résistances appropriées (1k et 10k ohms en série) pour la broche VO de l'écran LCD.

Placez un bouton-poussoir sur la maquette et connectez le fil d'entrée à la broche 8 de l'arduino. Téléchargez le code sur votre arduino et vous êtes prêt à partir.

Remarque : utilisez la résistance du bouton en mode déroulant, comme indiqué sur le schéma.

Jouer au jeu

Dans ce jeu, vous êtes un joueur de football avec le ballon dans les jambes. Des défenseurs s'approcheront de vous et vous devriez simplement les esquiver.

Après l'introduction, appuyez sur le bouton lorsque vous y êtes invité. Lorsque le défenseur s'approche suffisamment, appuyez sur le bouton pour sauter. Le prochain défenseur s'approchera avec une vitesse plus élevée, et cela continue pour 10 défenseurs.

PS :j'ai d'abord utilisé "0" comme contrôle, et "1" comme obstacle. Comme la Coupe du Monde de la FIFA 2018 se déroule et étant moi-même fan de Messi, j'ai décidé de changer de thème.

J'ai fait les glyphes pour le joueur et le défenseur en utilisant un générateur en ligne, le lien fourni ici :https://omerk.github.io/lcdchargen/

Code

  • lcd_1.ino
lcd_1.inoArduino
/* Esquivez les défs !! Créé par :Shreyas R P Créé le :21-06-2018 Identifiant e-mail :[email protected] Un jeu simple pour écran LCD 16x2 avec un bouton. Si vous apportez des améliorations ou des changements au jeu, veuillez ajouter vos crédits sous la ligne :Enjoy :) Copyright (C) 2018 Shreyas RP Ce programme est un logiciel libre :vous pouvez le redistribuer et/ou le modifier selon les termes du GNU Licence publique générale publiée par la Free Software Foundation, soit la version 3 de la licence, soit (à votre choix) toute version ultérieure. Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE; sans même la garantie implicite de QUALITÉ MARCHANDE ou D'ADAPTATION À UN USAGE PARTICULIER. Voir la licence publique générale GNU pour plus de détails. Vous devriez avoir reçu une copie de la licence publique générale GNU avec ce programme. Sinon, consultez . -------------------------------------------------- ------------------------------------------- */#include const int btn =8 ; //broche d'entrée du bouton//textes à afficherchar* introText[]={"Esquivez les defs!!","Created on :", "Appuyez sur le bouton..."};//déclarations de variablesint game=0;int buttonPress =0 ; int buttonState=0;int obstaclePos;int obsDelay;int score=0;unsigned long lastDebounceTime =0; // la dernière fois que la broche de sortie a été basculée unsigned long debounceDelay =50; int lastButtonState=LOW;//GRAPHICSbyte runnin1[8] ={ 0b01100, 0b01100, 0b00000, 0b11100, 0b01110, 0b01100, 0b11110, 0b00011};byte runnin2[8]={ 0b00110, 0b00110, 0b00000, 0b00111, 0b01110, 0b 0b01110, 0b00101};byte jump[8]={ 0b00100, 0b01100, 0b11100, 0b01110, 0b01100, 0b11111, 0b00000, 0b00001};byte def1[8] ={ 0b00100, 0b00110, 0b00111, 0b01110, 0b00110, 0b,01111, 0b01 0b00000};byte def2[8]={ 0b00100, 0b00110, 0b00111, 0b01110, 0b00110, 0b00110, 0b00110, 0b00010};byte slide[8]={ 0b00000, 0b00000, 0b00011, 0b00011, 0b00000, 0b01111, 0b}1111, 0b00; LiquidCrystal lcd (4, 6, 10, 11, 12, 13); configuration vide () { Serial.begin (9600); pinMode(btn,ENTRÉE); lcd.begin (16,2); lcd.createChar(0,runnin1) ; lcd.createChar(1,runnin2) ; lcd.createChar(2, saut); lcd.createChar(3,def1) ; lcd.createChar(4,def2) ; lcd.createChar(5,diapositive); buttonState=digitalRead(btn);}boucle vide(){ intro(); while(jeu==1) ballActive(); fin du jeu(); } void intro() { score=0; lcd.clear(); lcd.print(introText[0]); //Au lieu de déclarer introText, vous pouvez directement imprimer le texte avec " ... " lcd.setCursor(7,1) ; lcd.print("Par SRP888"); retard (2000); lcd.clear(); lcd.print(introText[1]); lcd.setCursor(0,1) ; lcd.print("21-06-2018"); retard (2000); lcd.clear(); while(button()!=1) //attend que l'utilisateur appuie sur le bouton, affiche le texte jusqu'à cela. { lcd.setCursor(0,0); lcd.print(introText[2]); retard (100); } if(bouton()==1) jeu=1; } void reset() { if(obstaclePos%2==0) //Changement de l'affichage du joueur d'une pose à une autre pour montrer qu'il court, en utilisant intelligemment obstaclePos. { lcd.clear(); lcd.setCursor(0,1) ; lcd.write(byte(0)); } else { lcd.clear(); lcd.setCursor(0,1) ; lcd.write(1); } } void ballActive() { obsDelay=200; //délai initial pour le défenseur obstaclePos=15; //puisqu'il s'agit d'un écran LCD 16x2 et que l'index commence à 0. while(game==1) { reset(); if(button()==1) //si le bouton est enfoncé. { lcd.clear(); lcd.setCursor(0,0); lcd.write(2); // affiche l'obstacle de saut du joueur (obstaclePos); // affiche le délai du défenseur (400); // Ceci afin d'éviter que l'affichage ne disparaisse rapidement et passe inaperçu. lcd.clear(); lcd.setCursor(0,1) ; lcd.write(1); //imprime le joueur sur le sol obstacle(obstaclePos); // affiche le défenseur } else { if(obstaclePos!=0) //si le défenseur ne s'est pas approché du joueur, continuez. { réinitialiser(); obstacle(obstaclePos); } else if(obstaclePos==0) ​​//si le défenseur est en position 0, c'est-à-dire il s'est approché du joueur lorsqu'il est au sol, puis termine la partie. { jeu=0; Pause; } } obstaclePos--; //rapproche le défenseur du joueur if(obstaclePos<0) //si le joueur a réussi à esquiver alors, { obsDelay=obsDelay-20; //diminue le délai (augmente la vitesse), obstaclePos=15; //amener le défenseur à la position de départ, score++ ; //et augmentez le score de 1. } if(obsDelay==0) //si 10 joueurs ont été esquivés (car 200/20=10), alors terminez le jeu game=0; retard(obsDelay); } }bouton int() { lecture int =digitalRead(btn); // Si le commutateur a changé, à cause du bruit ou de l'appui :if (reading !=lastButtonState) { // réinitialiser la minuterie anti-rebond lastDebounceTime =millis(); } if ((millis() - lastDebounceTime)> debounceDelay) { buttonState =lecture ; if (buttonState ==HIGH) { lastButtonState =lecture ; retour 1 ; } } lastButtonState =lecture;}void obstacle(int i){ if(obstaclePos%2==0&&obstaclePos>2) //si le défenseur est loin du joueur, alors montrez-le courir { lcd.setCursor(i,1); lcd.write(3); } else if(obstaclePos%2!=0&&obstaclePos>2) { lcd.setCursor(i,1); lcd.write(4) ; } else // s'il est à 2 pas du joueur, alors montrez-lui le glissement { lcd.setCursor(i,1); lcd.write(5); }}void endGame(){ if(score==10) { lcd.clear(); lcd.print("Félicitations !"); lcd.setCursor(0,1) ; lcd.print("Vous les avez tous battus"); retard (3000); } else if(score<3) { lcd.clear(); lcd.print("Tu es nul"); lcd.setCursor(0,1) ; lcd.print("Score :"); lcd.print(score); retard (3000); } else if(score<6) { lcd.clear(); lcd.print("Pas mal !"); lcd.setCursor(0,1) ; lcd.print("Score :"); lcd.print(score); retard (3000); } else { lcd.clear(); lcd.print("Super !"); lcd.setCursor(0,1) ; lcd.print("Score :"); lcd.print(score); retard (3000); }}

Schémas


Processus de fabrication

  1. Hymne au prototype
  2. Les défis de la conception de produits
  3. Surveillance de la température sur le Raspberry Pi
  4. Exhibit :The Primal Display
  5. Le Drone Pi
  6. Archimedes :The AI ​​Robot Owl
  7. L'approvisionnement stratégique en données est le moyen moderne d'éviter les perturbations
  8. Le secret de la réparation d'écrans tactiles industriels
  9. Le meilleur souffleur de feuilles