极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11986|回复: 4

新人求助大神

[复制链接]
发表于 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);
       }
}
回复

使用道具 举报

发表于 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的死循环?
回复 支持 反对

使用道具 举报

发表于 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 ...

非常感谢,我加错了,直接加到了整个语句里面,刚才改了一下,现在转动正常。太感谢了
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-24 13:06 , Processed in 0.040067 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表