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
Montre analogique GC9A01
Bonjour tout le monde,
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.
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+
venom a écrit :Source du message Non quand Temps-X parle de graphique il parle du fond de l'horloge
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.
Montre analogique GC9A01
Montre analogique GC9A01
F6FCO a écrit :Source du message Courage Temps-X, tu vas y arriver.
Ne t'inquiéte pas pour moi, je vais y arrivé avec un grand et vrai graphique avec plus de 256 couleurs
Je qui me manque c'est du temps, et je ne peux malheuresement pas passer du temps dessus, 1 heure ou 2 par semaine.
Montre analogique GC9A01
- paulfjujo

Maître- Messages : 3325
- Âge : 75
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir,
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
.. à suivre
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 (i = 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 (i = 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( (x > _maxX) || (y > _maxY)) return;
// set adress pixel window
SendCmd(0x2A); //6.2.11. Column Address Set (2Ah)
SendData(x>>8);SendData(x & 0x00FF);//Sp
SendData(x>>8);SendData(x & 0x00FF);//Ec
SendCmd(0x2B); //6.2.12. Row Address Set (2Bh)
SendData(y>>8);SendData(y & 0x00FF);//Sp
SendData(y>>8);SendData(y & 0x00FF);//Ec
SendCmd(0x2C);
ch=Index_Co>>8;
cl=Index_Co& 0x00FF;
SendData(ch);
SendData(cl);
}
}
.. à 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.
Montre analogique GC9A01
- paulfjujo

Maître- Messages : 3325
- Âge : 75
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
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
Montre analogique GC9A01
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
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 C'est un graphique comme celui-là que je voulais, car j'aime bien ce qui est marrant, et je trouve ça sympa.
Mais bon c'est pas moi qui jugerais,
Modifié en dernier par Temps-x le dim. 19 avr. 2026 21:23, modifié 1 fois.
Montre analogique GC9A01
- paulfjujo

Maître- Messages : 3325
- Âge : 75
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
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
je vais ouvrir une cagnote de neurones !
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
je vais ouvrir une cagnote de neurones !Montre analogique GC9A01
- F6FCO

Expert- Messages : 2899
- Âge : 100
- Enregistré en : décembre 2017
- Localisation : Banlieue sud de Klyntar
- Contact :
Temps-x a écrit : Bon on attend ton grand graphique en fond d'écran, avec plus de 16 couleursavec schéma et fichier *;hex
![]()
Tu vas attendre longtemps
Le fichier .hex on a jusqu'au 1.1.27 pour le poster, ma montre n'est pas terminée.
Retourner vers « Généralités sur les PICs »
Qui est en ligne
Utilisateurs parcourant ce forum : F6FCO et 4 invités
