如果没有可用的串行数据,如何在Arduino中退出void循环?

时间:2017-02-10 05:56:45

标签: android loops void arduino-uno robot

我正在构建一个使用2个Android手机进行控制的互联网控制机器人。 第一部手机通过USB连接到Arduino Uno,作为3G屏蔽 第二部手机用来控制整个事情。它将未分配的字节发送到第一部将其发送给Arduino的电话。 我在手机上使用的应用程序存在一个问题。应用程序中的操纵杆在静止时不会发送特定命令。例如,当我将其向上移动时,它会向连接到Arduino的电话发送“1”,从而向前驱动电机但是当我释放操纵杆时,它会停止发送数据,但机器人上的电机仍会旋转,直到我向下移动操纵杆发送“2”motor.run(RELEASE);

如果没有可用的串行数据,如何停止电机?

这是我写的代码。

#include <AFMotor.h>
AF_DCMotor motor_left(2, MOTOR12_1KHZ);
AF_DCMotor motor_right(3, MOTOR12_1KHZ);
int ledPin = 13;
int speed_min = 100; //the minimum "speed" the motors will turn - take it            lower and motors don't turn
int speed_max = 1000; //the maximum "speed" the motors will turn – you can’t put in higher
int speed_left = speed_max; // set both motors to maximum speed
int speed_right = speed_max;
int command = 0;
void setup ()
{
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
motor_left.setSpeed(255);
motor_left.run(RELEASE);
motor_right.setSpeed(255);
motor_right.run(RELEASE);

motor_left.setSpeed(speed_left); // minimum speed 135   max speed 255
motor_right.setSpeed(speed_right); // minimum speed 135   max speed 255
}

void loop() {

if (Serial.available() > 0); 
byte command = Serial.read();

if (command == 1)
{
Serial.println("Move Forward");
digitalWrite(ledPin, HIGH);
motor_left.run(FORWARD);
}


if (command == 2)
{
Serial.println("Stop");
digitalWrite(ledPin, LOW);
motor_left.run(RELEASE);
}

}

基本上,如果没有可用数据,它就什么都不做。

1 个答案:

答案 0 :(得分:0)

使用这样的代码,它会有所帮助

this