programme C pour moteur unipolaire
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

programme C pour moteur unipolaire



  1. #1
    coeur noire
    Invité

    programme C pour moteur unipolaire


    ------

    bonjour


    je voudrais savoir si ce code permet de faire tourner un motor unipolaire avec le pic 16F873
    faut il parametrer d'autre registre ?


    void inialise (char *tab,long taille);
    void main(void)
    {
    char tab[4],i,taille=4;
    TRISB =0b00110110;
    TRISA =1;
    PORTB =1;
    inialise(tab,taille);
    while (PORTA.F0==1)
    {

    PORTB=tab[0];
    delay_ms(1000);
    PORTB=tab[1];
    delay_ms(1000);
    PORTB=tab[2];
    delay_ms(1000);
    PORTB=tab[3];
    delay_ms(1000);
    }

    }
    void inialise (char *tab,long taille)
    {
    long i;
    for(i=0;i<taille;i++)
    {
    tab[0]="0b00000010";
    tab[1]="0b00000100";
    tab[2]="0b00010000";
    tab[3]="0b00100000";
    }
    }
    on peux simplifier ce code avec une condition?

    while (PORTA.F0==1)
    {
    PORTB=tab[i];
    if(tab[i]++)
    {
    delay_ms(1000);
    }}

    -----

  2. #2
    Seb.26

    Re : programme C pour moteur unipolaire

    Pense à utiliser la balise CODE la prochaine fois ...
    Code:
    void inialise (char *tab,long taille)
    {
      long i;
      for(i=0;i<taille;i++) // -> à quoi sert ce for( ; ; ) ???
      {
        tab[0]="0b00000010";
        tab[1]="0b00000100";
        tab[2]="0b00010000";
        tab[3]="0b00100000";
      }
    }
    on peux simplifier ce code avec une condition?
    while (PORTA.F0==1)
    {
    PORTB=tab[i];
    if(tab[i]++)
    {
    delay_ms(1000);
    }
    }
    Non, ton second code n'est pas OK ...

    Essaye plutôt :

    Code:
    #define TAB_SIZE 4
    char tab[TAB_SIZE];
    char i;
    
    ...
    
    i = 0;
    while (PORTA.F0==1)
    {
      PORTB = tab[i++];
      delay_ms(1000);
      if( i>=TAB_SIZE )
      {
        i=0;
      }
    }
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  3. #3
    Seb.26

    Re : programme C pour moteur unipolaire

    Tu pourrais même simplifier tout ça encore plus :

    Code:
    void main(void)
    {
      unsigned char motorState = 0x02;
    
      while (PORTA.F0==1)
      {
        PORTB = motorState;
        delay_ms(1000);
        //
        if( motorState == 0x04 )
          motorState <<= 2;
        else
          motorState <<= 1;
        //
        if( motorState == 0x40 )
          motorState= 0x02;
      }
    }
    Et voilà ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  4. #4
    coeur noire
    Invité

    Re : programme C pour moteur unipolaire

    salut

    merci seb.26 pour ta reponse
    c'est vrais je m'est des boucles quand y faut pas
    je doit faire une fixation pour afficher des valeurs a la suite
    je bloque aux niveaux de ta dernier reponse

  5. A voir en vidéo sur Futura
  6. #5
    Seb.26

    Re : programme C pour moteur unipolaire

    Citation Envoyé par coeur noire Voir le message
    c'est vrais je m'est des boucles quand y faut pas
    je doit faire une fixation pour afficher des valeurs a la suite
    Oui, j'ai vu ça ...


    Citation Envoyé par coeur noire Voir le message
    je bloque aux niveaux de ta dernier reponse
    Et bien, si j'ai pas fait de bétise, normalement, ça fait la même chose que ton code

    Plutôt que de stocker les 4 valeurs que tu mets dans portB, et comme il n'y a qu'un seul bit à 1 à chaque fois, je fais un décalage à gauche (2 décalages pour passer de 0b00000100 à 0b00010000 )

    Essaye de visualiser étape par étape ce que ça donne ...

    PS: d'ailleurs, je pense que tu avais un bug avec tes "0b00001000", je ne connais pas ton compilo, mais normalement "0b00000000" est une chaine de caractères, pas un octet ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

Discussions similaires

  1. induction unipolaire
    Par invite8c514936 dans le forum Physique
    Réponses: 1
    Dernier message: 09/05/2014, 15h54
  2. moteur pas a pas unipolaire 4 fil à 3 bobine ?
    Par invite397b043d dans le forum Électronique
    Réponses: 3
    Dernier message: 19/01/2008, 18h21
  3. Moteur pas à pas : bipolaire ou unipolaire, que choisir ?
    Par invite458a37e0 dans le forum Électronique
    Réponses: 6
    Dernier message: 16/10/2007, 06h37
  4. programme en C pour moteur pas à pas
    Par invite35c29b80 dans le forum Électronique
    Réponses: 0
    Dernier message: 29/03/2007, 07h34
  5. au secours: commande d'un moteur unipolaire par PC
    Par invitef8c07127 dans le forum Électronique
    Réponses: 0
    Dernier message: 01/08/2006, 18h37
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...