急速未来 发表于 2017-4-23 16:25:07

新人求助大神

这是我自己写的蓝牙控制步进电机程序,上电后一切正常,就是连接蓝牙后,发送一次指令,电机就转一下,不发送就停止。
想求教大神指点,责骂改一下就可以在发送一次指令后让电机一直转?

int pin1=8;
int pin2=9;
int pin3=10;
int pin4=11;
//int stepperSpeed = 30;
int val;
void setup()
{
   Serial.begin(9600);
   pinMode (pin1,OUTPUT);
   pinMode (pin2,OUTPUT);
   pinMode (pin3,OUTPUT);
   pinMode (pin4,OUTPUT);
   
}

void loop ()
{
       val=Serial.read();
       if(val=='1')
      {
      Serial.println("go");
      digitalWrite (pin1,LOW);
      digitalWrite (pin2,HIGH);
      digitalWrite (pin3,HIGH);
      digitalWrite (pin4,HIGH);
      delay(5);
      digitalWrite (pin1,LOW);
      digitalWrite (pin2,LOW);
      digitalWrite (pin3,HIGH);
      digitalWrite (pin4,HIGH);
      delay(5);
      digitalWrite (pin1,HIGH);
      digitalWrite (pin2,LOW);
      digitalWrite (pin3,HIGH);
      digitalWrite (pin4,HIGH);
      delay(5);
      digitalWrite (pin1,HIGH);
      digitalWrite (pin2,LOW);
      digitalWrite (pin3,LOW);
      digitalWrite (pin4,HIGH);
      delay(5);
      digitalWrite (pin1,HIGH);
      digitalWrite (pin2,HIGH);
      digitalWrite (pin3,LOW);
      digitalWrite (pin4,HIGH);
      delay(5);
      digitalWrite (pin1,HIGH);
      digitalWrite (pin2,HIGH);
      digitalWrite (pin3,LOW);
      digitalWrite (pin4,LOW);
         delay(5);
      digitalWrite (pin1,HIGH);
      digitalWrite (pin2,HIGH);
      digitalWrite (pin3,HIGH);
      digitalWrite (pin4,LOW);
      delay(5);
      digitalWrite (pin1,LOW);
      digitalWrite (pin2,HIGH);
      digitalWrite (pin3,HIGH);
      digitalWrite (pin4,LOW);
      delay(5);
       }
       if(val=='2')
      {
      Serial.println("stop");
      digitalWrite (pin1,HIGH);
      digitalWrite (pin2,HIGH);
      digitalWrite (pin3,HIGH);
      digitalWrite (pin4,HIGH);
       }
}

zjz5717 发表于 2017-4-23 21:32:49

当你的串口没有东西的时候你再去读取就会发生错误
你可以在val=Serial.read();前面加上if(Serial.available())记得加大括号

急速未来 发表于 2017-4-24 17:03:06

zjz5717 发表于 2017-4-23 21:32
当你的串口没有东西的时候你再去读取就会发生错误
你可以在val=Serial.read();前面加上if(Serial.availabl ...

我写进去了,还是发送一次指令,转一点,不会持续转动,是不是要加个while的死循环?

zjz5717 发表于 2017-4-24 17:59:55

急速未来 发表于 2017-4-24 17:03
我写进去了,还是发送一次指令,转一点,不会持续转动,是不是要加个while的死循环?

你的大括号加在什么位置了。。。
我觉得应该是if(Serial.available()) {
                   val=Serial.Read() }

急速未来 发表于 2017-4-24 18:13:41

zjz5717 发表于 2017-4-24 17:59
你的大括号加在什么位置了。。。
我觉得应该是if(Serial.available()) {
                   val=Seria ...

非常感谢,我加错了,直接加到了整个语句里面,刚才改了一下,现在转动正常。太感谢了:handshake
页: [1]
查看完整版本: 新人求助大神