машина на блютуз начинает движение через 8 секунд после нажатия
- Войдите на сайт для отправки комментариев
Вс, 17/04/2016 - 16:48
всем привет
собрал машинку на блютуз управлении и добавил HC-SR4 со светодиодом в качестве парктроника, но машина начинает движение через 8 секунд после нажатия на кнопку движения, программу использую Arduino Bluetooth RC Car
#define in1 5
#define in2 6
#define in3 10
#define in4 11
#define Trig 13
#define Echo 12
#define ledPin 7
int command;
int Speed = 204;
int Speedsec;
int buttonState = 0;
int lastButtonState = 0;
int Turnradius = 0;
int brakeTime = 45;
int brkonoff = 1;
void setup() {
{
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600); }
{pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);}
Serial.begin(9600);
}
unsigned int impulseTime=0;
unsigned int distance_sm=0;
void loop() {
if (Serial.available() > 0) {
command = Serial.read();
Stop();
switch (command)
{
case 'F':
forward();
break;
case 'B':
back();
break;
case 'L':
left();
break;
case 'R':
right();
break;
case 'G':
forwardleft();
break;
case 'I':
forwardright();
break;
case 'H':
backleft();
break;
case 'J':
backright();
break;
case '0':
Speed = 100;
break;
case '1':
Speed = 140;
break;
case '2':
Speed = 153;
break;
case '3':
Speed = 165;
break;
case '4':
Speed = 178;
break;
case '5':
Speed = 191;
break;
case '6':
Speed = 204;
break;
case '7':
Speed = 216;
break;
case '8':
Speed = 229;
break;
case '9':
Speed = 242;
break;
case 'q':
Speed = 255;
break;
}
Speedsec = Turnradius;
if (brkonoff == 1) {
brakeOn();
} else {
brakeOff();
}
}
{
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
impulseTime=pulseIn(Echo, HIGH);
distance_sm=impulseTime/58;
Serial.println(distance_sm);
if (distance_sm<10)
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
delay(100);
}
}
void forward() {
analogWrite(in1, Speed);
analogWrite(in3, Speed);
}
void back() {
analogWrite(in2, Speed);
analogWrite(in4, Speed);
}
void left() {
analogWrite(in3, Speed);
analogWrite(in2, Speed);
}
void right() {
analogWrite(in4, Speed);
analogWrite(in1, Speed);
}
void forwardleft() {
analogWrite(in1, Speedsec);
analogWrite(in3, Speed);
}
void forwardright() {
analogWrite(in1, Speed);
analogWrite(in3, Speedsec);
}
void backright() {
analogWrite(in2, Speed);
analogWrite(in4, Speedsec);
}
void backleft() {
analogWrite(in2, Speedsec);
analogWrite(in4, Speed);
}
void Stop() {
analogWrite(in1, 0);
analogWrite(in2, 0);
analogWrite(in3, 0);
analogWrite(in4, 0);
}
void brakeOn() {
buttonState = command;
if (buttonState != lastButtonState) {
if (lastButtonState == 'F') {
if (buttonState == 'S') {
back();
delay(brakeTime);
Stop();
}
}
if (lastButtonState == 'B') {
if (buttonState == 'S') {
forward();
delay(brakeTime);
Stop();
}
}
if (lastButtonState == 'L') {
if (buttonState == 'S') {
right();
delay(brakeTime);
Stop();
}
}
if (lastButtonState == 'R') {
if (buttonState == 'S') {
left();
delay(brakeTime);
Stop();
}
}
}
lastButtonState = buttonState;
}
void brakeOff() {
}
по сути это объединение двух кодов, по отдельности работает нормально все , но после вставки кода на дальномер происходит задержка
1. Никто не будет разбираться в коде, оформленном не по правилам.
2. Раз Вы произнесли слово дальномер, то, возможно, дальномер ултразвуковой и его таймаут составляет как раз порядка 8 секунд.
в код для машины всатвлял вот этот код этот код зажигает светодиод если расстояние до приграды 10 см
Внимательно читаем доки по PulseIn(особенно про таймаут) : http://arduino.ru/Reference/PulseIn
и п.2 от andriano #2
ну и собственно что получилось в итог. извиняюсь за первое сообщение)
Может она перед стартом мотор прогревает?
А вообще, присоединяюсь к коллегам. Проверьте, если не поможет, тогда и будем думать.
знания не так глубоки, да что там говорить начальный уровень еще. PulseIn нужно приписать к пину но в скетче не указаны пины от блютуз модуля. итог не разобрался
носом меня ткнуть можно? што к чему должно, малость расжувать
зачем строка 115, если можно указать в 117 время импульса?