Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#81 Message par satinas » sam. 28 mai 2022 15:51

Les divers programmes PC existent, si on part du principe que sur Arduino tout existe :)
La routine ASM d'écriture bitmap, tu l'as déjà faite pour ton oscillo oled.

Il ne reste que la routine ASM d'écriture GFX. Le seul point non abordé est la position d'écriture. L'offset en y est donné par rapport à la ligne de base. C'est le bas des minuscules, la ligne qu'on avait sur les cahiers d'écolier pour écrire correctement à l'horizontale.

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2617
Enregistré en : juillet 2016
Localisation : Terre

#82 Message par Temps-x » sam. 28 mai 2022 16:29

Merci ! satinas, il me faudrait juste un caractère avec le code hexadécimal sur une ligne,

Ce que j'ai décodé sur la Fonts Mono 9x7, par exemple sur le A

Sans être sur que tout y sois, car je sais pas comment il détermine le nombre de donnée ?

{237, 11, 10, 11, 0, -9}, ; 0x41 'A'

((12 valeur sur une ligne x 19 colonne = 228) + 9 données) = 237 : 0x3C,0x3C,0x01,0x40,0x28,0x09,0x01,0x10,0x42,0x0F,0xC1

Ce qui représente en binaire

00111100 = 0x3C
00111100 = 0x3C

00000001 = 0x01
01000000 = 0x40

00101000 = 0x28
00001001 = 0x09

00000001 = 0x01
00000001 = 0x10

01000010 = 0x42
00001111 = 0x0F

11000001 = 0xC1

Je vais regarder ça ce soir, faut vraiment que j'aille tondre, et profiter du beau Temps :-D

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#83 Message par satinas » sam. 28 mai 2022 18:03

Je sais bien que ça manque de détail, encore une louche :)

{ 51, 2, 13, 11, 5, -10 }, // 0x28 '('
le bitmap fait 2x13, soit 26 bits, il faut donc 4 octets (4x8=32)
0x5A, 0xAA, 0xA9, 0x40
Voir la répartition des bits indiquée plus haut avec un dessin : en partant du bit 7 du 1er octet, on prend 2 bits pour chaque ligne, arrivé au bit 0, on passe au bit 7 de l'octet suivant.

{ 573, 9, 8, 11, 1, -7 }, // 0x61 'a'
le bitmap fait 9*8, soit 72 bits, il faut donc 9 octets pile (9x8=72)
0x7E, 0x00, 0x80, 0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB
La première ligne consomme 8 bits + 1 bit de l'octet suivant, ensuite 7+2, 6+3, ...

{ 237, 11, 10, 11, 0, -9 }, // 0x41 'A'
le bitmap fait 11x10, soit 110 bits, il faut donc 14 octets (14x8=112)
0x3C, 0x01, 0x40, 0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C
La première ligne consomme 8 bits + 3 bits de l'octet suivant, ensuite 5+6, ...

Code : Tout sélectionner

           .*
           .*                         ..****.....
           *.                         ....*.*....
           *.          .******..      ....*.*....
           *.          .......*.      ...*..*....
           *.          .......*.      ...*...*...
           *.          ..******.      ..*....*...
           *.          **.....*.      ..******...
           *.          *......*.      ..*.....*..
           *.          *......*.      .*......*..
           *.          .*****.**      ****...****
           .*
           .*

      ----->          ->              >
           5           1              0
   ^  ......*....     ...........     ...........
  -10 ......*....     ...........   ^ ..****.....
      .....*.....     ...........  -9 ....*.*....
      .....*.....   ^ ..******...     ....*.*....
      .....*.....  -7 ........*..     ...*..*....
      .....*.....     ........*..     ...*...*...
      .....*.....     ...******..     ..*....*...
      .....*.....     .**.....*..     ..******...
      .....*.....     .*......*..     ..*.....*..
      .....*.....     .*......*..     .*......*..
 ---- .....*..... --- ..*****.**. --- ****...**** ---
      ......*....     ...........     ...........
      ......*....     ...........     ...........


Le 'A' a l'air un peu biscornu, en tout cas on est pas loin.
J'ai dessiné une matrice 11x13 car ce sont les plus grandes largeurs et hauteurs de caractère, mais en fait on fait ce que l'on veut. D'après ce que j'observe, il n'y a pas de limite pour la taille des caractères.
Si Paul peut vérifier en pratique, il pourra indiquer si c'est bon, à +/- 1 pixel près :)
Modifié en dernier par satinas le sam. 28 mai 2022 18:20, modifié 1 fois.

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#84 Message par francois77 » sam. 28 mai 2022 18:09

Bonsoir,

const uint8_t FreeMono9pt7bBitmaps[] PROGMEM = {

// 0x41 'A' 237 250 11 10 11 0 -9 3C 1 40 28 9 1 10 42 0F C1 4 40 9E 3C

001111000001010000000010100010010001000100000100001000001111110000010100010000001001111000111100

Merci a mon ami Excel

Possible de la faire pour une autre font sur demande

A+

Francois
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#85 Message par francois77 » sam. 28 mai 2022 18:33

Re.

nouvelle table suite erreur

On verra demain pour la suite, mais ma matrice fonctionne
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#86 Message par francois77 » sam. 28 mai 2022 21:47

UN W
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#87 Message par satinas » sam. 28 mai 2022 22:34

Ma version de la routine ASM d'écriture caractère GFX.
Les 16F enhanced permettent d'utiliser aussi FSR/INDF sur la flash, pour les 18F c'est soit TBLPTR soit FSR.

► Afficher
Modifié en dernier par satinas le dim. 29 mai 2022 07:04, modifié 1 fois.

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2617
Enregistré en : juillet 2016
Localisation : Terre

#88 Message par Temps-x » sam. 28 mai 2022 22:40

Bonsoir francois77, satinas,

:bravo: francois77, voila une belle démonstration, et en plus avec les bits indiqués dans les cases, pour que tout le monde comprenne voici

La lettre W traduit par francois77, Indication du tableau {497, 11, 10, 11, 0, -9}

Ce qui donne ceci dans le tableau 0xF1,0xE8,0x09,0x11,0x25,0x44,0xA8,0x55,0x0C,0xA1,0x8C,0x31,0x84,0x30

Traduit en binaire

11110001 = 0xF1
11101000 = 0xE8
00001001 = 0x09
00010001 = 0x11
00100101 = 0x25
01000100 = 0x44
10101000 = 0xA8
01010101 = 0x55
00001100 = 0x0C
10100001 = 0xA1
10001100 = 0x8C
00110001 = 0x31
10000100 = 0x84
00110000 = 0x30

Y a plus cas remplir le tableau... :-)

C'est quand même simple à faire comme démonstration, je suis étonné de la par de la communauté Arduino qu'il y a pas de tutoriel de simplicité comme l'a fait francois77

Attention au mode utilisé quand on configure l'écran, il y a un total de 3 modes sur ce genre d'écran, ça change tout pour les lettres et les chiffres.

Merci ! satinas je vais voir ce que donne tout ça, il y a plus ca faire, en code ASM et programme pour PC

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#89 Message par francois77 » dim. 29 mai 2022 08:12

Bonjour,
N’ayant jamais joué avec un écran graphique, j’ai depuis le début une approche texte au lieu de graphique, en cause l’utilisation d’une 16f, même si après réflexion c’est possible de travailler sur un mode type Satanas

Mon petit programme Excel permet de transposer une table type Arduino vers une table classique
En image mon approche de la conversion
En entrée une table Arduino en sortie un table de 2 octet * nombre de ligne (font 9pt7b)

Le principe
Conversion de la table ( Excel)
Utilisation d’une macro type (ASM)

Ecriture_Caractère ( position ligne debut (0/6) , position colonne debut ( 0 128), table caractère, caractère, Hauteur ( 0/6, largeur (0-128, inter espace )

Ecriture_Caractère ( 2 ,10, table_ FreeMono9pt7b_transposé , ‘A’, 2, 10, 3)
Cela reste a simplifier…..

Cela doit être possible de convertir n’importe quelle table sous ce format

Merci de ne pas hurler !!!!
Table arduino = environ 1414 octet
Table caractère = 2 *10 *95 caractère = 1900 octet
Je vais réfléchir à cette solution, la nuit prochaine et finir mon programme Excel et le tester avec d’autres fonts
Bonne journée
Francois
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2617
Enregistré en : juillet 2016
Localisation : Terre

#90 Message par Temps-x » lun. 30 mai 2022 02:35

Bonsoir francois77, et tout le forum,

Voila j'ai fini le décodage de toutes les fichiers de la fonts Arduino en mode GFX, et MikroC, je vais mettre dans la semaine le programme sur le forum,
:sifflotte: reste les fonts Windows à faire.....

La couleur de grille et réglable, la couleur de fond et réglable, la couleur du pixel et réglable.

On pourras par la suite modifier les caractères de la fonts en cours, et l'enregistrer sans modifier le fichier de la fonts qui est en utilisation, car tout seras stocké dans le presse papier au moment de la récupération de votre modification, l'enregistrement pourras se faire en mode 1 ou mode 2

Je crois que je vais partir coté ASM dans les fonts GFX, faut que je réfléchisse pour une version 16F et 18F.......

oops J'en crois pas mes yeux, j'ai jamais vu une fonts aussi grosse

Fonts Arduino.jpg


francois77 a écrit :Source du message Cela doit être possible de convertir n’importe quelle table sous ce format

Je tiens compte de tes idées francois77, reste à voir de quoi ASM à besoin pour ses caractères en priorité

J'ai vu dans les fonts de MikroC sur le site de paulfjujo qu'il mets juste la hauteur pour chaque fonts, c'est pas idiot comme méthode.

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 63 invités