#1 2020-04-03 00:29:27

Рамиль
Участник
Зарегистрирован: 2020-04-03
Сообщений: 10

Остановить машинку, если Bluetooth пропадает

Здравсвуйте!

Сделал машинку с управлением по Bluetooth со смартфона, с помощью приложения из App inventor. Простая машинка, таких в интернете очень много описывают - Arduino, драйвер моторов, Bluetooth модуль и моторы.

Вопрос такой: как сделать так, чтобы машинка останавливалась. если соединение с Bluetooth пропадает?  Сейчас, если, например, нажать на кнопку, чтобы ехать вперёд, и если вдруг в этот момент соединение с Bluetooth  упадёт, машина продолжает ехать, пока не врежется в первое препятствие.

Вот скетч. Если понадобятся дополнительные данные, то предоставляю. Объясните, пожалуйста, подробнее, как это сделать. У меня пока весьма базовые знания.

int motorRight1 = 2;       // Правый мотор.
int motorRight2 = 4;
int enableRight = 3;

int motorLeft1 = 6;        // Левый мотор.
int motorLeft2 = 7;
int enableLeft = 5;

int control;               // Управление двигателями.
int motorSpeed;            // Управление скоростью.

void setup() {
  pinMode (motorRight1, OUTPUT);
  pinMode (motorRight2, OUTPUT);
  pinMode (enableRight, OUTPUT);

  pinMode (motorLeft1, OUTPUT);
  pinMode (motorLeft2, OUTPUT);
  pinMode (enableLeft, OUTPUT);

  Serial.begin (9600);
}

void loop()
{
  if (Serial.available()) {
    control = Serial.read();

    /*********************** Скорость ***********************/
    switch (control) {
      case '1': motorSpeed = 120; break;
      case '2': motorSpeed = 180; break;
      case '3': motorSpeed = 250; break;

      /*********************** Направление ***********************/
      case 'W': rightWheelForward (); leftWheelForward ();  break;   // Вперёд.
      case 'S': rightWheelBack ();    leftWheelBack ();     break;   // Назад.
      case 'E': rightWheelStop ();    leftWheelForward ();  break;   // Направо вперёд.
      case 'Q': leftWheelStop ();     rightWheelForward (); break;   // Налево вперёд.
      case 'D': rightWheelStop ();    leftWheelBack ();     break;   // Направо назад.
      case 'A': leftWheelStop ();     rightWheelBack ();    break;   // Налево назад.
      case 'P': rightWheelStop ();    leftWheelStop ();     break;   // Стоп.
    }
  }
}

/*********************** Функции колёс ***********************/

void rightWheelForward () {               // Правое колесо вперёд.
  digitalWrite (motorRight1, LOW);
  digitalWrite (motorRight2, HIGH);
  analogWrite(enableRight, motorSpeed);
}

void leftWheelForward () {                // Левое колесо вперёд.
  digitalWrite (motorLeft1, LOW);
  digitalWrite (motorLeft2, HIGH);
  analogWrite(enableLeft, motorSpeed);
}

void rightWheelBack () {                  // Правое колесо назад.
  digitalWrite (motorRight1, HIGH);
  digitalWrite (motorRight2, LOW);
  analogWrite(enableRight, motorSpeed);
}

void leftWheelBack () {                   // Левое колесо назад.
  digitalWrite (motorLeft1, HIGH);
  digitalWrite (motorLeft2, LOW);
  analogWrite(enableLeft, motorSpeed);
}

void rightWheelStop () {                  // Правое колесо остановить.
  digitalWrite (motorRight1, LOW);
  digitalWrite (motorRight2, LOW);
  analogWrite(enableRight, 0);
}

void leftWheelStop () {                   // Левое колесо остановить.
  digitalWrite (motorLeft1, LOW);
  digitalWrite (motorLeft2, LOW);
  analogWrite(enableLeft, 0);
}

#2 2020-04-03 08:07:44

vvr
Участник
Зарегистрирован: 2015-04-12
Сообщений: 672

Re: Остановить машинку, если Bluetooth пропадает

на hc-05 и hc-06 (про другие не знаю) есть выход STATE.
он показывает что соединение установлено.
поиграйтесь с ним.

#3 2020-04-04 21:08:06

Рамиль
Участник
Зарегистрирован: 2020-04-03
Сообщений: 10

Re: Остановить машинку, если Bluetooth пропадает

vvr пишет:

на hc-05 и hc-06 (про другие не знаю) есть выход STATE.
он показывает что соединение установлено.
поиграйтесь с ним.

Беру светодиод, его плюсом соединяю в STATE, его минусом в GND. Как я понимаю, при подключенном Bluetooth светодиод должен стабильно гореть. Но он не горит. Единица на STATE Как будто не приходит.

#4 2020-04-05 07:58:24

vvr
Участник
Зарегистрирован: 2015-04-12
Сообщений: 672

Re: Остановить машинку, если Bluetooth пропадает

во первых там должно быть 3.3в.
во вторых единица может быть и когда нет соединения.
поиграйтесь....

#5 2020-04-05 23:56:15

Рамиль
Участник
Зарегистрирован: 2020-04-03
Сообщений: 10

Re: Остановить машинку, если Bluetooth пропадает

vvr пишет:

во первых там должно быть 3.3в.

Второе понял, а это поясните, пожалуйста.

Редактировался Рамиль (2020-04-05 23:56:36)

#6 2020-04-05 23:58:20

vvr
Участник
Зарегистрирован: 2015-04-12
Сообщений: 672

Re: Остановить машинку, если Bluetooth пропадает

почитайте документацию на модули.
там всё есть.

#7 2020-04-06 10:44:34

mitonn
Участник
Зарегистрирован: 2019-03-01
Сообщений: 23

Re: Остановить машинку, если Bluetooth пропадает

Похожую проблему, но на радиоуправлении решил с помощью функции "millis",которая при пропадании сигнала больше чем на 500 миллисекунд  исполняет команду "motor.write(0)" ,а при появлении сигнала с передатчика продолжает исполнять его команды.Смотри
Форум» Аппаратные вопросы» Радиоуправление на NRF24L01.

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела