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
change de méthode, méthode Jeremy
alors moi je vois ca comme cela
plus court plus fuide j'ai fait les 8 premiers octets, voir si on ne peut pas faire une boucle imbrique pour le 8 suivants, avant demande confirmation si c'est ok pour toi sinon explication
A+
PS on peut reduire encore dans une boucle sans utiliser tout ces tableaux on attend
fait encore des modifs
alors moi je vois ca comme cela
Code : Tout sélectionner
for (i=0;i<7;i++){
tableau_0[i] = ( font16x8[352+i] & 0x10000000) ;
tableau_1[i] = ( font16x8[352+i] & 0x01000000) ;
tableau_2[i] = ( font16x8[352+i] & 0x00100000) ;
tableau_3[i] = ( font16x8[352+i] & 0x00010000) ;
tableau_4[i] = ( font16x8[352+i] & 0x00001000) ;
tableau_5[i] = ( font16x8[352+i] & 0x00000100) ;
tableau_6[i] = ( font16x8[352+i] & 0x00000010) ;
tableau_7[i] = ( font16x8[352+i] & 0x00000001) ;
}
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);
plus court plus fuide j'ai fait les 8 premiers octets, voir si on ne peut pas faire une boucle imbrique pour le 8 suivants, avant demande confirmation si c'est ok pour toi sinon explication
A+
PS on peut reduire encore dans une boucle sans utiliser tout ces tableaux on attend
fait encore des modifs
Modifié en dernier par Anonymous le lun. 16 mai 2016 20:51, modifié 1 fois.
Fonctionnement des "FONT" sur écran OLED
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Mdr ! On travaille chacun de notre coté .....
Du coté j'ai pensé utiliser ta méthode avec ma facon de faire .
Le résultat est pas la, j'obtiens bien quelques choses , mais c'est pas un joli "4" lol . c'est juste des pixels eclairés pa rci par la .Par contre c'est beaucoup plus court du coup, et surtout ca compile . Je pense que j'ai un probléme de LSB ou MSB qui sont pas dans le bon ordre, faut que je revois tout ca .
MA technique un tableau de 128 caracteres sur une seul ligne donc . Je place toute mes bit extrais dans ce tableau . Donc 16 x 8 = 128 .
ensuite je recompose mes segments en récuprant mes bits tout les 8 cases .
Quand un segment est recréer je calcule ca valeur et l'envoi !
J'essaye ton code tout de suite Maï !!!
Du coté j'ai pensé utiliser ta méthode avec ma facon de faire .
Le résultat est pas la, j'obtiens bien quelques choses , mais c'est pas un joli "4" lol . c'est juste des pixels eclairés pa rci par la .Par contre c'est beaucoup plus court du coup, et surtout ca compile . Je pense que j'ai un probléme de LSB ou MSB qui sont pas dans le bon ordre, faut que je revois tout ca .
MA technique un tableau de 128 caracteres sur une seul ligne donc . Je place toute mes bit extrais dans ce tableau . Donc 16 x 8 = 128 .
ensuite je recompose mes segments en récuprant mes bits tout les 8 cases .
Quand un segment est recréer je calcule ca valeur et l'envoi !
Code : Tout sélectionner
void affichage_L(){
unsigned int valeur,j,i;
unsigned char tableau[130];
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 (j=0;j<=15;j++){
for (i=0;i<=7;i++){
tableau[i] = ( ((font16x8[352+j])>>(7-i)) & 0x01 ) ;
}
}
for (i=0;i<=15;i++){
valeur = ( (((tableau[i])*128)) + (((tableau[(i+8)])*64)) + (((tableau[(i+16)])*32)) + (((tableau[(i+24)])*16)) + (((tableau[(i+32)])*8)) + (((tableau[(i+40)])*4)) + (((tableau[(i+48)])*2)) + ((tableau[(i+56)])) );
OLED_M_data(valeur);
}
}
J'essaye ton code tout de suite Maï !!!
Fonctionnement des "FONT" sur écran OLED
Fonctionnement des "FONT" sur écran OLED
Fonctionnement des "FONT" sur écran OLED
oui manque une ) je reprends
Code : Tout sélectionner
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);
Modifié en dernier par Anonymous le lun. 16 mai 2016 20:59, modifié 1 fois.
Fonctionnement des "FONT" sur écran OLED
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
maï a écrit :Source du message tableau_0[i] = ( font16x8[352+i] & 0x10000000) ;
Ca je comprends pas ! car le résultat de cette ligne doit être soit 1 soit 0 ? et la avec le masque on obtiens soit 0 soit 128 non ?
maï a écrit :Source du message 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]) );
La je comprends pas comment avec des "&" tu peut additionner le tout ? faut que j’écrive su papier
Voila ca compile mais l'écran reste noir . Aucun pixel d'affiché
Code : Tout sélectionner
void affichage_L(){
unsigned int valeur,j,i;
unsigned int valeur_0, valeur_1, valeur_2, valeur_3, valeur_4, valeur_5, valeur_6, valeur_7 ;
unsigned char tableau[130];
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] & 0x10000000) ;
tableau_1[i] = ( font16x8[352+i] & 0x01000000) ;
tableau_2[i] = ( font16x8[352+i] & 0x00100000) ;
tableau_3[i] = ( font16x8[352+i] & 0x00010000) ;
tableau_4[i] = ( font16x8[352+i] & 0x00001000) ;
tableau_5[i] = ( font16x8[352+i] & 0x00000100) ;
tableau_6[i] = ( font16x8[352+i] & 0x00000010) ;
tableau_7[i] = ( font16x8[352+i] & 0x00000001) ;
}
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
bon j'explique
le fameux 1er octet est obtenu comme cela:
le bit0 est obtenu en faisant: valeur donnée matrice[0] & 0b00000001 et tu mets cela dans tableau0
le bit1 est obtenu en faisant:valeur donnée matrice[1] et 0b00000010 et tu mets dans tableau1
le bit2 est obtenu en faisant:valeur donnée matrice[é] et 0b00000100 et tu mets dans tableau2
le bit1 est obtenu en faisant:valeur donnée matrice[1] et 0b00001000 et tu mets dans tableau3
etc
le pire c'est regardant ton bit zero que j'ai compris ta mehode
maintenant d'addition je fait une addition regarde reste uniquement sur 4 bits 0,1,2,3 avec par exemple bit0=1, bit1=1, bit2=0 et bit3=1 si je des and successif allez:
00000001
00000010
00000000
00000100
cela nous bien 1011 j'ai mon addition sinon prend la calculette
le fameux 1er octet est obtenu comme cela:
le bit0 est obtenu en faisant: valeur donnée matrice[0] & 0b00000001 et tu mets cela dans tableau0
le bit1 est obtenu en faisant:valeur donnée matrice[1] et 0b00000010 et tu mets dans tableau1
le bit2 est obtenu en faisant:valeur donnée matrice[é] et 0b00000100 et tu mets dans tableau2
le bit1 est obtenu en faisant:valeur donnée matrice[1] et 0b00001000 et tu mets dans tableau3
etc
le pire c'est regardant ton bit zero que j'ai compris ta mehode
maintenant d'addition je fait une addition regarde reste uniquement sur 4 bits 0,1,2,3 avec par exemple bit0=1, bit1=1, bit2=0 et bit3=1 si je des and successif allez:
00000001
00000010
00000000
00000100
cela nous bien 1011 j'ai mon addition sinon prend la calculette
Fonctionnement des "FONT" sur écran OLED
oups je termine et vais me coucher
c'est de l'ecriture binaire et non hexa si passe pas ramène cela en hexa dans l'explication je suis bien en écriture binaire
je suis desole
Code : Tout sélectionner
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) ;
c'est de l'ecriture binaire et non hexa si passe pas ramène cela en hexa dans l'explication je suis bien en écriture binaire
je suis desole
Fonctionnement des "FONT" sur écran OLED
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
toujours pas même après modifs , l’écran noir !
T ues sûr de tableau_0[i] = ( font16x8[352+i] & 0b10000000) ; , car pour la valeur n'est pas un "1" ou un "0" ! donc ca fonctionne pas ?
T ues sûr de tableau_0[i] = ( font16x8[352+i] & 0b10000000) ; , car pour la valeur n'est pas un "1" ou un "0" ! donc ca fonctionne pas ?
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
normal pour l'addition il faut faire un ou | et non un & un petit som de 15 mn et hop ca repart quoi....
allez stop bonne nuit
A+
Code : Tout sélectionner
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);
allez stop bonne nuit
A+
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 64 invités