0

我想将 HC-05 蓝牙模块连接到 ESP8266,并在 if/else 语句中使用从蓝牙模块接收到的输入。

这样做时,我可以从蓝牙接收数据到串口,但是我不能使用 Arduino IDE 串口来打印字符。如果我开始蓝牙串行连接,为什么 println 不再适用于串行?

尝试了不同的波特率,不同的引脚

#include <SoftwareSerial.h>

SoftwareSerial BTserial(1, 3); // RX | TX

String reading;

void setup() 
{
    // Arduino IDE serial monitor
    Serial.begin(9600);

    Serial.println("hoihoi");
    // HC-05 default serial speed for AT mode is 38400
    BTserial.begin(9600);  

    // Wait for hardware to initialize
    delay(1000);

    // Print debug string
}

void loop()
{
  Serial.println("hoi");
   // Keep reading from HC-05 and send to Arduino Serial Monitor
   if (BTserial.available())
   {
      String reading = (String)BTserial.read();
      Serial.println(reading);

      //input from mobile is 1 AKA 10% PWM
      if(reading == "1"){
        Serial.println("Input from Bluetooth is 1");
      } 

      //input from mobile is 2 AKA 100% PWM
      else if(reading == "2") {
        Serial.println("Input from Bluetooth is 2");        
      }

      //input from mobile is 3 AKA 0% PWM
      else if(reading == "3") {
        Serial.println("Input from Bluetooth is 3");        
      }  
   }
}

我想在 if/else 语句中使用从蓝牙模块接收到的数据,并将其输出到 Serial。

但是,目前我无法将任何内容打印到 Serial。当我删除“BTserial.begin(9600);” 我可以输出到串口。

4

1 回答 1

1

几年前我也遇到过同样的问题。你几乎明白了!但引脚 1 仍被占用 'SoftwareSerial BTserial(1, 3)'

Arduino UNO 默认使用引脚 0 和 1 作为 RX、TX 与串行监视器通信。这意味着如果您将某些东西连接到这些引脚,您将无法在串行监视器上打印。

只需更改您的引脚即可解决您的问题 -> 'SoftwareSerial BTserial(2,3)'

于 2019-08-21T15:18:12.007 回答