moiieisen 2021-01-19 13:04 采纳率: 0%
浏览 50

步进电机的控制顺序代码

手头上有个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条回答 默认 最新

  • qq_40711944 2021-01-20 14:55
    关注

    虽然没什么接触单片机  我的个人理解 控制电机正反转是由高低电平控制的  而1<<i是左移  相当于2的次幂增长  digitalwrite这个函数的第二个参数控制电机的正反转

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序