IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Embarqué Discussion :

Programmation d'un processeur avec son afficheur


Sujet :

Embarqué

  1. #21
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    août 2008
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2008
    Messages : 348
    Points : 50
    Points
    50
    Par défaut
    comment ça ? je suis obliger de garder ces dimensions, je dois en faire tenir 4 jauges sur mon afficheur.

  2. #22
    Membre confirmé
    Femme Profil pro
    ..
    Inscrit en
    décembre 2019
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 91
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : décembre 2019
    Messages : 204
    Points : 459
    Points
    459
    Par défaut
    4 batteries de 26x52, ça passe non ?

  3. #23
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    août 2008
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2008
    Messages : 348
    Points : 50
    Points
    50
    Par défaut
    je suis restreint par la techno de mon afficheur, l'écriture des chiffres représentatif du soc traité différemment des graphiques, est plaçable sur 8 lignes de l'afficheur et là ils sont au plus haut.
    De plus, l'ouverture ou est placer mon LCD limite légèrement les bords.

    Pour le moment, j'essai surtout de remplir ... à la rigueur les bords des jauges c'est pas trop grave.

  4. #24
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    août 2008
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2008
    Messages : 348
    Points : 50
    Points
    50
    Par défaut
    en corrigeant :désolé pour les indentations, il semblerait qu'ils ce modifie quand je colle mon code ...


    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    void niveaux(uint8_t niveau_bat,unsigned char *tab_gauge)
    {
     
    //uint8_t nbr_data;//=niveau_bat/2;  //valeur du soc compris entre 0 et 50 
    uint8_t i,k,l;
    uint8_t size=133,size_temp;
     
    //temp=21;
    for(l=2 ; l>size ; l++) {tab_gauge[l]=Image_batterie_vide[l];}
    //i=k=l=0;
    size_temp=size;
     
    //tab_gauge[0]=22;
    //tab_gauge[1]=48;
     
    //nbr_data = niveau_bat;  //rendre en proportion du tableau 
     
    		for(k=0; k < 6 ; k++)
    		{
     
                   for(l=0;l<8; l++)
                   {
     
                            for(i=0; i<22 ; i++) // par ligne de 22 
                            {
     
                            size_temp=size_temp-i; 
    						tab_gauge[size_temp]=(tab_gauge[size_temp]>>1) | 0x80 ; 
                            //tab_gauge[size_temp]=(tab_gauge[size_temp] >>1) | 0x80 ;
                            //nbr_data--; 
                            //if(nbr_data==0) {l=8; k=6;i=23;} 
     
                            }
     
                    size=size+21;
                    //nbr_data--;
                    //if(nbr_data==0) {l=8; k=6;}       
                    }    
     
    		size=size-22;
    		}
     
    tab_gauge[0]=22;
    tab_gauge[1]=48;
    }

    Nom : 20210111_112240.jpg
Affichages : 39
Taille : 926,6 Ko

  5. #25
    Membre confirmé
    Femme Profil pro
    ..
    Inscrit en
    décembre 2019
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 91
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : décembre 2019
    Messages : 204
    Points : 459
    Points
    459
    Par défaut
    et 26x48 ?

  6. #26
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    août 2008
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2008
    Messages : 348
    Points : 50
    Points
    50
    Par défaut
    Merci mais qu'est-ce que ça changerai au code, ça le simplifierai grandement ?...

  7. #27
    Membre confirmé
    Femme Profil pro
    ..
    Inscrit en
    décembre 2019
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 91
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : décembre 2019
    Messages : 204
    Points : 459
    Points
    459
    Par défaut
    Oui. Peut-être.

  8. #28
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    août 2008
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2008
    Messages : 348
    Points : 50
    Points
    50
    Par défaut
    et comment verrais tu ça, par ce que là moi je suis pommer ... je tatonne et pourtant je pensais avoir trouvé la solution ce matin au réveille
    avec ça : tab_gauge[size_temp]=(tab_gauge[size_temp]>>1) | 0x80 ;

  9. #29
    Membre confirmé
    Femme Profil pro
    ..
    Inscrit en
    décembre 2019
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 91
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : décembre 2019
    Messages : 204
    Points : 459
    Points
    459
    Par défaut
    Dessine tes batteries vides (ou une), on verra pour le code ensuite.

  10. #30
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    août 2008
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2008
    Messages : 348
    Points : 50
    Points
    50
    Par défaut
    leurs tableau en 26/48

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    unsigned char Image_batterie_vide2648[158] =
    {
       26, 48,
      255,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,255,
      255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,
      255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,
      255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,
      255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,
      255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255
    };

  11. #31
    Membre confirmé
    Femme Profil pro
    ..
    Inscrit en
    décembre 2019
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 91
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : décembre 2019
    Messages : 204
    Points : 459
    Points
    459
    Par défaut
    Il faut montrer ce que ça donne sur l'afficheur, avec le code associé.

  12. #32
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    août 2008
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2008
    Messages : 348
    Points : 50
    Points
    50
    Par défaut
    Oups autant pour moi

    Nom : 20210111_122513.jpg
Affichages : 38
Taille : 958,9 Ko

    le code associé ? le tableau c'est celui envoyé au précédent poste sinon le reste n'a pas changé, enfin malgré mais nombreuses modifs à chaque essai pour

  13. #33
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    août 2008
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2008
    Messages : 348
    Points : 50
    Points
    50
    Par défaut
    J'ai donc la même chose qu'en post24 mais en plus large
    Le code :

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    void niveaux(uint8_t niveau_bat,unsigned char *tab_gauge)
    {
     
    //uint8_t nbr_data;//=niveau_bat/2;  //valeur du soc compris entre 0 et 50 
    uint8_t i,k,l;
    uint8_t size=156,size_temp;
     
    //temp=21;
    //for(l=2 ; l>size ; l++) {tab_gauge[l]=Image_batterie_vide[l];}
    for(l=2 ; l>size ; l++) {tab_gauge[l]=Image_batterie_vide2648[l];}
    //i=k=l=0;
    size_temp=size;
     
    //tab_gauge[0]=22;
    //tab_gauge[1]=48;
     
    //nbr_data = niveau_bat;  //rendre en proportion du tableau 
     
    		for(k=0; k < 6 ; k++)
    		{
            //ligne=size_temp-k;    
           // tab_gauge[size_temp]=(tab_gauge[size_temp]>>1) | 0x80 ;   
     
                   for(l=0;l<8; l++)
                   {
     
                            for(i=0; i<22 ; i++) // par ligne de 22 
                            {
     
                            size_temp=size_temp-i; 
                            //tab_gauge[size_temp]=tab_gauge[size_temp];
    						tab_gauge[size_temp]=(tab_gauge[size_temp]>>1) | 0x80 ; 
                            //tab_gauge[size_temp]=(tab_gauge[size_temp] >>1) | 0x80 ;
                            //nbr_data--; 
                            //if(nbr_data==0) {l=8; k=6;i=23;} 
     
                            }
     
                    size=size+21;
                    //nbr_data--;
                    //if(nbr_data==0) {l=8; k=6;}       
                    }    
     
    		size=size-22;
    		}
     
    tab_gauge[0]=22;
    tab_gauge[1]=48;
    }

  14. #34
    Membre confirmé
    Femme Profil pro
    ..
    Inscrit en
    décembre 2019
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 91
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : décembre 2019
    Messages : 204
    Points : 459
    Points
    459
    Par défaut
    Ok. Remplis donc la partie intérieur de ta batterie (depuis le point supérieur gauche) avec le tableau qui suit, et tel quel, pour voir ce que ça donne sur ton afficheur :
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned char image_niveau_batterie[140]= {24, 46, 255, 255, 255, 255, 255, 255, 0};

  15. #35
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    août 2008
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2008
    Messages : 348
    Points : 50
    Points
    50
    Par défaut
    si j'ai bien compris, c'est d'afficher ce tableau

    unsigned char image_niveau_batterie[140]= {24, 46, 255, 255, 255, 255, 255, 255, 0};

    Nom : 20210111_174436.jpg
Affichages : 26
Taille : 860,7 Ko

  16. #36
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    mai 2013
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : mai 2013
    Messages : 346
    Points : 1 211
    Points
    1 211
    Par défaut Verticales
    Bonjour David,

    Peut être pourrais tu tester le code que je t'ai envoyé ? Manifestement tes verticales dépendent du n° de la verticale (hors bords de 1 à 20) ce qui n'est pas logique.

    Je te conseille de dessiner ta batterie avec les divers octets, tu y verras beaucoup plus clair. Le début du tableau (hormis les deux premiers octets) représente le bas ou le haut de la batterie ?

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  17. #37
    Membre confirmé
    Femme Profil pro
    ..
    Inscrit en
    décembre 2019
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 91
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : décembre 2019
    Messages : 204
    Points : 459
    Points
    459
    Par défaut
    Il y a peut-être un problème d'orientation là. Je m'attendais à 2 lignes horizontales.
    Et si tu intervertis, permutes 24 et 46, ça donne quoi ?
    unsigned char image_niveau_batterie[140]= {46, 24, 255, 255, 255, 255, 255, 255, 0};
    Sinon qu'est-ce tu utilises comme bibliothèque pour ton écran, et quelle est la référence de ce dernier ?

  18. #38
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    août 2008
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2008
    Messages : 348
    Points : 50
    Points
    50
    Par défaut
    Bonsoir,

    le LCD est celui-ci
    https://docs.rs-online.com/dc05/0900766b81384135.pdf

    en 128/64

    Ceci est le code pour afficher des graphiques que l'on peut généré à l'aide d'un outils sur le site du fabricant
    "ELECTRONIC ASSEMBLY LCD-Tools Portable"

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    void picture(uint16_t column,uint16_t page, const uint8_t *pic_adress)  
    {
    	uint8_t c,p;
    	unsigned int byte_cnt = 2;
    	uint8_t width, page_cnt;
     
    	width = pic_adress[0];
    	page_cnt =(pic_adress[1] + 7) / 8; //height in pages, add 7 and divide by 8 for getting the used pages (byte boundaries)
     
      //if(width + column > 128)	width = 128 - column; // ecran postion normal
      if(width + column > 132)	width = 132 - column;  // ecran inversé
      if(page_cnt + page > 8)page_cnt = 8 - page;
     
    	for(p=0; p<page_cnt; p++)
    	{
    		position(column, page + p);
     
     
    		for(c=0; c<width; c++) // écran normal
                send_data(pic_adress[byte_cnt++]);
    	}
    }

    les pixels sont adressé par ligne de 8bits ou pixels, à raison de 8 lignes de 8pixels.

    Ceci est le controleur : https://www.tme.eu/Document/f1dcdeee...ARDDOG7565.pdf

    Merci

  19. #39
    Membre confirmé
    Femme Profil pro
    ..
    Inscrit en
    décembre 2019
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 91
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : décembre 2019
    Messages : 204
    Points : 459
    Points
    459
    Par défaut
    Un lien vers la bibliothèque complète, ce serait bien. Parce que là tu ne montres que la fonction picture(), et ce n'est pas suffisant.
    D'ailleurs, dans celle-ci, il semble y avoir une contradiction entre le code et les commentaires: lignes 10, 11 et 19.
    Quant à la documentation, elle "dit" que l'image doit être au format BLV, mais ne donne pas plus de détails à part renvoyer au programme que tu cites. On y trouve aussi une fonction rectangle(), elle est peut-être plus simple que picture(). Enfin essaye aussi le code de Guesset, s'il fonctionne alors ton problème est réglé.

  20. #40
    Membre du Club
    Homme Profil pro
    Electronicien
    Inscrit en
    août 2008
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2008
    Messages : 348
    Points : 50
    Points
    50
    Par défaut
    Désolé, j'ai pas mal d'éléments depuis, les outils sont là
    https://www.lcd-module.com/support/a...tion-note.html

    je vais essayer le code de guesset, juste que j'ai du mal à tout comprendre pour le remettre en forme pour mon compilateur.

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void DoImgLevel(uint8_t niveau_bat, uint8_t *tab_gauge)
       int ix, msk;
       uint8_t *pEmpty = pic_adress + 3;             // Premier octet intérieur 0:W, 1:H, 2:bord,...
       uint8_t *pGauge = tab_gauge  + 3;
       n = ???;
       if(n > 47) n = 47;                            // niveau de la batterie projeté entre 0 et 47
       int ndiv8 = n >> 3;                           // Niveau = combien d'octets pleins en vertical
       for (int y8 = 0; y8 < 6; ++y) {               // De 8 points en 8 points verticalement
          if (y < ndiv8) msk = 255 else if (y > ndiv8) msk = 0; else msk = (2 << (n & 7)) - 1;
          for (int ix = 20; ix; --ix, ++pGauge, ++pEmpty) 
             *pGauge = uint8_t(msk) | *pEmpty;
          pGauge += 2;                               // Sauter le bord droit puis le bord
          pEmpty += 2;                               // gauche de la ligne suivante.
       }

    pic_adress --> serait l'adresse du tableau gauge vide ? c'est bien ça
    tab_gauge --> serait l'adresse du tableau gauge à remplir ?
    n correspond à quoi ?
    for (int ix = 20; ix; --ix, ++pGauge, ++pEmpty) là il y a plus que 3 arguments dans le for, dans lequel on a

    --ix c'est pas comme ça plutôt ix-- pour décrémenter ? tout comme les autres

    merci pour votre aide, mes délai diminue dangereusement en plus de problème hardware que je traverse et me dis qu'en attendant de faire mieux plus tard je ferais bien 10 tableaux de niveaux différent avec lesquels je ferais des comparaisons pour remplir ma jauge (: je sais c'est pas classe mais temporaire.

Discussions similaires

  1. [JSmooth] Bien intégrer la JRE avec son programme
    Par Ceubex dans le forum EDI et Outils pour Java
    Réponses: 0
    Dernier message: 31/03/2012, 00h01
  2. Liste des fichiers ouverts avec son programme
    Par z4k4r14 dans le forum Langage
    Réponses: 3
    Dernier message: 27/02/2012, 15h41
  3. Utiliser 2 processeurs avec un programme en C
    Par frogway dans le forum C
    Réponses: 4
    Dernier message: 04/04/2009, 20h05
  4. Réponses: 1
    Dernier message: 23/07/2007, 12h00
  5. Ouvrir un fichier avec son programme
    Par aliwassem dans le forum Delphi
    Réponses: 1
    Dernier message: 21/10/2006, 22h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo