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

Montre analogique GC9A01

On parle des Pics, sans rapport avec le langage ou la programmation

Modérateur : Jérémy

Avatar de l’utilisateur
paulfjujo
Maître
Maître
Messages : 3309
Enregistré en : juillet 2015
Localisation : 01800
Contact :

Montre analogique GC9A01

Messagepar paulfjujo » lun. 30 mars 2026 11:22

L'aiguille des minutes avance de 60pas pour 1 minute ....


L'aiguille des minutes avance de 1 pas pour 60 pas de secondes !


on a 60 pas pour les secondes table de 60 couples Sin ,Cos en flottant 60x8=480bytes
si on veut avoir un mouvement plus souple pour les minutes, il faudrait augmenter le nombre de pas
exemple 4 pas intermediares on a alors une table de positions x4 => 1920 bytes au lieu de 480

Ladite table pouvant servir aussi pour l'aiguille des heures ..

La resolution graphique limite forcement le detail d'un pas ...
on pourrait meme garder le meme pas pour les minutes et heure ... synchro au pas de la seconde ..AU MOMENT importun bien sur ..
min..module 60sec, heure ...modulo 3600
avec seulement 1 seule table de 60 couple Sin,Cos

suivant la longueur d'aiguille on pourrait prevoir une table precalculée pour
les 60 position x1,y1 finale aiguille secondes X0 et Y0 etant au centre à 119,119
idem pour Minute et heure (aiguilles plus courtes)
3 tables de 60x2 =120 bytes seulement pour definir les positions finales de 3 vecteurs
1 table pour stocker les anciennes positions des 3 aiguilles, pour pouvoir les effacer (avec fond NOIR!)
1 table pour dessiner les positions en cours des 3 aiguilles
ceci pour une representation simpliste des aiguilles : vecteur lineaire

L'arriere plan etant sur FOND NOIR ou couleur unie*
avec dessin des graduation et chiffre sur le pourour
longueur des aiguilles < 110 pour ne pas passer sur les chiffres


une image de fond ... sur 8bits qui n'occuperait de 57600bytes de flash ?
MAIS i le GC9A01 ne peut pas le faire ?

In 3-line serial interface, different display data format is available for two color depths supported by the LCM
listed below.
-4k colors, RGB 4, 4, 4 -bits input.
-65k colors, RGB 5, 6, 5 -bits input
-262k colors, RGB 6, 6, 6 -bits input














on doit sauvegarder dans 1 buffer la position des 3 aiguilles ..pour pouvoir les effacer
et un autre buffer pour afficher les 3 nouvelles positions

suivant la forme , dessin des aiguilles la taille maxi du/des buffer sera à optimiser.
Aide toi, le ciel ou FantasPic t'aidera

Avatar de l’utilisateur
Gérard
Expert
Expert
Messages : 1960
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

Montre analogique GC9A01

Messagepar Gérard » lun. 30 mars 2026 17:58

Montre de GG.pdf
Elle vous plait ma montre?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Avatar de l’utilisateur
venom
Expert
Expert
Messages : 1701
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

Montre analogique GC9A01

Messagepar venom » mer. 1 avr. 2026 12:24

Gérard a écrit :Montre de GG.pdfElle vous plait ma montre?


Wouah bravo Gérard. En plus elle est sur bracelet 8-)
Tu gagne haut la main le concours







@++
Mon site web
Mon discord : venom#4888

Avatar de l’utilisateur
F6FCO
Expert
Expert
Messages : 2883
Enregistré en : décembre 2017
Localisation : Banlieue sud de Klyntar
Contact :

Montre analogique GC9A01

Messagepar F6FCO » mer. 1 avr. 2026 15:10

Concours terminé à cause de Gérard :-D
Une porte nand prend 2 bits en entrée... :eek:

Avatar de l’utilisateur
Gérard
Expert
Expert
Messages : 1960
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

Montre analogique GC9A01

Messagepar Gérard » jeu. 2 avr. 2026 20:24

Ce n'est ni de l'asm, ni du Basic ni du C.

C'est du Mandarin... :lol: :lol: :lol:
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Avatar de l’utilisateur
paulfjujo
Maître
Maître
Messages : 3309
Enregistré en : juillet 2015
Localisation : 01800
Contact :

Montre analogique GC9A01

Messagepar paulfjujo » jeu. 2 avr. 2026 20:41

bonsoir,

ça tourne

Horlog_Analog_test_2026-0402.jpg


avec compilation, pour la video
#define A_Fond
ICI

à suivre :
deboires recontérs .. explications ....
et software XC8 18F47K42
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Jérémy
Administrateur du site
Administrateur du site
Messages : 2767
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

Montre analogique GC9A01

Messagepar Jérémy » jeu. 2 avr. 2026 22:45

:bravo:
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Avatar de l’utilisateur
venom
Expert
Expert
Messages : 1701
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

Montre analogique GC9A01

Messagepar venom » ven. 3 avr. 2026 06:18

Wouah bravo paulfjujo :eek: joli résultat :bravo:

J'ai reçu mon écran mardi mais pas moyen de programmer mon 18f26k22 avec pickit standalone pour mes premières tests :sad: :cry: je ne sais pas pourquoi. Le pic n'est pas détecté a chaque fois et quand bien même il est détecté, dès que je sélectionne le .hex pouf il n'est plus détecté :shock:
Pareil quand j'arrive a sélectionner le .hex + écrire dans le pic a a fin de l'écriture j'ai une erreur mémoire 0x000000 (de mémoire) donc je n'ai pas pu avancer malheureusement. :oops: et apres j'ai abandonné car mon pic n'était simplement pu jamais détecté.

J'ai essayé en alimentant le pic a part et via le pickit :sad: peut être qu'il y a des résistances ou autre a mettre ?








@++
Mon site web
Mon discord : venom#4888

Avatar de l’utilisateur
paulfjujo
Maître
Maître
Messages : 3309
Enregistré en : juillet 2015
Localisation : 01800
Contact :

Montre analogique GC9A01

Messagepar paulfjujo » ven. 3 avr. 2026 15:09

venom a écrit :....
J'ai essayé en alimentant le pic a part et via le pickit :sad: peut être qu'il y a des résistances ou autre a mettre ?


Utilises-tu l'appli "Pickitminus.exe" ?

il faut mettre une R de 10k de rappel sur la pin 1 MCLR
sinon pas besoinde R pull up sur les Pin data RB7 et Clock RB6
(attention au croisement RB6 et RB7 !)

Tes pin RB6 et RB7 sont-elles libres ? pas de pull-up,pull down ou autre ?

repere > sur pickit3
1 VPP --> sur Pin1 MCLR
2 VDD -> sur alim PIC18F
3 Gnd sur 0V du PIC
4 Datas sur RB7
5 Clock sur RB6
5 not used

ALIMENTATION :
pickit
Tools
soit tu alimentes ton PIC par une alim externe +3,8 à 5V (donc VDD=Valim)
Target VDD source -> Auto detect
soit le Pickit alimente le montage
soit source -> force Target ou PIC et tu regles la tension d'alim via le curseur VDD Pic

nota : sur mes 18F26K22 , certains sont recalcitrants et je suis obligé de baisser la tension d'alim à 3,8V
car à 5V ..problemo ..
mais mon Pickit3 en a déja vu de toutes les couleurs !
il reste neamoins opreationnel avec mes 18F27 ou 47K22

-----------------------------------------------------

je viens de modifie mon aiguille des heures .. 5 vecteurs au lieu d'un seul
pour une aiguille triangulaire !

Horloge_Analog_GC9A01_18F47K42_2026-0403.jpg



* avec l'entree RA1=0 mode Test troteuse
j'envoie via le clavier la commande ANG=000 ( .. à 359)
pour verifier le positionnement angulaire
*ATTENTION au positionnement du HAUT de l'ecran GC9A1 pouvant tourner de 0, 90 180,270°
determiné à l'init OLED
de ce fait ma table Sin cos va de -180 à +180° pour indice 0 -359
tables sin cos faites via excel .. *.csv -> puis *.h



ci dessosus la partie code pour animer les aiguilles
* Dans la boucle principale je relis la RTC Sec,Minut,Hour



Code : Tout sélectionner



void  Draw_Clock_Face
(void)
{
  int cc;
      int i=0;
      //  Ecran_Noir();    // probleme de flickering !
      
      
// Tracé des 60 reperes secondes
      for (= 0; i < 360; i=+ 6)
       {
       //2 points par seconde
        sx =Table_SinCos[i][0];
        sy =Table_SinCos[i][1],
        xx0 = sx * 104 + 119;
        yy0 = sy * 104 + 119;
         PutPixel(xx0, yy0, _Blanc);
        xx0 = sx * 105 + 119;
        yy0 = sy * 105 + 119;
        //Points Minutes
        PutPixel(xx0, yy0, _Blanc);
        // Repere des 4 quart de cadran
      //  if (i == 0 || i == 180) FillCircle(xx0, yy0, 4, _Blanc);
      //  if (i ==90 || i == 270) FillCircle(xx0, yy0, 4, _Blanc);
      }
      for ( i = 0; i < 360; i =i+30)
       {
        sx =Table_SinCos[i][0];
        sy =Table_SinCos[i][1];
       xx0 = sx * 115 + 119; // was 114 + 119;
       yy0 = sy * 115 + 119;
       xx1 = sx * 99 + 119;  // was 100,119
       yy1 = sy * 99 + 119;
       Draw_Line(xx0, yy0, xx1, yy1,_Vert);
      }
     // uint8_t  DrawChar(int x, int y, uint8_t  ch, uint16_t color)
      DrawCText(119,12,"12",_Blanc);
      DrawCText(119,224,"6", _Blanc);
      DrawChar(12, 119,'9', _Blanc);
      DrawChar(224,119,'3', _Blanc);
     //effacement des anciens vecteurs aiguilles
      if(Once>0)
      {
    if( Test_Position_Troteuse==0)   // via saisie ANG=000 a 359
      Draw_Line(osx, osy, 119, 119, _Noir); 
    else
    
{
     Draw_Line(osx, osy, 119, 119, _Noir);   //sec
     
     Draw_Line
(ohx, ohy, 120, 120, _Noir); // heur
     Draw_Line(ohx, ohy, 118, 118, _Noir);
     Draw_Line(ohx, ohy, 119, 119, _Noir);
     Draw_Line(ohx, ohy, 117, 117, _Noir);
     Draw_Line(ohx, ohy, 121, 121, _Noir);
     
     Draw_Line
(omx, omy, 119, 119, _Noir); // Minute
     FillCircle(119, 119, 4, _Noir);
      }    
}
  
if( Test_Position_Troteuse==0) //RA1 input
{  sdeg = Angle; 
    sx 
=Table_SinCos[sdeg][0];
    sy =Table_SinCos[sdeg][1],
    osx = sx * 90 + 119;
    osy = sy * 90 + 119;
    Draw_Line(osx, osy, 119, 119, _Blanc);
    Once=1;
    FillCircle(119, 119, 4, _Cyan);
}
else
{
  // mise à jour des variables  
      xz=Sec*6;
      sdeg = xz; 
      mdeg 
= Minut*; 
      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 * 62 + 119;
      ohy = hy * 62 + 119;
      omx = mx * 84 + 119;
      omy = my * 84 + 119;         
      osx 
= sx * 90 + 119;
      osy = sy * 90 + 119;
    // Tracé des 3 aiguilles  
    //aiguille des heures ...triangulaire  
    Draw_Line(ohx, ohy, 121, 121, _Cyan);
    Draw_Line(ohx, ohy, 120, 120, _Cyan);
    Draw_Line(ohx, ohy, 118, 118, _Cyan);
    Draw_Line(ohx, ohy, 122, 122, _Cyan);
    Draw_Line(ohx, ohy, 119, 119, _Cyan);
    
    Draw_Line
(omx, omy, 119, 119, _Jaune);
    Draw_Line(osx, osy, 119, 119, _Rouge);
    Once=1;
    FillCircle(119, 119, 4, _Rouge);   
 
}
}
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Avatar de l’utilisateur
venom
Expert
Expert
Messages : 1701
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

Montre analogique GC9A01

Messagepar venom » ven. 3 avr. 2026 16:16

paulfjujo a écrit :
venom a écrit :....
J'ai essayé en alimentant le pic a part et via le pickit :sad: peut être qu'il y a des résistances ou autre a mettre ?


Utilises-tu l'appli "Pickitminus.exe" ?

il faut mettre une R de 10k de rappel sur la pin 1 MCLR
sinon pas besoinde R pull up sur les Pin data RB7 et Clock RB6
(attention au croisement RB6 et RB7 !)

Tes pin RB6 et RB7 sont-elles libres ? pas de pull-up,pull down ou autre ?

repere > sur pickit3
1 VPP --> sur Pin1 MCLR
2 VDD -> sur alim PIC18F
3 Gnd sur 0V du PIC
4 Datas sur RB7
5 Clock sur RB6
5 not used

ALIMENTATION :
pickit
Tools
soit tu alimentes ton PIC par une alim externe +3,8 à 5V (donc VDD=Valim)
Target VDD source -> Auto detect
soit le Pickit alimente le montage
soit source -> force Target ou PIC et tu regles la tension d'alim via le curseur VDD Pic

nota : sur mes 18F26K22 , certains sont recalcitrants et je suis obligé de baisser la tension d'alim à 3,8V
car à 5V ..problemo ..
mais mon Pickit3 en a déja vu de toutes les couleurs !
il reste neamoins opreationnel avec mes 18F27 ou 47K22


J'ai bien mis une R de 10k sur le MCLR. Je vérifierai data et clock ! Mais je suis quasiment sûr.

Pour Pickitminus.exe je ne sais pas. J'ai installé pickit 3 programmer je ne pense pas que ça soit la même chose :?

Dommage je pars pour 3 semaines en plus :cry:
Vous conseillé une tension de combien ?
Et alim externe ou via le pickit ?

Ça me rassure si toi aussi paulfjujo tu galère :langue:

======================
J'aime bien tes nouvelles aiguilles ça fait propre 8-) :bravo:



@++
Mon site web
Mon discord : venom#4888


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

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité