moiieisen
moiieisen
2021-01-19 13:04

步进电机的控制顺序代码

  • c语言

手头上有个28BYJ-48的步进电机(应该是4相8拍的),但是自己却对其控制的顺序代码有疑问,望大佬解惑一下。

文件给了我一串控制电机的代码,我把控制正反转的部分截了下来,如下:

const int CCWStep[]={0x01,0x02,0x04,0x08};  //反转
const int CWStep[]={0x08,0x04,0x02,0x01};     //正转

...

void moveOnePeriod(int dir,int ms){
   int i=0,j=0;
   for (j=0;j<4;j++){ 
      for (i=0;i<4;i++){
          if(dir == 1)
             digitalWrite(motorPins[i],(CCWStep[j] == (1<<i)) ? HIGH : LOW);
          else
             digitalWrite(motorPins[i],(CWStep[j] == (1<<i)) ? HIGH : LOW);
       printf("motorPin %d, %d \n",motorPins[i],digitalRead(motorPins[i]));
    }
    printf("Step cycle!\n");
    if(ms<3)
        ms=3;
        delay(ms);
}

我的问题是,该控制顺序为什么是16进制的?我该怎么去理解这组数?它是起什么作用?

我能不能把它简单转化成2进制 0001-0010-0100-1000,然后把1看作对应的相被激活?

感觉回答!

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答