Команды для 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