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 le langage C !

Modérateur : Jérémy

Fonctionnement des "FONT" sur écran OLED
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#41 Message par Guest » lun. 16 mai 2016 20:43

change de méthode, méthode Jeremy

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 :wink:

fait encore des modifs :furieux:
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
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#42 Message par Jérémy » lun. 16 mai 2016 20:50

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 !

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ï !!!
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Fonctionnement des "FONT" sur écran OLED
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#43 Message par Guest » lun. 16 mai 2016 20:52

avant dit si tu comprends mes modification sur ton code ? car oui c'est a cela que je pensait :lol: pas mal aussi ta méthode j'aime bien
Modifié en dernier par Anonymous le lun. 16 mai 2016 20:55, modifié 1 fois.

Fonctionnement des "FONT" sur écran OLED
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#44 Message par Jérémy » lun. 16 mai 2016 20:54

Il y a des erreurs de syntaxe d’après le compilo ?

Je penche pour un problème de parenthèses

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]) );
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Fonctionnement des "FONT" sur écran OLED
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#45 Message par Guest » lun. 16 mai 2016 20:56

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
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#46 Message par Jérémy » lun. 16 mai 2016 20:58

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_0valeur_1valeur_2valeur_3valeur_4valeur_5valeur_6valeur_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);
 } 
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Fonctionnement des "FONT" sur écran OLED
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#47 Message par Guest » lun. 16 mai 2016 21:13

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 :lol:

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 :lol:

Fonctionnement des "FONT" sur écran OLED
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#48 Message par Guest » lun. 16 mai 2016 21:19

oups je termine et vais me coucher

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 :furieux:

Fonctionnement des "FONT" sur écran OLED
Jérémy
Administrateur du site
Administrateur du site
Messages : 2723
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#49 Message par Jérémy » lun. 16 mai 2016 21:30

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 ?


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);
 }
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Fonctionnement des "FONT" sur écran OLED
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#50 Message par Guest » lun. 16 mai 2016 21:50

normal pour l'addition il faut faire un ou | et non un & un petit som de 15 mn et hop ca repart quoi....

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+


Retourner vers « Langage C »

Qui est en ligne

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