Команды для bluetooth машинки
- Войдите на сайт для отправки комментариев
Чт, 05/02/2015 - 23:42
Всем привет. Сварганил я машинку с управлением по bluetooth. Все работает, машинка ездит, но у кода есть такой изъян - после нажатия кнопки, команда выполняеться поятоянно (что и понятно). Не могу сообразить, как сделать так, что бы машинка ехала только тогда, когда кнопка удерживаеться нажатой. Сейчас это решаеться дополнительной кнопкой для остановки всех моторов. Пробовал ставить else с кодом
1 | motor1.run(RELEASE); |
2 | motor2.run(RELEASE); |
3 | motor3.run(RELEASE); |
4 | motor4.run(RELEASE); |
после каждой команды - ноль реакции, вернее изменения есть, моторы вообще на команды не реагируют.
Код прилагаю:
001 | #include <AFMotor.h> // Подключаем библиотеку для работы с шилдом |
002 |
003 | int ledPin = 13; |
004 | unsigned long a; |
005 | int IN1 = 2; |
006 | int IN2 = 3; |
007 | int IN3 = 4; |
008 | int IN4 = 5; |
009 |
010 |
011 |
012 | // Подключаем моторы к клеммникам M1, M2, M3, M4 |
013 | AF_DCMotor motor1(1); |
014 | AF_DCMotor motor2(2); |
015 | AF_DCMotor motor3(3); |
016 | AF_DCMotor motor4(4); |
017 |
018 |
019 |
020 | void setup () |
021 | { |
022 | Serial .begin(9600); |
023 | Serial .setTimeout(4); |
024 | pinMode(ledPin, OUTPUT); |
025 | motor1.setSpeed(255); |
026 | motor1.run(RELEASE); |
027 | motor2.setSpeed(255); |
028 | motor2.run(RELEASE); |
029 | motor3.setSpeed(255); |
030 | motor3.run(RELEASE); |
031 | motor4.setSpeed(255); |
032 | motor4.run(RELEASE); |
033 |
034 | } |
035 |
036 | void loop () |
037 | { |
038 | if ( Serial .available()) |
039 | { a = Serial .parseInt(); |
040 | if (a==1) //едим прямо |
041 | { |
042 | delay(50); |
043 | motor1.run(FORWARD); // Задаем движение вперед |
044 | motor2.run(FORWARD); |
045 | motor3.run(FORWARD); |
046 | motor4.run(FORWARD); |
047 | motor1.setSpeed(150); // Задаем скорость движения |
048 | motor2.setSpeed(150); |
049 | motor3.setSpeed(150); |
050 | motor4.setSpeed(150); |
051 | } |
052 |
053 |
054 | if (a==2) //поворот на право |
055 | { |
056 | delay(50); |
057 | motor1.run(BACKWARD); // Задаем движение вперед |
058 | motor2.run(FORWARD); |
059 | motor3.run(FORWARD); |
060 | motor4.run(BACKWARD); |
061 | motor1.setSpeed(255); // Задаем скорость движения |
062 | motor2.setSpeed(255); |
063 | motor3.setSpeed(255); |
064 | motor4.setSpeed(255); |
065 | } |
066 |
067 | if (a==3) //поворот на лево |
068 | { |
069 | delay(50); |
070 | motor1.run(FORWARD); // Задаем движение вперед |
071 | motor2.run(BACKWARD); |
072 | motor3.run(BACKWARD); |
073 | motor4.run(FORWARD); |
074 | motor1.setSpeed(255); // Задаем скорость движения |
075 | motor2.setSpeed(255); |
076 | motor3.setSpeed(255); |
077 | motor4.setSpeed(255); |
078 | } |
079 |
080 | if (a==4) //движение назад |
081 | { |
082 | delay(50); |
083 | motor1.run(BACKWARD); // Задаем движение вперед |
084 | motor2.run(BACKWARD); |
085 | motor3.run(BACKWARD); |
086 | motor4.run(BACKWARD); |
087 | motor1.setSpeed(150); // Задаем скорость движения |
088 | motor2.setSpeed(150); |
089 | motor3.setSpeed(150); |
090 | motor4.setSpeed(150); |
091 | } |
092 |
093 | if (a==5) //кнопка стоп |
094 | { |
095 | motor1.run(RELEASE); |
096 | motor2.run(RELEASE); |
097 | motor3.run(RELEASE); |
098 | motor4.run(RELEASE); |
099 | } |
100 |
101 | } |
102 | } |
Де-жа-вю :)
http://arduino.ru/forum/programmirovanie/upravlenie-radiomodelyu