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 ---
- 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 ---
Modérateur : mazertoc
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
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.
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)
Bonsoir satinas, francois77, et tout le forum,
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
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+
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
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+
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
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 ?
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)
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.
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)
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.
// 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)
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+
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+
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
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
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 47 invités