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)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#111 Message par francois77 » dim. 5 juin 2022 19:51

Bravo !!!!

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

#112 Message par satinas » dim. 5 juin 2022 20:48

https://learn-adafruit-com.translate.go ... x_tr_hl=fr
Attention, sur cette page il est dit que l'offset en x peut être négatif, il faut en tenir compte.

Sur Arduino il y a une fonction GetTextBounds(text, x, y) qui retourne position et taille du bitmap d'effacement.
On peut aussi lors de l'écriture mettre à jour une variable longueur totale en pixels, qui servira pour l'effacement.

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

#113 Message par Temps-x » dim. 5 juin 2022 21:58

Bonsoir satinas, francois77, et tout le forum,

satinas a écrit :Source du message Attention, sur cette page il est dit que l'offset en x peut être négatif, il faut en tenir compte.


Ok, je vais prévoir une inversion de bit dans la configuration, après coté ASM chacun peut développé ses propres fonctions.

Je suis sur les Fonts de Windows, pas simple à comprendre, je vais surement utiliser les Api de Windows coté programmation.

J'ai trouvé sur le net une mine d'or ICI reste à les décodés.

J'espère que vous avez compris comment fonction le programme, à l'heure ou je vous écris ses quelles mots, il a encore évolué, le problème
d'écrire un programme c'est toujours la gestion qu'il faut gérer.

Reste à inclure une fonction pour générer un code ASM pour 16F et 18F

Merci ! pour votre participation francois77, satinas, paulfjujo, je mettrais un lien sur le début de toutes la discussion ou je présente mon programme.

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

#114 Message par francois77 » lun. 6 juin 2022 06:11

Bonjour

Reveil matinal, hier pas d'internet et trop d'orage.
Pas besoin d'arroser le jardin pendant quelques jours .....

Je regarderais le programme de temp-x dans l'apres midi

constGFXglyphFreeMonoBold24pt7bGlyphs[]PROGMEM={
{1915 29 27 28 -1 -26} //0x41'A'
{2956 31 27 28 -1 -26} //0x4D'M'
{3812 30 27 28 -1 -26} //0x56'V'
{5532 30 22 28 -1 -21} //0x6D'm'

en traitant avec mon Excel, j'ai été surpris par cette valeur negative, comme indiqué par Satanas et evidement plantage de ma macro !!
Pas trop compris l'utilité de commencé un caractere a -1 en x, mais c'est comme cela

Pas simple les fonts ....

Bonne journée a tous les deux

Francois

En complement pour être sur que j'ai bien compris :

un caractere avec x negatif (-2) va effacer les 2 dernieres lignes du caracteres précedents si celui ci fini au max ?

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

#115 Message par satinas » lun. 6 juin 2022 10:53

Bonjour

Les 2 colonnes plutôt, cela dépend si tu affiches le bitmap du caractère en mode opaque ou transparent. Je pense qu'ils ont prévu large dans les spécifications pour permettre de faire des choses variées. Par exemple on peut imaginer de créer un caractère cédille qui recule en x de 11 et vient se placer en dessous du 'c'.
Le problème du SSD1306 est qu'il envoie 8 pixels d'un coup, d'où la nécessité d'un buffer intermédiaire mémorisant le contenu actuel de l'écran. Je suis en train de regarder les bibliothèques Arduino pour voir comment cela se passe.

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

#116 Message par satinas » lun. 6 juin 2022 11:32

Il affiche en mode transparent

// NOTE: THERE IS NO 'BACKGROUND' COLOR OPTION ON CUSTOM FONTS.
// THIS IS ON PURPOSE AND BY DESIGN. The background color feature
// has typically been used with the 'classic' font to overwrite old
// screen contents with new data. This ONLY works because the
// characters are a uniform size;

Porgramme C très similaire au mien. Si le pixel est allumé, il l'affiche, sinon on passe. Avec size_x et size_y on peut agrandir le caractère, dans ce cas on remplit un rectangle au lieu d'un pixel.

Code : Tout sélectionner

    for (yy = 0; yy < h; yy++) {
      for (xx = 0; xx < w; xx++) {
        if (!(bit++ & 7)) {
          bits = pgm_read_byte(&bitmap[bo++]);
        }
        if (bits & 0x80) {
          if (size_x == 1 && size_y == 1) {
            writePixel(x + xo + xx, y + yo + yy, color);
          } else {
            writeFillRect(x + (xo16 + xx) * size_x, y + (yo16 + yy) * size_y,
                          size_x, size_y, color);
          }
        }
        bits <<= 1;
      }
    }

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

#117 Message par Temps-x » lun. 6 juin 2022 13:50

Bonjour satinas, francois77, et tout le forum,

satinas, J'ai fait une routine ASM pour ce genre de problème, elle fonction parfaitement, mais elle nécessite beaucoup de mémoire sdram 1024 octets(taille d'une image)

Sur ce genre d'écran on ne peut pas lire un pixel, et ça c'est un gros problème, pour le résoudre il faut stocker tout en mémoire sdram.

Ce n'est pas envisageable pour le Pic de francois77, par contre avec 368 octets de sdram(ce que possède ce pic) il doit pouvoir le faire sur des Fonts d'un maximum de 18pt.

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)
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#118 Message par satinas » lun. 6 juin 2022 14:00

Bonjour Temps-x, ce n'était pas un avis, j'explique juste comment cela fonctionne sur Arduino. Il est vrai que la carte Uno possède 2ko de ram.

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

#119 Message par francois77 » lun. 6 juin 2022 16:02

Bonjour,

Ne vous prenez pas la tête pour moi (16f876)
J’ai une idée en tête mais ça avance tout doucement
Pour l'instant je mets aux propres mes macros Excel pour les polices, je regarderais après pour le 16f si c'est possible
Pour rappel le 16f c’est un challenge pour mon petit cerveau
A+
François :sifflotte: :-)

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

#120 Message par francois77 » lun. 27 juin 2022 08:17

Bonjour a tous

le plus dur est fait !!

Pilotage de l'ecran en xy en mode spi

Maintenant il va falloir integrer les polices et traiter le mode I2C

Pour le mode I2C si quelqu'un a fait une procedure qui va bien, je suis preneur

Pour les polices, je suis resté sur mon idée d'origine complété de vos idées

- Extraction des polices a l'aide du logiciel TheDotFactory

- Traitement sous excel pour faire la conversion

en sortie j'ai 3 tables
une table de données x Nbre de caracteres

DA 0x38, 0x46 (

une table de commande ( taille caractere, debut, fin ) x Nbre de caracteres
DA 0X00, 0X18, 0X02 (


une table données génerales

police : arialUnicodeMS_5pt
Premier caractere : !'
Dernier caractere : ~'
Table_Generale_arialUnicodeMS_5pt
'Info Taille espace Nbre_Ligne en point Pos_Ref0 Num premier caractere Ascii Decalage Manuel
DA 0x01, 0x06, 0x00, 0x21, 0x00


Encore quelques dizaines d'heures a faire joujou avec mon jouet

Bonne journée a tous

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


Retourner vers « Langage ASM »

Qui est en ligne

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