Адаптация кода под блютуз модуль

Тема в разделе "Arduino & Shields", создана пользователем verloor, 9 июл 2019.

  1. verloor

    verloor Нуб

    Всем привет, помогите пожалуйста адаптировать код под блютуз модуль "hc-05"
    Должно управляться с приложения написанного на MIT App inventor, 4 кнопки, вперёд, назад, влево, вправо.

    Код (C++):
    int buttonState = 0; //состояние кнопки

    int val;
    //подключение моторов IN - управление  EN - подключение
    int IN1 = 4;
    int IN2 = 7;
    int IN3 = 7;
    int IN4 = 7;
    int EN1 = 6;
    int EN2 = 5;
    int EN3 = 5;
    int EN4 = 5;

    int pos = 0;

    void setup()
    {
    Serial.begin(9600); // скорость передачи
    //подключение моторов на вывод информации
    pinMode(IN1, OUTPUT);
    pinMode(IN2, OUTPUT);
    pinMode(EN1, OUTPUT);
    pinMode(EN2, OUTPUT);
    pinMode(IN3, OUTPUT);
    pinMode(EN3, OUTPUT);
    pinMode(IN4, OUTPUT);
    pinMode(EN4, OUTPUT);

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

    // Задаём движение вперёд
    if (val == 'W') // При нажатии клавиши «W»
    {
    // Выводы конфигурируются согласно работе Motor Shield'а
    // Моторы крутятся вперед
    digitalWrite(EN1, HIGH);
    digitalWrite(EN2, HIGH);
    digitalWrite(EN3, HIGH);
    digitalWrite(EN4, HIGH);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, HIGH);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, HIGH);
    }

    // Задаём движение назад
    if ( val == 'S')
    {
    digitalWrite(EN1, HIGH);
    digitalWrite(EN2, HIGH);
    digitalWrite(EN3, HIGH);
    digitalWrite(EN4, HIGH);
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);
    }

    // Задаём движение вправо
    if ( val == 'D')
    {
    digitalWrite(EN1, HIGH);
    digitalWrite(EN2, HIGH);
    digitalWrite(EN3, HIGH);
    digitalWrite(EN4, HIGH);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
    }

    // Задаём движение влево
    if ( val == 'A')
    {
    digitalWrite(EN1, HIGH);
    digitalWrite(EN2, HIGH);
    digitalWrite(EN3, HIGH);
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, HIGH);
    }

    // Стоп режим
    // При отпускании клавиш в программе в порт шлется «T»
    if ( val == 'T') // При нажатии клавиши «T»
    {
    // Выводы ENABLE притянуты к минусу, моторы не работают
    digitalWrite(EN1, LOW);
    digitalWrite(EN2, LOW);
    digitalWrite(EN3, LOW);
    digitalWrite(EN4, LOW);
      }
    }
    }
     
  2. NikitOS

    NikitOS Король шутов Администратор

    А что в этом не так?
    Вам только подставить то, что отправляет Ваше приложение
     
  3. verloor

    verloor Нуб

    приложение отправляет в порт буквы, которые уже отдают сигнал на ардуино
    в итоге при подключении к блютузу, при нажатии на кнопки ничего не происходит

    Код (C++):
    // Задаём движение вперёд
    if (val == 'W') // При нажатии клавиши «W»
    {
    // Выводы конфигурируются согласно работе Motor Shield'а
    // Моторы крутятся вперед
    digitalWrite(EN1, HIGH);
    digitalWrite(EN2, HIGH);
    digitalWrite(EN3, HIGH);
    digitalWrite(EN4, HIGH);
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, HIGH);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, HIGH);
    }
     
  4. verloor

    verloor Нуб

    запитывать пробовал от юсб, от 6 батареек АА, и от аккума на 3.7 вольта
     
  5. NikitOS

    NikitOS Король шутов Администратор

    А сигнал на этих пинах вообще появляется?
     
  6. verloor

    verloor Нуб

    нет, ибо блютуз в коде никак не прописан
     
  7. verloor

    verloor Нуб

    я использую белые мотор шилды от амперки
     
  8. b707

    b707 Гуру

    он и не должен быть прописан - у вас в коде есть Сериал - этого достаточно
     
    Последнее редактирование: 10 июл 2019
    NikitOS нравится это.
  9. NikitOS

    NikitOS Король шутов Администратор

    Ну, были бы другие, я б отказал в поддержке
    Ибо нефиг покупать у китайцев, а идти к Амперке :)


    Кто захотел меня засудить за грубость? М?
     
    parovoZZ нравится это.
  10. verloor

    verloor Нуб

    Сейчас проверил всё ещё раз, теперь сигнал на пины поступает но моторы не реагируют, если их напрямую подключать к 5 вольтам и земле, они работают
     
  11. b707

    b707 Гуру

    вы бы для начала убедились, что у вас команды с блютуза поступают. Добавте в код приемника СофтСериал и выводите все пришедшее с блютуза в монитор порта. Сразу будет видно, в чем затык.

    И, стесняюсь спросить, у вас блютуз-то с телефоном спаривается?
     
  12. b707

    b707 Гуру

    и вообще, было бы неплохо написать, что за моторы, что за драйверы и выложить схему подключения