Команды для bluetooth машинки

satway
Offline
Зарегистрирован: 06.12.2014

Всем привет. Сварганил я машинку с управлением по bluetooth. Все работает, машинка ездит, но у кода есть такой изъян - после нажатия кнопки, команда выполняеться поятоянно (что и понятно). Не могу сообразить, как сделать так, что бы машинка ехала только тогда, когда кнопка удерживаеться нажатой. Сейчас это решаеться дополнительной кнопкой для остановки всех моторов. Пробовал ставить else с кодом

 motor1.run(RELEASE);
 motor2.run(RELEASE);
 motor3.run(RELEASE);
 motor4.run(RELEASE);

после каждой команды - ноль реакции, вернее изменения есть, моторы вообще на команды не реагируют.

Код прилагаю:

#include <AFMotor.h>  // Подключаем библиотеку для работы с шилдом 

int ledPin = 13;
unsigned long a;
int IN1 = 2; 
int IN2 = 3;
int IN3 = 4; 
int IN4 = 5;



// Подключаем моторы к клеммникам M1, M2, M3, M4
AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);



void setup() 
{
Serial.begin(9600);
Serial.setTimeout(4);
pinMode(ledPin, OUTPUT);
  motor1.setSpeed(255);
  motor1.run(RELEASE);
  motor2.setSpeed(255);
  motor2.run(RELEASE);
  motor3.setSpeed(255);
  motor3.run(RELEASE);
  motor4.setSpeed(255);
  motor4.run(RELEASE);

} 

void loop()
{
if (Serial.available())
{ a = Serial.parseInt(); 
if (a==1) //едим прямо
{
  delay(50);
  motor1.run(FORWARD); // Задаем движение вперед
  motor2.run(FORWARD);
  motor3.run(FORWARD);
  motor4.run(FORWARD);
  motor1.setSpeed(150); // Задаем скорость движения
  motor2.setSpeed(150); 
  motor3.setSpeed(150); 
  motor4.setSpeed(150); 
  }


if (a==2) //поворот на право
{
  delay(50);
  motor1.run(BACKWARD); // Задаем движение вперед
  motor2.run(FORWARD);
  motor3.run(FORWARD);
  motor4.run(BACKWARD);
  motor1.setSpeed(255); // Задаем скорость движения
  motor2.setSpeed(255); 
  motor3.setSpeed(255); 
  motor4.setSpeed(255); 
  }

if (a==3) //поворот на лево
{
  delay(50);
  motor1.run(FORWARD); // Задаем движение вперед
  motor2.run(BACKWARD);
  motor3.run(BACKWARD);
  motor4.run(FORWARD);
  motor1.setSpeed(255); // Задаем скорость движения
  motor2.setSpeed(255); 
  motor3.setSpeed(255); 
  motor4.setSpeed(255); 
  }

if (a==4) //движение назад
{
  delay(50);
  motor1.run(BACKWARD); // Задаем движение вперед
  motor2.run(BACKWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);
  motor1.setSpeed(150); // Задаем скорость движения
  motor2.setSpeed(150); 
  motor3.setSpeed(150); 
  motor4.setSpeed(150); 
  }

if (a==5) //кнопка стоп
{
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);
  }

}
}

 

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015