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 : Jérémy
Fonctionnement des "FONT" sur écran OLED
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Ok je test ca tout de suite !
j'avance de mon coté, le 4 est presque la ! encore un petit bug à corriger . Mais après il reste l'optimisation !
C'est mieux , on obtient une barre en diagonaledu "4" celle qui part en bas à gauche et qui monte au sommet à droite du "4". Mais cette droite est parfaitement droite , alors qu'il devrait y avoir une petite bosse au milieu !
voila le code en question :
j'avance de mon coté, le 4 est presque la ! encore un petit bug à corriger . Mais après il reste l'optimisation !
C'est mieux , on obtient une barre en diagonaledu "4" celle qui part en bas à gauche et qui monte au sommet à droite du "4". Mais cette droite est parfaitement droite , alors qu'il devrait y avoir une petite bosse au milieu !
voila le code en question :
Code : Tout sélectionner
//---------------------------------------------------------------------------------
void affichage_L(){
unsigned int valeur,j,i;
unsigned char tableau[130];
unsigned int valeur_0, valeur_1, valeur_2, valeur_3, valeur_4, valeur_5, valeur_6, valeur_7 ;
unsigned char tableau_0[9], tableau_1[9], tableau_2[9], tableau_3[9], tableau_4[9], tableau_5[9], tableau_6[9], tableau_7[9] ;
OLED_M_command(SSD1306_COLUMNADDR); // On configure la largeur de l'ecran
OLED_M_command(40); // Colonne minimum
OLED_M_command(47); // Colonne MAximum;
OLED_M_command(SSD1306_PAGEADDR); // On configure la hauteur de l'ecran
OLED_M_command(1); // Colonne minimum
OLED_M_command(4); // Colonne MAximum;
j=i=0;
for (i=0;i<=7;i++){
tableau_0[i] = ( font16x8[352+i] & 0b10000000) ;
tableau_1[i] = ( font16x8[352+i] & 0b01000000) ;
tableau_2[i] = ( font16x8[352+i] & 0b00100000) ;
tableau_3[i] = ( font16x8[352+i] & 0b00010000) ;
tableau_4[i] = ( font16x8[352+i] & 0b00001000) ;
tableau_5[i] = ( font16x8[352+i] & 0b00000100) ;
tableau_6[i] = ( font16x8[352+i] & 0b00000010) ;
tableau_7[i] = ( font16x8[352+i] & 0b00000001) ;
}
valeur_0 = ( (tableau_0[0])|(tableau_0[1])|(tableau_0[2])|(tableau_0[3])|(tableau_0[4])|(tableau_0[5])|(tableau_0[6])|(tableau_0[7]) );
OLED_M_data(valeur_0);
valeur_1 = ( (tableau_1[0])|(tableau_1[1])|(tableau_1[2])|(tableau_1[3])|(tableau_1[4])|(tableau_1[5])|(tableau_1[6])|(tableau_1[7]) );
OLED_M_data(valeur_1);
valeur_2 = ( (tableau_2[0])|(tableau_2[1])|(tableau_2[2])|(tableau_2[3])|(tableau_2[4])|(tableau_2[5])|(tableau_2[6])|(tableau_2[7]) );
OLED_M_data(valeur_2);
valeur_3 = ( (tableau_3[0])|(tableau_3[1])|(tableau_3[2])|(tableau_3[3])|(tableau_3[4])|(tableau_3[5])|(tableau_3[6])|(tableau_3[7]) );
OLED_M_data(valeur_3);
valeur_4 = ( (tableau_4[0])|(tableau_4[1])|(tableau_4[2])|(tableau_4[3])|(tableau_4[4])|(tableau_4[5])|(tableau_4[6])|(tableau_4[7]) );
OLED_M_data(valeur_4);
valeur_5 = ( (tableau_5[0])|(tableau_5[1])|(tableau_5[2])|(tableau_5[3])|(tableau_5[4])|(tableau_5[5])|(tableau_5[6])|(tableau_5[7]) );
OLED_M_data(valeur_5);
valeur_6 = ( (tableau_6[0])|(tableau_6[1])|(tableau_6[2])|(tableau_6[3])|(tableau_6[4])|(tableau_6[5])|(tableau_6[6])|(tableau_6[7]) );
OLED_M_data(valeur_6);
valeur_7 = ( (tableau_7[0])|(tableau_7[1])|(tableau_7[2])|(tableau_7[3])|(tableau_7[4])|(tableau_7[5])|(tableau_7[6])|(tableau_7[7]) );
OLED_M_data(valeur_7);
}
Fonctionnement des "FONT" sur écran OLED
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Je l'ai !!!!!!
Je suis super content et fier !!! merci de m'avoir poussé, car je crois que c'est le truc ou j'ai le plus écrit et dessiner pour comprendre !
reste plus qu'a optimiser ! je fais quelques essais et je post
Voila .
Ca fonctionne impeccable
@Maï :
En remplaçant :
par
Ca ne fonctionne pas ! ce doit être ça qui ne fonctionne pas dans ton code !
Je suis super content et fier !!! merci de m'avoir poussé, car je crois que c'est le truc ou j'ai le plus écrit et dessiner pour comprendre !
reste plus qu'a optimiser ! je fais quelques essais et je post
Voila .
Ca fonctionne impeccable
Code : Tout sélectionner
//---------------------------------------------------------------------------------
void affichage_L(){
unsigned int valeur,j,i;
unsigned char tableau[255];
zone_ecran(50,57,1,3);
j=i=0;
for (j=0;j<=15;j++){ // On extrait chaque bit pour les enregistrer dans un tableau de 128 caracters sur une ligne 16 x 8 = 128 .
for (i=0;i<=7;i++){
tableau[(i+(j*8))] = ( ((font16x8[(432+j)])>>(7-i)) & (0x01) ) ; // Pour extraire mon bit, je fais un décalage a droite pour le mettre en LSB
} // Je fais un masque pour cacher le reste et ne retenir que le LSB
} // Que je stock dans le tableau les uns à la suite des autres
// J'ai donc un tableau de 128 caractéres ( qui sont des "0" ou des "1") à la suite
// Je fais une premier salve de recuperation pour faire mon segments de 8 bits, une fois fini je l'affiche, et je passe au segments suivant
// Je fais cela 8 fois correspond à la largeur de mon caractere sur la premièer page
for (i=0;i<=7;i++){
valeur = ( (((tableau[i])*1)) + (((tableau[(i+8)])*2)) + (((tableau[(i+16)])*4)) + (((tableau[(i+24)])*8)) + (((tableau[(i+32)])*16)) + (((tableau[(i+40)])*32)) + (((tableau[(i+48)])*64)) + ((tableau[(i+56)])*128) );
OLED_M_data(valeur);
}
// ici je réintere l'opération mais sur la deuxieme page, en continuant dans l'ordre du tableau
for (i=0;i<=7;i++){
valeur = ( (((tableau[i+64])*1)) + (((tableau[(i+72)])*2)) + (((tableau[(i+80)])*4)) + (((tableau[(i+88)])*8)) + (((tableau[(i+96)])*16)) + (((tableau[(i+104)])*32)) + (((tableau[(i+112)])*64)) + ((tableau[(i+120)])*128) );
OLED_M_data(valeur);
}
}
@Maï :
En remplaçant :
Code : Tout sélectionner
valeur = ( (((tableau[i])*1)) + (((tableau[(i+8)])*2)) + (((tableau[(i+16)])*4)) + (((tableau[(i+24)])*8)) + (((tableau[(i+32)])*16)) + (((tableau[(i+40)])*32)) + (((tableau[(i+48)])*64)) + ((tableau[(i+56)])*128) );
par
Code : Tout sélectionner
valeur = ( (tableau[i])|(tableau[(i+8)])|(tableau[(i+16)])|(tableau[(i+24)])|(tableau[(i+32)])|(tableau[(i+40)])|(tableau[(i+48)])|(tableau[(i+56)]) );
Ca ne fonctionne pas ! ce doit être ça qui ne fonctionne pas dans ton code !
Fonctionnement des "FONT" sur écran OLED
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous,
Hier j'ai pus un peu travaillé pour l'amélioration de la focntion de conversion .
Je pense que je peux encore faire mieux ! les trois boucles imbriquées m'inquiquine ! je visualise 1 seule boucle, mais il me faudra plus de variable .
j'ai pris la maladie du Maï sur l'optimisation !
A suivre
Hier j'ai pus un peu travaillé pour l'amélioration de la focntion de conversion .
Je pense que je peux encore faire mieux ! les trois boucles imbriquées m'inquiquine ! je visualise 1 seule boucle, mais il me faudra plus de variable .
j'ai pris la maladie du Maï sur l'optimisation !
A suivre
Code : Tout sélectionner
for (k=0;k<=1;k++){
for (i=0;i<=7;i++){
for (j=0;j<=7;j++){
valeur += ( (((font16x8[(lettre+(k*8)+j)])>>(7-i)) & (0x01)) << j ) ;
}
OLED_M_data(valeur);
valeur = 0 ;
}
}
Fonctionnement des "FONT" sur écran OLED
Il existe un super programme pour faire ses fonts (et autres) : The Dot Factory
http://www.eran.io/the-dot-factory-an-l ... generator/
http://www.eran.io/the-dot-factory-an-l ... generator/
Fonctionnement des "FONT" sur écran OLED
Fonctionnement des "FONT" sur écran OLED
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Hello ,
Merci jacobi pour ce lien ( que je connaissais) . je pense que je vais le mettre en lien utile du coup !
@Sylvain : Bien au contraire ! la FONT que l'on trouve en #1 est faite avec ce logiciel justement! Mais elle n'est pas transposable avec mon OLED et le driver SSD1306. Il faut donc bien la librairie que je suis en train d'essayé de peaufiner pour pouvoir utiliser les font de ce logiciel !
Je vais regarder aussi ce lmogiciel pour voir si il peut sortir une DONT "compatible" avec le SSD1306 .
Merci jacobi pour ce lien ( que je connaissais) . je pense que je vais le mettre en lien utile du coup !
@Sylvain : Bien au contraire ! la FONT que l'on trouve en #1 est faite avec ce logiciel justement! Mais elle n'est pas transposable avec mon OLED et le driver SSD1306. Il faut donc bien la librairie que je suis en train d'essayé de peaufiner pour pouvoir utiliser les font de ce logiciel !
Je vais regarder aussi ce lmogiciel pour voir si il peut sortir une DONT "compatible" avec le SSD1306 .
Fonctionnement des "FONT" sur écran OLED
Bonjour
c'est bien jeremy.Pour ce qui est de l'optimisation sur la manip des bits, rien ne vaut l'ASM .Tu fera bientôt des SPG en ASM que tu incorporeras dans ton projet j'en suis sur
Voici ce que ca donne en ASM
Le code:
Le résultat:
La conversion du chiffre QUATRE se fait en 884 cycles pour 58 octets, on peut mieux faire me suis pas trop foule le résultat est a l'adresse 0x1B 0x0,0xFE etc..
encore EN C ton approche en C est meilleur que la mienne, j'ai voulu faire une copie de asm_>le C, pas super. Encore
A+
c'est bien jeremy.Pour ce qui est de l'optimisation sur la manip des bits, rien ne vaut l'ASM .Tu fera bientôt des SPG en ASM que tu incorporeras dans ton projet j'en suis sur
Voici ce que ca donne en ASM
Le code:
Code : Tout sélectionner
LFSR FSR1,TableauB
MOVLW 0X08
MOVWF j
Bou LFSR FSR0,TableauA
MOVLW 0x08
MOVWF i
Bou1 BCF STATUS,C
RRCF POSTINC0,F
RRCF INDF1,F
DECFSZ i
BRA Bou1
MOVF POSTINC1,F
DECFSZ j
BRA Bou
MOVLW 0X08
MOVWF j
Bou2 LFSR FSR0,TableauA+8
MOVLW 0x08
MOVWF i
Bou3 BCF STATUS,C
RRCF POSTINC0,F
RRCF INDF1,F
DECFSZ i
BRA Bou3
MOVF POSTINC1,F
DECFSZ j
BRA Bou2
Le résultat:
La conversion du chiffre QUATRE se fait en 884 cycles pour 58 octets, on peut mieux faire me suis pas trop foule le résultat est a l'adresse 0x1B 0x0,0xFE etc..
encore EN C ton approche en C est meilleur que la mienne, j'ai voulu faire une copie de asm_>le C, pas super. Encore
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Fonctionnement des "FONT" sur écran OLED
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bon j'ai essayé mais je trouve pas !
Je pense que c'est déjà pas mal ; Merci Maï pour le compliment !
je dois maintenant comprendre et essayer d'utiliser le fichier descriptor que l'on voit en #1 !
En plus automatiser l'écriture un peu comme sur un LCD
Je pense que c'est déjà pas mal ; Merci Maï pour le compliment !
je dois maintenant comprendre et essayer d'utiliser le fichier descriptor que l'on voit en #1 !
En plus automatiser l'écriture un peu comme sur un LCD
Fonctionnement des "FONT" sur écran OLED
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Quelqu'un à une idée comment utiliser le tableau description dans le code en #1.
Je vois bien qu'il s'agit de la largeur de la lettre et de sa position , mais je n’arrive pas à saisir comment m'en servir pour afficher une phrase par exemple !
Je vois bien qu'il s'agit de la largeur de la lettre et de sa position , mais je n’arrive pas à saisir comment m'en servir pour afficher une phrase par exemple !
Fonctionnement des "FONT" sur écran OLED
-
Jérémy
Administrateur du site- Messages : 2727
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Personne n'a d'idée sur le fonctionnement de cette partie du code générée ?
Ce sont les parenthèses qui me chiffonne ! comment récupérer ces deux valeurs précieuses ? pour enchainer une phrase ou un mot ?
Code : Tout sélectionner
int descriptors[] =
{
(1,0),// !
(4,16),// "
(9,32),// //
(7,64),// $
(12,80),// %
(9,112),// &
Ce sont les parenthèses qui me chiffonne ! comment récupérer ces deux valeurs précieuses ? pour enchainer une phrase ou un mot ?
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 90 invités