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

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#21 Message par paulfjujo » jeu. 17 mars 2022 08:33 lien vers la Data-Sheet : Cliquez ici

bonjour Temps-X et à tous,


Dans tes precedentes version, tu mettais simplement le titre en entete ,
et ça m'allais bien , hormis le flag 0xFF qui etait au debut.
Dans les options tu as bien mis en evidence ,où on peut mettre les flags 0xFF
pour moi , en fin de titre et et fin de datas melodie..c'est OK
mais maintenant le rajout de tous ces espaces qui sont devant le titre
m'est inutile .
Pour exploiter le fichier avec le NCO1 ,je n'ai pas besoin d'afficher le titre sur un OLED ..
et de plus ,pas avec tous ces blancs (devant ).
J'affiche eventuelement le titre sur mon terminal .

:!!: tu parles de pixel et d'espace =0x20
Ton ecran Oled peut recevoir 255 caracteres sur sa largeur ?
:eek: il y a ici contradiction ou un probleme de terminologie !
un espace c'est un caractere qui a une certaine lageur ( en pixels)
je conviens bien qu'un caractere est constitué de pixel pour un ecran grafique
supposon une matrice de 5x7
255 pixel -> /6 ( 6 pour 5 pixel + 1 pixel intercaractere) => 42 catacteres maxi

bref, ça ne fait rien, je me debrouilerais avec...

Code : Tout sélectionner


char 
* Liste_Melodie[]= {Mission_Impossible,BOLERO,Smoke,PinkPanther,LaureletHardy,Alfred_Hitchcok,axelf,Something};
//0 unsigned char Mission_Impossible[178]    5sec  ou 20 sec
//1 unsigned char BOLERO[249]
//2 unsigned char Smoke[161]    //Smoke On The Troubled water
//3 unsigned char PinkPanther[143]
//4 unsigned char LaureletHardy[168]    8sec
//5 unsigned char Alfred_Hitchcok[395]   10 sec
//6 unsigned char axelf[122]  5 sec
//7 unsigned char Something[335]   xx sec  
//8 unsigned char Action_Relais[]

void Play_Melodie(char Num, char Visu)    // visu=0 -> RIEN    visu=1 titre seulement ou 2 =details
{
  unsigned int i,j,k,Index;
  unsigned char *pM;
  float Fx=0.0;
  unsigned char cx;
  pM=Liste_Melodie[Num] ;
    NCO1EN_bit=0;
    NCO1CLK=4;     // Clock 31250Khz ,
    if(Visu >0)CPrint(" Melodie #");
    {
       UART1_Write(Num+48);UART1_Write(' ');
     }
    Delay_ms(100);
    // --- titre en ascii   -----
    Index=0;   i=0;
     do
     
{
      cx=*(pM+i);
      //*(CRam1+i)=cx;
       if ( cx==0xFF) break;
       if(Visu >0) UART1_Write(cx);
      i++;
      }
      while (i<64);
      if(Visu >0) CRLF1();
      L1=0;
      p0=(unsigned char *)&L1;

      
      i
++;
      Index=0;
      do
      
{
       if( Visu >)
       { WordToStr(Index,CRam1);
         Print(CRam1);UART1_Write('-');
         }
       //---- melodie  en Hexa -------------------
       cx=*(pM+i) ;
        //     ByteToHex(cx,CRam1);Print(CRam1);
       // freqence
       if ( cx==0xFF) break;
       NCO1INCU= cx ;
       Higher(L1)=cx;
       cx=*(pM+i+1) ;
       //       ByteToHex(cx,CRam1);Print(CRam1);
       if ( cx==0xFF) break;
       NCO1INCH= cx ;
       Hi(L1)=cx;
       cx=*(pM+i+2) ;
        //      ByteToHex(cx,CRam1);Print(CRam1);
       if ( cx==0xFF) break;
       NCO1INCL= cx ;
       Lo(L1)=cx;
       //        UART1_Write(' ');
      if( Visu >1)
       {
     //  LongWordToStr(L1,CRam1);
     //  Print(CRam1); 
       UART1_Write('-');
       Fx=(float)L1 * 0.01549720;
       Float2Ascii(Fx,CRam1,1);  Print(CRam1);
       CPrint(" Hz ,Duree =");
       }
       // duree
       cx=*(pM+i+3) ;
       //       ByteToHex(cx,CRam1);Print(CRam1);
       if ( cx==0xFF) break;
       k= cx ;
       k=k<<8;
       cx=*(pM+i+4) ;  
       
//    ByteToHex(cx,CRam1);Print(CRam1);
       if ( cx==0xFF) break;
       k=+cx;
        //     UART1_Write(' ');
       if( Visu >)
       {
       WordToStr(k,CRam1);
       Print(CRam1);CRLF1() ;
       }
       NCO1EN_bit=1;
       for (j=0;j<k;j++) Delay_ms(1);
       NCO1EN_bit=0;
       i=i+5;
       Index=Index+1;
      }while(cx!=0xFF) ;
       NCO1EN_bit=0;
       NCO1CLK= 3 ;   //  3=500Khz  pour l'appli CLAVIER
       if(Visu >1)
       {
         CPrint(" Melodie size =" );
         WordToStr(i,CRam1);
         Print(CRam1); CRLF1();
        }
       Delay_ms(100);
 }
Aide toi, le ciel ou FantasPic t'aidera

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#22 Message par Temps-x » jeu. 17 mars 2022 19:39 lien vers la Data-Sheet : Cliquez ici

Bonsoir paulfjujo, et tout le forum,

paulfjujo a écrit :Source du message Dans tes precedentes version, tu mettais simplement le titre en entete,
et ça m'allais bien , hormis le flag 0xFF qui etait au debut.


:roll: Ben ouais avec cette version tu peux le faire, suffit de cocher ou décocher les casses, c'est pourtant simple..... tout est paramétrable...

paulfjujo a écrit :Source du message mais maintenant le rajout de tous ces espaces qui sont devant le titre
m'est inutile .


Exemple pour ce que tu veux

Config Paulfjujo.jpg


Ce qui nous donnes

//***********************************************************************************************
//************** titre de la mélodie, axelf, taille 122 octets, durée 0 min 5 sec **************
//***********************************************************************************************

unsigned char axelf[]={

0x61,0x78,0x65,0x6C,0x66,0xFF,0x00,0xC1,0xD1,0x01,0x77,0x00,0xE6,0xAF,0x00,0xD3,
0x00,0xC1,0xD1,0x00,0xBC,0x00,0xC1,0xD1,0x00,0x5E,0x00,0xF4,0x46,0x00,0xBC,0x00,
0xC1,0xD1,0x00,0xBC,0x00,0xAC,0xCE,0x00,0xBC,0x00,0xC1,0xD1,0x01,0x77,0x01,0x12,
0x39,0x00,0xD3,0x00,0xC1,0xD1,0x00,0xBC,0x00,0xC1,0xD1,0x00,0x5E,0x01,0x33,0xB1,
0x00,0xBC,0x01,0x22,0x69,0x00,0xBC,0x00,0xE6,0xAF,0x00,0xBC,0x00,0xC1,0xD1,0x00,
0xBC,0x01,0x22,0x69,0x00,0xBC,0x01,0x83,0xA3,0x00,0xBC,0x00,0xC1,0xD1,0x00,0x5E,
0x00,0xAC,0xCE,0x00,0xBC,0x00,0xAC,0xCE,0x00,0x5E,0x00,0x91,0x34,0x00,0xBC,0x00,
0xD9,0x8E,0x00,0xBC,0x00,0xC1,0xD1,0x01,0xD4,0xFF
};

paulfjujo a écrit :Source du message Ton ecran Oled peut recevoir 255 caracteres sur sa largeur ?

Bien sur que non, je suis partie sur ton exemple, pour te prouver qu'il y avait pas d'erreur

Ce que je veux dire, c'est que j'ai fait un test avec un écran Oled (en mode 2), avec une longueur de 128 Pixels sur l'écran, et avec une longueur de (5 pixels de caractères + 1 pixel d'espace) ce qui nous fait un caractère à 6 pixels, Et c'est ok, il y a bien un centrage

Le programme prends en compte des écrans plus grand ou plus petit, avec des caractères plus grand ou plus petit.

paulfjujo a écrit :Source du message d'espace =0x20


:eek: Par contre... là !! je me suis planté, il faut que je corrige dans le programme, au lieu de 0X20 ça serait plutôt 0x00, ou caractère au choix pour espace (je vais surement le rajouter, de plus très facile à faire.

N'existe pas à me reprendre si tu vois qu'il y a un truc qui te chiffonne, je le prendrais jamais mal venant de toi.

Merci !

==> +A
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le ven. 18 mars 2022 18:27, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

PIC18F27K42 et NCO1 Numerically Controlled Oscillator
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#23 Message par paulfjujo » ven. 18 mars 2022 18:20 lien vers la Data-Sheet : Cliquez ici

:bravo:


En fait , il fallait simplement que je decoche le "Titre centré sur ecran"
et cle sur 1 seul octet


RTTL_convert_en_C-2022-0318.jpg


resultat

/***********************************************************************************************
//****** titre de la mélodie, GimmeGim, taille 110 octets, durée 0 min 4 sec ****
//***********************************************************************************************

unsigned char GimmeGim[]={

0x47,0x69,0x6D,0x6D,0x65,0x47,0x69,0x6D,0xFF,
0x01,0x33,0xB1,0x00,0x96,0x01,0xCD,
0x5F,0x00,0x96,0x02,0x67,0x63,0x00,0x96,0x00,0x00,0x00,0x00,0x96,0x02,0x67,0x63,
0x00,0x96,0x01,0xCD,0x5F,0x00,0x96,0x01,0x33,0xB1,0x01,0x2C,0x00,0x00,0x00,0x02,
0x58,0x00,0x00,0x00,0x01,0x2C,0x00,0x00,0x00,0x00,0x96,0x01,0x33,0xB1,0x00,0x96,
0x01,0xCD,0x5F,0x00,0x96,0x00,0x00,0x00,0x00,0x96,0x02,0x67,0x63,0x00,0x96,0x01,
0xCD,0x5F,0x00,0x96,0x01,0x33,0xB1,0x00,0x96,0x01,0x59,0x9C,0x00,0x96,0x01,0x6E,
0x14,0x00,0x96,0x01,0x9A,0xDF,0x00,0x96,0x01,0xCD,0x5F,0x01,0x2C,0xFF
};
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera


Retourner vers « Langage C »

Qui est en ligne

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