AnsweredAssumed Answered

help on stepper motor

Question asked by karmous.neder on Nov 19, 2015
hi  all membres  i do a program that affiche the angle of a steeper motor in the  screen of stm32f429 discovery but i can only affiche  [0,45,90,135,180,225,270,315]
( 8 steppes )  and  i want it work on 36 steppes or 32steppes what can i  do  to  get  36 steppes or  32 steppes ???? 
void initlcd(void)
 { LCD_Init();
    LCD_LayerInit();
 
    /* Set LCD background layer */
    LCD_SetLayer(LCD_BACKGROUND_LAYER);
 
    /* Set LCD transparency */
    LCD_SetTransparency(0);
 
    /* Set LCD foreground layer */
    LCD_SetLayer(LCD_FOREGROUND_LAYER);
 
    /* LTDC reload configuration */
    LTDC_ReloadConfig(LTDC_IMReload);
 
    /* Enable the LTDC */
    LTDC_Cmd(ENABLE);
   LCD_Clear(LCD_COLOR_BLACK);
 }
  
  void Sleep(unsigned long int n) {
        /* boucle vide parcourue (n * 100000) fois*/
        int i = 0;
        unsigned long int max = n * 100000;
        do {
                /* Faire qqch de stupide qui prend du temps */
                i++;
        }
        while(i <= max);
}
 
 
 
void CONFIGPINE(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;
  
     
  /* GPIOC clock enable */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
  
  
   
  /* GPIOA Configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // Input/Output controlled by peripheral
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // Button to ground expectation
  GPIO_Init(GPIOE, &GPIO_InitStructure);
  }
   
   
  void step_angle(int step)
 {
 if (step==0)
       
        
              GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_RESET);
              GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_RESET);
              GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_RESET);
              GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_SET);
                     }
                      if (step==1)
                      {
 GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_RESET);
           GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_RESET);
                GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_SET);
                     GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_SET);
                     }
                      if (step==2)
                      {
 GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_RESET);
           GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_RESET);
                GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_SET);
                     GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_RESET);
                     }
                      if (step==3)
                      {
 GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_RESET);
           GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_SET);
                GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_SET);
                     GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_RESET);
                     }
                              if (step==4)
                              {
 GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_RESET);
           GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_SET);
                GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_RESET);
                     GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_RESET);
                     }
                              if (step==5)
                              {
 GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_SET);
           GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_SET);
                GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_RESET);
                     GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_RESET);
                     }
                              if (step==6)
                              {
 GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_SET);
           GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_RESET);
                GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_RESET);
                     GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_RESET);
                     }
                              if (step==7)
                              {
 GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_SET);
           GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_RESET);
                GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_RESET);
                     GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_SET);
                     }
                     if (step==8)
                     {
                     step=-1;
                     }
                       
 }
void direction ()
{ int i=0;
char ch[100];
  initlcd();
while(i!=9)
{
 
  step_angle(i);
    sprintf(ch,"angle=%d ", (i*45) );
                        LCD_SetTextColor(LCD_COLOR_GREEN);
                            LCD_SetBackColor(LCD_COLOR_BLUE);
                            LCD_DisplayStringLine(LINE(9),ch);
  Sleep(2000);
   i++;
   }
   
  }
  
 int main(void)
  
 {
 CONFIGPINE();
 
 while(1)
 {
   
 direction ();
  
}
  
  
 }

Outcomes