Jeu vaisseau spatial contrôlé par la carte ESP32

Arduino UNO 22-01-25
35 0

Plan du tutorial

1- Présenter le jeu vaisseau spatial

2- Principe du projet

3- Matériel nécessaire

4- Schéma de câblage du projet

5- Programmation de la carte ESP32 avec Micropython

 

 

Présenter le jeu vaisseau spatial

Un jeu de vaisseau spatial est un type de jeu vidéo qui immerge les joueurs dans l'univers fascinant de l'exploration, du combat et de la stratégie intergalactique. Ces jeux sont souvent axés sur la science-fiction et peuvent se dérouler dans des galaxies fictives où le joueur pilote un vaisseau spatial.

Dans un jeu de vaisseau spatial, vous incarnez généralement un pilote ou un capitaine chargé de naviguer dans l'espace. Les objectifs peuvent varier, allant de l'exploration de nouveaux mondes à des batailles spatiales intenses ou encore la gestion d'une flotte interstellaire.

 

Principe du projet

Le joueur pilote un vaisseau spatial à l’aide d’un joystick et doit détruire des ennemis. L’action est affichée en temps réel sur un écran LCD I2C.

Fonctionnalités principales

1. Contrôle du vaisseau :

Le joystick permet de déplacer le vaisseau vers la gauche ou la droite.

La position du joystick est traduite en valeurs analogiques, puis convertie en mouvement du vaisseau.

2. Affichage des éléments de jeu :

Le vaisseau est représenté par un caractère ou un ensemble de pixels sur l'écran LCD.

Les ennemis ou projectiles sont également affichés

3. Mécaniques de jeu :

Évitement : Le joueur doit esquiver des obstacles générés aléatoirement.

Combat : Un bouton intégré au joystick peut être utilisé pour tirer des projectiles vers les ennemis.

Score et niveau : Le score augmente à mesure que le joueur détruit des ennemis ou évite des obstacles.

Vies/Énergie : Une barre de santé indique les dégâts subis.

4. Sons :

Un buzzer peut être ajouté pour générer des effets sonores, comme des tirs et le déplacement du vaisseau spatial.

 

Matériel nécessaire

Carte ESP32

Microcontrôleur pour gérer la logique du jeu, les entrées/sorties et la communication avec les périphériques.

Afficheur LCD I2C

Pinouts of 1602 LCD display with I2C

Affichage du jeu (position du serpent, pommes et score).

Connexion facilitée grâce à l'interface I2C, utilisant seulement 4 fils (VCC, GND, SDA, SCL).

Joystick analogique

Contrôle du mouvement du vaisseau dans différentes directions (X/Y) et, éventuellement, un bouton intégré pour des actions spéciales (tire).

Buzzer

Génération de sons pour le feedback du joueur, comme le mouvement du vaisseau, tire et destruction des ennemies.

Câble de connexion

Fils de connexion

Vous aurez besoin d'un câble pour connecter l'afficheur LCD et la manette (Joystick) à la carte ESP32.

Plaque d'essai (Breadboard) :

plaque d'essai

On utilise la plaque d'essai pour faciliter le câblage des différents composants.

 

Schéma de câblage du projet

1- Joystick :

Connecter les axes X et Y aux entrées analogiques de la carte ESP32 (exemple : GPIO34 et GPIO35).

Connecter le bouton poussoir (si utilisé) à une entrée de la carte ESP32 (exemple GPIO33).

Connecter la broche 5V à la broche 3V3 de la carte ESP32.

Connecter la broche GND à la broche GND de la carte ESP32.

2- Afficheur LCD :

Si un module I2C est utilisé, connecter les broches :

SCLGPIO22(ESP32)

SDAGPIO21(ESP32)

VCC5V(ESP32)

GNDGND(ESP32)

3- Buzzer :

Connecter la broche (+) à la broche GPIO23 de la carte ESP32.

Connecter la broche (-) à la broche GND de la carte ESP32.

 

Programmation de la carte ESP32 avec Micropython

Pour programmer la carte ESP32 en MicroPython pour créer le jeu Snake, vous pouvez suivre les étapes suivantes :

1- vous devez disposer d'un environnement MicroPython installé sur votre ESP32.

2- Flashez votre ESP32 avec MicroPython en utilisant Firmware esp32-20210902-v1.17.bin.

3- Importer les bibliothèques "i2c_lcd" et "lcd_api" dédiées à l'écran LCD I2C

Description du programme :

1- Initialisation :

Configuration des périphériques (I2C pour l'écran, ADC pour le joystick).

Initialisation des variables de jeu (position initiale du vaisseau spatial et position des ennemies).

2- Affichage du jeu sur l’écran LCD :

Mise à jour fréquente de l'écran pour refléter la position du vaisseau spacial.

3- Lecture des entrées du joystick :

Conversion des valeurs analogiques des axes X et Y en directions.

Interprétation des mouvements pour changer la position du vaisseau spacial.

4- Déplacement du vaisseau spatial :

Le vaisseau se déplace sur une ligne horizontale suivant le mouvement de la manette.

5- Destruction des ennemies :

- Si on appuie sur le bouton de la manette, le vaisseau tire le rocket.

- L'ennemie est détruit s'il est touché par la rocket.

 

Voici le programme complet du programme :

 

Explications du code

a. Lecture des entrées

Lire les valeurs du joystick (axes X et Y) à l’aide des ports analogiques de l’ESP32.

Lire l’état des boutons (appuyé/non appuyé).

b. Affichage

Envoyer les données de position et d'état des composants du jeu (vaisseau et ennemies) à l'écran LCD I2C via le protocole I2C.

Rafraîchir l'écran à intervalles réguliers pour donner une impression de mouvement fluide.

c. Mise à jour du jeu

Calculer la nouvelle position du vaisseau en fonction des entrées.

Vérifier les collisions (tir-ennemi).

d. Boucle principale

La logique du jeu est exécutée en boucle :

1- Lire les entrées (joystick, boutons).

2- Mettre à jour la position des objets et vérifier les collisions.

3- Afficher les données mises à jour sur l'écran.

4- Attendre un court délai pour synchroniser la fréquence d'exécution.

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali-Prof Info