Oui oui, vous avez bien lu, on va parler d'affichage 3D, tourné sur un Arduino.
Et je vais écrire là où j'en suis en même temps que mon avancement.
1 - Matériel Prérequis
- Un support de programmation Arduino IDE (PC/Mac/en ligne etc.) (voir le site pour les spécifications minimales)
- Un Arduino
- Un écran compatible avec Arduino (ici un ILI9341)
2 - Le format de données
On va tenter de varier l'affichage, sinon je demande à l'Arduino de me faire quelques lignes et c'est fini.
Donc on va faire un format de données permettant de varier.
On peut imaginer qu'il pourra être stocké dans un fichier.
2.1 - Brève description de la 3D
La 3D est une dimension, allez voir Wikipédia.
Non, je rigole ![]()
Je tient à préciser que je vais simplifier l'explication pour notre usage.
La 3D comporte trois axes, que l'on va nommer X, Y et Z :
Dans notre format de données, tout ce qui va être affiché aura des informations pour qu'on puisse le localiser.
Comme localiser signifies connaître la position sur les axes, l'objet va recevoir des valeurs pour chaque axe, donc évidemment un type de valeur qui peut s'incrémenter : les nombres (pas de lettres ou je ne sais quoi !)
| Nom | X | Y | Z | |
|---|---|---|---|---|
| Objet 1 | 64 | 32 | 20 | |
| Objet 2 | 4 | -4 | 40 |
2.2 - Les inforamtions sur l'objet 3D
Problème, même si notre programme sait comment convertir un objet 3D en image 2D pour notre écran, on ne lui a pas fourni assez d'informations.
On ne lui a pas dit à quoi l'objet ressemble ni où l'afficher.
Regardez bien, les axes n'ont pas encore de valeur.
Ni une, ni deux, on le fait :
Notre fichier ressemble pour l'instant à ça :
Objet_1 64 32 20
Objet_2 4 -4 40
Passons à l'autre information manquante :
On aurait pu faire
Objet_1 64 32 20 CUBE
Objet_2 4 -4 40 CYLINDRE
Mais il faut leur rajouter des informations (dimensions, rotation, autre) pour chaqun, ce qui fera que le fichier sera beaucoup moins compréhensible et moins régulier.
Alors j'ai eu une idée : le format va dicter directement chaque face.
Une face est composée au minimum par trois segments, ce qui forme un triangle.
N'importe quelle autre face à un nombre supérieur de segments à 3 peut être divisé en plusieurs triangles.

Alors autant choisir universellement (dans notre format) comme face le triangle.
N'oubliez pas que le rtiangle est en 2D. On va donc rajouter l'axe manquant à chaque sommet de ce triangle.
Pourquoi ne pas faire point par point pour les objets ?
Parce qu'on ne saurait pas relier tel à tel, et que rajouter cette inforamtion alourdirait le programme et me donnera mal à la tête de tenter cette approche.
Voici actuellement notre format de données :
| X1 | Y1 | Z1 | X2 | Y2 | Z2 | X3 | Y3 | Z3 |
|---|---|---|---|---|---|---|---|---|
| 64 | 32 | 20 | 6 | 32 | 0 | 6 | 32 | 20 |
| 4 | -4 | 40 | 64 | 2 | 10 | 64 | 54 | 15 |
Donc
64 32 20 6 32 0 6 32 20
4 -4 40 64 2 10 64 5415
On peut désormais créer notre modèle 3D !
2.3 - Les versions
On va juste rajouter au départ de notre fichier le numéro de version pour que le programme sache comprendre le fichier.
version 1.0
64 32 20 6 32 0 6 32 20
4 -4 40 64 2 10 64 5415










