à compléter
Comment concevoir notre projet ?
Quelles améliorations apporter au prototype présenté en classe ?
Qu'acheter ? Où acheter ? Et à quel prix ?
Quel est le prix de revient de notre projet ?
Où fixer un Ruban LED de 5m ?
Sur une planche ?
Sur un tube ?
Sur le sol ?
Sur un mur ?
Au plafond ? Oui ! Au plafond !
Comment le fixer ? Etudions la nature de plafond de la salle et fixons-nous comme objectif de n'utiliser ni scotch ni colle.
Prenons les mesures de la structure du faux plafond à l'aide d'un pied à coulisse et partons modéliser des supports sur mesures avec Solidworks.
La programmation est très bien faite, mais complexe.
Ensemble nous regarderons le programme en classe.
Ensuite à notre niveau, nous aurons deux objectifs :
Trouver des données à afficher sur l'écran LCD (nombre de vies, numéro du niveau actuel etc.)
Puis nous créerons des niveaux en suivant la documentation. (Traduction, compréhension puis mise en oeuvre).
Un cordon d'alimentation relie une prise de courant avec un interrupteur d'alimentation.
L'interrupteur distribue ou non le courant à l'alimentation 230V/5V
Le bloc d'alimentation transforme la tension d'entrée 230V et alimente le ruban LED en 5V
Le ruban LED convertie le courant électrique en lumière et alimente l'automate ESP32
Gyroscope
ESP32
Ecran LCD
Fils
Alimentation 230v/5v 20A
Module de puissance de l'automate
(en photo l'interrupteur d'alimentation placé en amont du bloc d'alimentation)
Ruban LED aRGB
Haut-parleur
Diffuseur
L’ESP32 possède 2 bus I2C :
Le bus I2C0 est celui qui est utilisé par défaut par les librairies Arduino. Il est relié aux pins GPIO22(SCL) et GPIO21(SDA) de l’ESP32.
Dans ce projet nous avons deux compsants I2C, l'écran LCD et le gyroscope.
Il faut connecter les sorties SDA (Serial Data Line) à la broche 21
et les sorties SCL (Serial Clock Line) à la broche 22
On voit sur ce schéma que nous n'utiliserons qu'un seul haut parleur (son en mono, bien suffisant pour ce type de projet). Ici c'est celui de gauche qui est utilisé. La communication se fera entre la broche IN_L (Entrée sur le canal de gauche) et la broche 25 de l'ESP32. L'ampli doit être alimenté en 5V, et c'est lui qui distribuera cette tension au haut parleur depuis les sorties +OUT et -OUT.
Ligne 57, ajout de la bibliothèque rgb_lcd.h
Ligne 58, déclaration de l'écran
Ligne 213, création d'un coeur en pixel art
Lignes 238 à 241, initialisation de l'écran
Lignes 283 à 310, création d'une fonction AfficheInfos(rgb_lcd lcd, int live,int score,int level)
Lignes 312 à 320, création d'une fonction sizeofint(int x) (cette fonction retourne le nombre de chiffres d'un nombre, fonction utilisée pour placer correctement le score qui sera afficher contre le bord droit de l'écran).
Ligne 465, Appel de la fonction AfficheInfos(lcd,lives,score,levelNumber)
Réaliser un boitier d'alimentation sécurisé et plug and play.
Concevoir et réaliser un joystick qualitatif (Paulin est sur le coup)
Intégrer le son correctement (nous avion rencontré un problème en 2024 et l'avions supprimé)
La fonction playerPosition() permet d’ajouter le personnage jouable.
position : Emplacement du personnage [0-1000].
La fonction spawnEnemy() permet d’ajouter jusqu’à 10 ennemis dans un niveau.
position : Emplacement de l’ennemi [0-1000].
direction : Direction empruntée par les ennemis [0-1]. (Vers le début du stage (0) ou vers la fin du stage (1) )
speed : Vitesse de déplacement des ennemis [1-4].
wobble : Mode de déplacement de l’ennemi [0-1]. (0=mouvement régulier, 1=fait des allers-retours)
L’objet spawnPool représente une source d’ennemis illimitée. La fonction Spawn() permet de générer des ennemis de façon continue selon un emplacement, une fréquence d’apparition, une vitesse de déplacement et une direction.
Il est possible de créer deux spawnPool par niveau.
index : Numéro de la source [0-1]. (Première source : index = 0, deuxième :index = 1)
position : Emplacement de la source [0-1000].
rate : Temps d’attente entre la création d’ennemis. (Exprimé en millisecondes)
speed : Vitesse de déplacement des ennemis [1-4].
direction : Direction empruntée par les ennemis [0-1]. (Vers le début du stage (0) ou vers la fin du stage (1) )
activate : Temps d’attente avant la création du premier ennemi. (Exprimé en millisecondes)
La fonction spawnLava() permet d’ajouter jusqu'à quatre bassins de lave dans un niveau.
startPoint : point de départ [0-1000]
endPoint : [0-1000], combiné avec startPoint, il définit l'emplacement et la taille de la lave
ontime : Durée (ms) pendant laquelle la lave est allumée
offtime : Durée pendant laquelle la lave est activée
offset : Combien de temps (ms) après le début du niveau avant que la lave ne s'allume, utilisez ceci pour créer des motifs avec plusieurs laves.
grow (croissance) : Ceci spécifie le taux de croissance. Utilisez 0 pour une croissance nulle. Une croissance raisonnable est de 0,1 à 0,5.
flow (flux) : Ce paramètre indique le taux et la direction du flux. Les valeurs raisonnables sont comprises entre 0,2 et 0,8.
La fonction spawnConveyor() permet d’ajouter jusqu'à deux cours d'eau dans un niveau.
startPoint : point de départ [0-1000]
endPoint : [0-1000], combiné avec startPoint, il définit l'emplacement et la taille de la lave
speed : La direction et la vitesse de déplacement. Les déplacements négatifs se font vers la base et les déplacements positifs vers la sortie. Doit être inférieur à +/- la vitesse maximale du joueur.
playerPosition = 200
spawnEnemy(350, 0, 2, 0)
spawnEnemy(250, 1, 1.5, 1)
spawnPool[0].Spawn(100, 1500, 2, 1)
spawnLava(600, 900, 2000, 2000, 0, 0.2, -10)
spawnConveyor(30, 160, 0.6)
SSID: TWANG_AP
URL: 192.168.4.1
Password: 12345678