2019-10-12 10:27:05 [显示全部楼层]
4835浏览
查看: 4835|回复: 4

[求助] arduino驱动57步进电机问题

[复制链接]
就是我想通过串口收到的字符来控制电机的正反转和停止,请大神们看看程序该怎么改,哪里错了,收到1和2都可以转,但是只转动几秒就停了,发送3的时候也没有打印停止到串口,我想让它一直转,收到1就一直正转,收到2 就一直反转,收到3就停止
int PUL_1=7;
int DIR_1=6;
int val;
void setup()
{
    Serial.begin(9600);//设置波特率为9600
    pinMode(DIR_1,OUTPUT);
    pinMode(PUL_1,OUTPUT);
}

void loop()
{
  val=Serial.read();//读取串口收到的数据
  if (val>'0'&& val<'3')
  {
    if(val== '1')
    {   
           digitalWrite(DIR_1,HIGH); //电机正转
           Serial.println("正转");
           for(int a=0;a<1000;a++)
           {
           digitalWrite(PUL_1,HIGH);
           delayMicroseconds(400);
           digitalWrite(PUL_1,LOW);
           delayMicroseconds(400);
           }
     }
    else if(val=='2')
    {
          digitalWrite(DIR_1,LOW);     //电机反转
           Serial.println("反转");
           for(int a=0;a<1000;a++)
           {
           digitalWrite(PUL_1,HIGH);
           delayMicroseconds(400);
           digitalWrite(PUL_1,LOW);
           delayMicroseconds(400);
           }
     }
     else if(val== '3')
   {
           digitalWrite(PUL_1,LOW);
           Serial.println("停止");

     }
  }
}

yywudao  高级技师

发表于 2019-10-14 15:17:05

回帖奖励 +1 创造力

你程序一开始 loop 处的判定是 0< val <3,val == 3,已经不在这个程序判定里了。
回复

使用道具 举报

gada888  版主

发表于 2019-10-15 11:25:15

干嘛不用Switch case语句试试
回复

使用道具 举报

Evankoo  见习技师

发表于 2019-10-16 23:33:40

感谢
回复

使用道具 举报

20060606  高级技匠

发表于 2020-6-26 09:15:35

loop 处的判定是 0< val <3,val == 3,已经不在这个程序判定里了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail