该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
int LeftI1 = 9; //连接电机驱动板的CP+接口
int LeftI2 = 5; //连接电机驱动板的CW+接口
int RightI1 = 10; //连接电机驱动板的CP-接口
int RightI2 = 6; //连接电机驱动板的CW-接口
int StepCount = 0; //定义初始步数为0
int StepDelayTime=200; //定义单个脉冲时间为200(us)
int val;
int State; //定义状态变量
int StartDelay=1000; //定义启动速度
int Delaytime=100; //定义加速度,减速度 10
void setup() //接口定义
{
pinMode(LeftI1,OUTPUT); //I1和I2都是数字信号
pinMode(LeftI2,OUTPUT); //通过设置I1和I2来控制电机旋转方向
pinMode(RightI1,OUTPUT); //I1和I2都是数字信号
pinMode(RightI2,OUTPUT); //通过设置I1和I2来控制电机旋转方向
Serial.begin(9600); //设置波特率
}
void ForwardInit() //接口初始化定义,正转
{ //20
digitalWrite(LeftI1,LOW); //CP+=0
digitalWrite(LeftI2,LOW); //CW+=0
digitalWrite(RightI1,LOW); //CP-=0
digitalWrite(RightI2,HIGH); //CW-=1
StepCount=0; //步数初始化
}
void BackwardInit() //接口初始化定义。反转
{
digitalWrite(LeftI1,LOW); //CP+=0
digitalWrite(LeftI2,LOW); //CW+=0 30
digitalWrite(RightI1,LOW); //CP-=0
digitalWrite(RightI2,HIGH); //CW-=1
StepCount=0;
}
void StopwardInit() //停止时接口定义
{
digitalWrite(LeftI1,LOW); //CP+=0
digitalWrite(LeftI2,LOW); //CW+=0
digitalWrite(RightI1,LOW); //CP-=0
digitalWrite(RightI2,LOW); //CW-=0 40
}
void ForwardOneStep() //定义正向启动语句
{
delayMicroseconds(StepDelayTime); //延迟函数
switch(StepCount) //switch语句,选择步数
{
case 0: //步数为0
digitalWrite(LeftI2,HIGH);
digitalWrite(LeftI1,HIGH);
break; //跳出 50
case 1: //步数为1
digitalWrite(LeftI1,LOW);
digitalWrite(RightI2,HIGH);
break; //跳出
case 2: //步数为2
digitalWrite(RightI2,LOW);
digitalWrite(RightI1,HIGH);
break; //跳出
case 3: // 步数为3
digitalWrite(RightI1,LOW); //60
digitalWrite(LeftI2,LOW);
break; //跳出
}
StepCount=(StepCount + 1) % 4; // 取余函数 ,每次步数增加1,完成步进功能
}
void BackwardOneStep() //定义反向步进启动句
{
delayMicroseconds(StepDelayTime); //根据步进电机转动时序图编写各段步数
switch(StepCount)
{ //70
case 0:
digitalWrite(LeftI2,HIGH);
digitalWrite(LeftI1,HIGH);
break;
case 1:
digitalWrite(LeftI1,LOW);
digitalWrite(RightI2,HIGH);
break;
case 2:
digitalWrite(RightI2,LOW); //80
digitalWrite(RightI1,HIGH);
break;
case 3:
digitalWrite(RightI1,LOW);
digitalWrite(LeftI2,LOW);
break;
}