Команды для bluetooth машинки
- Войдите на сайт для отправки комментариев
Чт, 05/02/2015 - 23:42
Всем привет. Сварганил я машинку с управлением по 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);
}
}
}
Де-жа-вю :)
http://arduino.ru/forum/programmirovanie/upravlenie-radiomodelyu