Управление светодиодом с помощью Bluetooth-модуля HC-06

Тема в разделе "Проводная и беспроводная связь", создана пользователем Ricochet, 16 окт 2016.

  1. Ricochet

    Ricochet Нуб

    Здравствуйте. Никак не могу понять, каким все-таки образом можно включать/выключать светодиод на 13-м пине платы путем отправления ТЕКСТОВЫХ команд через терминал на Android. Есть программа для управления светодиодом цифрами "1" (вкл) и "0" (выкл). Однако мне необходимо управлять светодиодом именно текстовыми командами, например, "ON" и "OFF". Может кто-нибудь с этим помочь? Заранее благодарен.
     
  2. rkit

    rkit Гуру

    Так же, как и цифрами, только проверять последовательно буквы.
     
  3. Limoney

    Limoney Гик

    Зачем отправлять два байта? Лучше один байт
     
  4. shpock

    shpock Гик

    Можно так вот например, хоть целые предложения посылайте
    Код (C++):
    boolean StringMessage = false; //  если есть строка
    String currStr;
    char currSymb;

    void setup() {
      pinMode(13, OUTPUT);
      Serial.begin(9600);   // инициализация порта com
    }

    void loop()
    {
      if (Serial.available())
      {
        currSymb = Serial.read(); // читаем
        if ('\n' != currSymb) currStr += String(currSymb); //
        if ('\r' == currSymb && currStr != "\r")
        {
          StringMessage = true; // есть строка
          Serial.print("Command is: "); //
          Serial.println(currStr); //
          currStr.trim();
        }
      }
      if (StringMessage)
      { // якщо є строка
        if (currStr.startsWith("ON")) digitalWrite(13, 1); //
        else if (currStr.startsWith("OFF")) digitalWrite(13, 0); //
        StringMessage = false;
        currStr = "";
      }
    }
     
    Ricochet нравится это.
  5. Ricochet

    Ricochet Нуб

    Благодарю вас!
     
  6. Mihay

    Mihay Гик

    Предложенный выше код хорош, но я бы внес свое предложение. В коде
    Код (C++):
        currSymb = Serial.read(); // читаем
        if ('\n' != currSymb) currStr += String(currSymb); //
    я добавил еще одно условие:
    Код (C++):
        currSymb = Serial.read(); // читаем
        if (('\n' != currSymb)&&('\r' != currSymb)) currStr += String(currSymb); //
    Это добавление я сделал потому что на самом деле мы получаем не ON или OFF, а ON\r или OFF\r. Это актуально если мы ждем какое нибудь число, тогда символ \r не даст перевести строку в число (будут ошибки при работе скетча или ПО)
     
    Ricochet нравится это.