Je souhaite faire des animations de texte sur écran Oled.
Par exemple:
-texte tout petit qui par du centre de l écran et qui s agrandit.
-effet Star Wars
-texte au centre de l écran qui tourne sur lui même
C est pour faire une animation esthétique de titre de jeux.
Problème, j ai pas la moindre idée de comment faire ça. J ai réussi à coder des jeux comme snake, pacman, Tetris mais la j ai pas là moindre idée du début du commencement. Je suis novice.
Bonsoir
Ce que tu veux faire n'est pas forcément facile mais ça doit être faisable. Il faut faire une sorte de dessin animé qui calcule et affiche chaque image l'une après l'autre.
Si tu utilises un uno ou un nano, tu risques d'être rapidement limité par la mémoire et la vitesse de calcul. Si tu as un ESP8266 ou un ESP32 c'est plus crédible.
La bibliothèque SSD1306 d'Adafruit a une instruction getPixel qui permet de connaître l'état d'un pixel, allumé ou éteint. Je pense que ça peut t'aider.
Par exemple, si tu veux afficher un mot et le faire grossir, tu commences par l'afficher comme un texte avec une police de caractères petite. Puis, tu lis les pixels composant ce mot et tu crées un nouveau buffer qui applique une homothétie à l'image qui représente ton mot, pixel par pixel. Enfin tu n'as plus qu'à afficher cette nouvelle image. Ça peut être fait pixel par pixel avec drawPixel
Je ne sais pas si c'est très clair, ni même si c'est faisable. Mais c'est comme ça que j'essaierais à ta place.
Le getPixel n existe pas dans la libraire Adafruit, mais pepe m avais donné la solution.
Comme ces messages on disparu je peux donner les instructions à implémenter.
J avais effectivement pensé faire ces animations comme des dessins animés, mais ça fait charger beaucoup d image.
J ai vu ce type d animation sur le site arduboy https://arduboy.com , je pense pas que la puissance soit suffisante pour faire image par image.
La principale limitation que je vois c'est surtout la faible résolution des écrans OLED qui fait que l'on est très limité en matière d'effet car on se trouve très vite avec une purée de pixels illisibles ou une image toute brouillée. En particulier, si tu fais une rotation en construisant ton image à partir de celle qui est dans la mémoire de l'afficheur à chaque itération tu vas dégrader un peu plus l'image. Il est de loin préférable d'utiliser une image en mémoire et d'appliquer les transformations sur cette image. Mais avec des ATmega c'est un peu chaud quand même, le processeur est moyennement puissant et la mémoire limitée (encore qu'avec ATmega 2560 ou 1284 on soit plus à l'aise).
Tu devrais viser les ESP comme suggéré par lesept ou les Teensy qui seraient quand même plus adaptés
Il faut garder à l'idée que,pour un exemple simple de rotation de 90°, tu vas passer d'une matrice 128 x 64 à une matrice 64 x 128. Donc c'est un peu plus compliqué que ça. Je te conseille d'appliquer ta rotation à une sous matrice carrée de dimension un peu inférieure à 64. Ça t'évitera des problèmes de dépassement d'indices de tableaux...
C'est un peu pareil, l'un et l'autre. Mais je ne sais pas vraiment comment faire, si ce n'est d'appliquer une homothétie.
Mais comme dit fdufnews, tu verras rapidement les limites de l'écran.
Tu devrais envisager un écran tft de plus grandes dimensions, 2.8 ou 3.5 pouces.
Salut. pour la rotation, il vaut mieux avoir l'image dans un tampon et apres scanner sur les pixels de l'ecran, faire la rotation inverse et voir le pixel qui correspond dans le tampon pour eviter les pixels manquants.
Pour l'effet star wars, a mon avis vu l'ecran tu n'aura pas un bon resultat.