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 ---
On parle des Pics, sans rapport avec le langage ou la programmation

Modérateur : Jérémy

Montre analogique GC9A01
Temps-x
Avatar de l’utilisateur
Maître
Maître
Messages : 3000
Enregistré en : juillet 2016
Localisation : Terre

#101 Message par Temps-x » dim. 19 avr. 2026 11:12

Bonjour tout le monde,

venom a écrit :Source du message Non quand Temps-X parle de graphique il parle du fond de l'horloge

:+1: Tout ta fait ici on ne parle pas de bimap, un graphique doit au moins comporté plus de 20 couleurs, et ocupper au moins 50% de l'écran, sinon ça serait trop facile.

Le bimap, et facile à lire, c'est pour cela qu'on en parle avec paulfjujo, mais il existe d'autres formats comme *.jpg, *.png, *.pcx, *.tif, *.gif, *.rle, *.web...... et bien d'autres, mais il faut savoir les lire, ou décompresser, c'est une autre paire de manches, on fait ce qu'on veut sur les formats d'images, il n'y a aucune restriction.

F6FCO a écrit :Source du message afficher du bitmap pour simuler le déplacement des aiguilles c'est la solution de facilité,


Tout au contraire.... c'est bien plus compliqué, et de plus faut tout faire rentrée dans le pic, c'est quasiment impossible, 60 position pour chaque aiguille, total 180 position, sans compté qu'il faut redessiner par dessus, ce qui implique d'avoir 180 repéres dans le graphique principal
(un vrai casse tête d'utiliser cette méthode)

Pour faire tourner les aiguilles tout le monde peut faire ce qu'il veut, Calcul, Algorithme de tracé de segment de Bresenham, bref on fait ce qu'on veut, il y a aucune restriction.

Le calcul n'est pas nécessaire pour cette montre, avec l'algorithme de tracé de segment de Bresenham, il faut juste un tableau pour avoir les positions des secondes (60 aux totals)

Mais je ne vais pas partir sur cette façon de faire, j'ai une autre idée.

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Montre analogique GC9A01
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 2899
Âge : 100
Enregistré en : décembre 2017
Localisation : Banlieue sud de Klyntar
Contact :

#102 Message par F6FCO » dim. 19 avr. 2026 13:57

Courage Temps-X, tu vas y arriver. :-D
Une porte nand prend 2 bits en entrée... :eek:

Montre analogique GC9A01
Temps-x
Avatar de l’utilisateur
Maître
Maître
Messages : 3000
Enregistré en : juillet 2016
Localisation : Terre

#103 Message par Temps-x » dim. 19 avr. 2026 15:50

F6FCO a écrit :Source du message Courage Temps-X, tu vas y arriver. :-D


Ne t'inquiéte pas pour moi, je vais y arrivé avec un grand et vrai graphique avec plus de 256 couleurs :lol:

Je qui me manque c'est du temps, et je ne peux malheuresement pas passer du temps dessus, 1 heure ou 2 par semaine.

:roll: Bon on attend ton grand graphique en fond d'écran, avec plus de 16 couleurs :sifflotte: avec schéma et fichier *;hex 8-)

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Montre analogique GC9A01
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3325
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#104 Message par paulfjujo » dim. 19 avr. 2026 18:24

bonsoir,


gwion a écrit :J'ai tendance à dire que puisqu'on ne peut pas lire la mémoire de l'écran, il faut le faire sur le bitmap. C'est là qu'il faut les fonctions de rusé renard :)


Tout à fée ... ça se complique nettement par rapport à un fond unique ..
et l'usage de la table bitmap de 57600 bytes contenant mon image BMP Tom & Jerry en 256 couleurs ( avec Palette !)
sert donc de mémoire ecran
J'utilise 3 structures de buffer , 1 par aiguille pour stocker lex X,Y,couleur, juste avant d'ecrire le dessin de l'aiguille
pour pouvoir remettre apres coup ,950mS plus tard l'arriere plans de l'image
pour l'instant mon test porte uniquement sur la troteuse..mais celle ci se deplace bien sans perturber l'arriere plan..
Il n'y a pas de BMP annexes ..c'est uniquement par calcul

j'affiche au depart mon image BMP
puis Tracé du pourtour graduations et chiffres des heures
nota: dans la mesure ou la longueur des aiguille ne deborde pas sur le pourtour,
je pourrai me passer de le recalculer/dessiner à chaque tour
lecture RTC pour syncrhoniser l'affichage sur changement de seconde
Tracé des aiguilles ( pour l'instant seule la 1ere : Troteuse)
delay de 950mS
Restitution de l'affichage des pixels sous la troteuse
Attente synchro nouvelle seconde*
et en boucle*

ma fonction d'affichage aiguille
Draw_Aiguille assume la sauvegarde du fond d'ecran, avant d'afficher l'aiguille
Restitue_Fond_BMP remet les couleurs BMP en bonne place .

..il faut au moins un 18Fx7k42 pour gerer ça ..actuellement utilisation de 70% de code et 63% de RAM
...reste à inclure minute et heure

Code : Tout sélectionner




#define Long_Troteuse 95
#define Long_Minute 82
#define Long_Heure 76

typedef struct {
    uint8_t x[Long_Troteuse];
    uint8_t y[Long_Minute];
    uint16_t bg[Long_Heure];
}
 Arriere_Plan;

Arriere_Plan SBack;
Arriere_Plan MBack;
Arriere_Plan HBack;
uint8_t Choix=1;
uint8_t n1;



void Draw_Clock_Face(void) {
    int cc;
    int i = 0;

    // Tracé des 60 reperes secondes par 2 pixels 
    for (= 0; i < 360; i = i + 6) {
        sx = Table_SinCos[i][0];
        sy = Table_SinCos[i][1],
                xx0 = sx * (Long_Troteuse + 14) + 119;
        yy0 = sy * (Long_Troteuse + 14) + 119;
        // Draw minute markers
        PutPixel(xx0, yy0, _Blanc);
        xx0 = sx * (Long_Troteuse + 13) + 119;
        yy0 = sy * (Long_Troteuse + 13) + 119;
        // Draw minute markers
        PutPixel(xx0, yy0, _Blanc);
    }
    for (= 0; i < 360; i = i + 30) {
        sx = Table_SinCos[i][0];
        sy = Table_SinCos[i][1];
        xx0 = sx * (Long_Troteuse + 1) + 119; // was 114 + 119;
        yy0 = sy * (Long_Troteuse + 1) + 119;
        xx1 = sx * 119 + 119;
        yy1 = sy * 119 + 119;
        Draw_Line(xx0, yy0, xx1, yy1, _Vert);
    }
    DrawChar(108, 8, '1', _Blanc);
    DrawChar(124, 8, '2', _Blanc);
    DrawChar(115, 214, '6', _Blanc);
    DrawChar(2, 108, '9', _Blanc);
    DrawChar(224, 108, '3', _Blanc);
        

        
// mise à jour des variables  
        xz = Sec * 6;
        sdeg = xz;
        mdeg = Minut * 6;
        hdeg = Hour > 12 ? (Hour - 12)*30 : Hour * 30;
        hdeg = hdeg + (Minut / 4);
        // calcul des angles de chaque vecteur
        hx = Table_SinCos[hdeg][0]; // sinus
        hy = Table_SinCos[hdeg][1]; // cosinus
        mx = Table_SinCos[mdeg][0];
        my = Table_SinCos[mdeg][1];
        sx = Table_SinCos[sdeg][0];
        sy = Table_SinCos[sdeg][1],
       // position finale des vecteurs Heure,minute,seconde
         //longueur des aiguilles HH-> 62 MN->84  Sec->90
        ohx = hx * Long_Heure + 119;
        ohy = hy * Long_Heure + 119;
        omx = mx * Long_Minute + 119;
        omy = my * Long_Minute + 119;
        osx = sx * Long_Troteuse + 119;
        osy = sy * Long_Troteuse + 119;
     
     
// Tracé des 3 aiguilles  
        //aiguille des heurs triangulaire  
        //Draw_Line(ohx, ohy, 117, 117, _Cyan);// heur
        // Draw_Line(ohx, ohy, 118, 118, _Cyan);
        // Draw_Line(ohx, ohy, 119, 119, _Cyan);
        // Draw_Line(ohx, ohy, 120, 120, _Cyan);   
        // Draw_Line(ohx, ohy, 121, 121, _Cyan);  
        // Draw_Line(omx, omy, 119, 119, _Jaune);
        //Draw_Line(osx, osy, 119, 119, _Rouge);
           
        Choix 
=1;
        Draw_Aiguille(osx, osy, 119, 119,1); // 1 => chois seconde et couleur rouge
        __delay_ms(950);  // pour etre bien visible avant d'etre remplacée par le fond BMP
        Restitue_Fond_BMP(1);
        FillCircle(119, 119, 4, _Rouge);
  
}


void Restitue_Fond_BMP(int Aiguille)
{
  uint8_t x,y,ch,cl;
   uint16_t Index_Co=0;
 //  int16_t n1;
  switch (Aiguille) 
  
{
    case 1:       n1=Long_Troteuse; break;
    case 2:       n1=Long_Minute; break;
    case 3:       n1=Long_Heure; break;
      
  
}        
  for 
(i=0; i<n1; i++)
   {
    switch (Aiguille) 
       
{
       case 1:
               x=SBack.x[i];
               y=SBack.y[i]; 
               Index_Co
=SBack.bg[i];         
               break
;
        case 2:
                x=MBack.x[i];
                y=MBack.y[i]; 
                Index_Co
=MBack.bg[i];         
                break
;
        case 3:
                x=HBack.x[i];
                y=HBack.y[i]; 
                Index_Co
=HBack.bg[i];         
                break
;
        default:
                CPrint("Problemo\r\n");
        }
  if(  (> _maxX) || (> _maxY)) return;
  // set adress pixel window
  SendCmd(0x2A); //6.2.11. Column Address Set (2Ah)
  SendData(x>>8);SendData(& 0x00FF);//Sp
  SendData(x>>8);SendData(& 0x00FF);//Ec
 SendCmd(0x2B); //6.2.12. Row Address Set (2Bh)
  SendData(y>>8);SendData(& 0x00FF);//Sp
  SendData(y>>8);SendData(& 0x00FF);//Ec
  SendCmd(0x2C);
  ch=Index_Co>>8;
  cl=Index_Co& 0x00FF;
  SendData(ch);
  SendData(cl);
   }           
} 
  




Troteuse_Tom_et_Jerry.jpg


.. à suivre
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par paulfjujo le dim. 19 avr. 2026 19:23, modifié 1 fois.
Aide toi, le ciel ou FantasPic t'aidera

Montre analogique GC9A01
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3325
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#105 Message par paulfjujo » dim. 19 avr. 2026 18:44

Temps-x a écrit :Le calcul n'est pas nécessaire pour cette montre, avec l'algorithme de tracé de segment de Bresenham, il faut juste un tableau pour avoir les positions des secondes (60 aux totals)


OUI, pour un fond unique de couleur ...
MAIS
le depart et l'arrivée ne suffisent pas , car sous l'aiguille on peut avoir autant de couleurs que de pixels (du BMP) !
il faut conserver l'association x,y,couleur
Aide toi, le ciel ou FantasPic t'aidera

Montre analogique GC9A01
Temps-x
Avatar de l’utilisateur
Maître
Maître
Messages : 3000
Enregistré en : juillet 2016
Localisation : Terre

#106 Message par Temps-x » dim. 19 avr. 2026 20:08

paulfjujo a écrit :Source du message le depart et l'arrivée ne suffisent pas , car sous l'aiguille on peut avoir autant de couleurs que de pixels (du BMP) !
il faut conserver l'association x,y,couleur


Donc il faut les sauvegarder

paulfjujo a écrit :Source du message à suivre

:+1: Ah que oui, je vais suivre, tu te rapproches de très près de ce qui est demandé, je n'en suis pas là pour l'instant, mais je vous réserve une surprise 8-)

C'est un graphique comme celui-là que je voulais, car j'aime bien ce qui est marrant, et je trouve ça sympa. :wink:

Mais bon c'est pas moi qui jugerais, :sifflotte: c'est Jérémy, et les modérateurs (Gérard :lol: ) pourront décider du vainqueur.

:roll: J'ai essayé de soudoyer Gérard mais il est impartial.....

==> A+
Modifié en dernier par Temps-x le dim. 19 avr. 2026 21:23, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Montre analogique GC9A01
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3325
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#107 Message par paulfjujo » dim. 19 avr. 2026 20:43

au stade actuelle je dispose de 980mS de temps MCU ...
et 33Ko dispo pour du code
MAIS ...
j'entrevois une autre problematique :

le chevauchement des 3 aiguilles !
l'arrirere plan etant une combinaison de 1 à 3 aiguilles ET du BMP si elles se chevauchent !
... du XOR dans l'air
oops je vais ouvrir une cagnote de neurones !
Aide toi, le ciel ou FantasPic t'aidera

Montre analogique GC9A01
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 2899
Âge : 100
Enregistré en : décembre 2017
Localisation : Banlieue sud de Klyntar
Contact :

#108 Message par F6FCO » dim. 19 avr. 2026 22:30

Temps-x a écrit : Bon on attend ton grand graphique en fond d'écran, avec plus de 16 couleurs :sifflotte: avec schéma et fichier *;hex 8-)

Tu vas attendre longtemps :lol: , je crois que j'ai été assez clair la dessus, je ne perdrai pas de temps à manipuler des bitmaps parce que çà ne me passionne pas et que je pense que c'est la mauvaise solution pour simuler une montre.

Le fichier .hex on a jusqu'au 1.1.27 pour le poster, ma montre n'est pas terminée.
Une porte nand prend 2 bits en entrée... :eek:


Retourner vers « Généralités sur les PICs »

Qui est en ligne

Utilisateurs parcourant ce forum : F6FCO et 4 invités