新人求助大神
这是我自己写的蓝牙控制步进电机程序,上电后一切正常,就是连接蓝牙后,发送一次指令,电机就转一下,不发送就停止。想求教大神指点,责骂改一下就可以在发送一次指令后让电机一直转?
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);
}
} 当你的串口没有东西的时候你再去读取就会发生错误
你可以在val=Serial.read();前面加上if(Serial.available())记得加大括号 zjz5717 发表于 2017-4-23 21:32
当你的串口没有东西的时候你再去读取就会发生错误
你可以在val=Serial.read();前面加上if(Serial.availabl ...
我写进去了,还是发送一次指令,转一点,不会持续转动,是不是要加个while的死循环? 急速未来 发表于 2017-4-24 17:03
我写进去了,还是发送一次指令,转一点,不会持续转动,是不是要加个while的死循环?
你的大括号加在什么位置了。。。
我觉得应该是if(Serial.available()) {
val=Serial.Read() } zjz5717 发表于 2017-4-24 17:59
你的大括号加在什么位置了。。。
我觉得应该是if(Serial.available()) {
val=Seria ...
非常感谢,我加错了,直接加到了整个语句里面,刚才改了一下,现在转动正常。太感谢了:handshake
页:
[1]