Как передать строку по bluetooth?

Тема в разделе "Arduino & Shields", создана пользователем Arny, 21 фев 2020.

Метки:
  1. Arny

    Arny Нуб

    Всем привет!
    Столкнулся с вот таким парадоксом:
    Имею Bluetooth модуль HC-05 который цепляется и отправляет команды на Bluetooth relay.
    Так вот, если отправлять команду через Serial.read() , то все работает как надо.
    А вот отправляю программно
    char* str="A0............B0..............c0........D............e0";
    BTSerial.write(str);
    , реле команду принимает, но не реагирует.
    Помогите пожалуйста.
     
  2. NikitOS

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

     
  3. Arny

    Arny Нуб

    На print() тоже не реагирует. Возможно преобразовать строку в серию байтов. и так отправить?
     
  4. akl

    akl Гуру

    а скетч секретный?
     
  5. Arny

    Arny Нуб

    Вот так если через порт ввести строку A0............B0..............c0........D............e0 - все работает.
    Код (C++):

    #include <SoftwareSerial.h>
    SoftwareSerial BTSerial(52, 53);
    void setup(){
      Serial.begin(38400);
      BTSerial.begin(38400); // HC-05 default speed in AT command more
    }
    void loop(){   if (BTSerial.available())
       Serial.write(BTSerial.read());
       if (Serial.available())
       BTSerial.write(Serial.read());
    }
     

    А вот так нет:
    Код (C++):
    #include <SoftwareSerial.h>
    SoftwareSerial BTSerial(52, 53);
    String str;
    void setup(){
      Serial.begin(38400);
      BTSerial.begin(38400);
      str="A0............B0..............c0........D............e0";
    }
    void loop(){
      BTSerial.print(str);
      delay(2000);
    }
     
  6. akl

    akl Гуру

    уверен что скорость 38400?
    проверь командой AT+UART?\r\n
     
  7. Arny

    Arny Нуб

    Да, 38400. на этой скорости команды через монитор порта принимаются
     
  8. fogary

    fogary Гик

    В смысле через монитор порта? Символ окончания строки выбран? Если да, может его не хватает во втором примере?