Arduino 两个蓝牙 HC-05,在接收器上接收不同的值

问题描述 投票:0回答:0

我目前正在使用 2 个 arduino,每个都连接到一个 HC-05 模块。 我配置了 HC-05,使它们的波特率均为 9600。 我仔细检查了一个是主人,一个是奴隶。 但是,当我有条件地从发送方发送一个整数并在连接到接收方 arduino 的串行监视器上打印出这些值时,它输出不同的值。这是为什么?

发件人代码

#include <SoftwareSerial.h>

#define tx 10
#define rx 11
SoftwareSerial BT(tx, rx);

int weather;

//btn//
#define btn1 2
#define btn2 3
#define btn3 4
#define btn4 5
#define btn5 6


void setup() {
  pinMode(tx, INPUT);
  pinMode(rx, OUTPUT);

  pinMode(btn1, INPUT);
  pinMode(btn2, INPUT);
  pinMode(btn3, INPUT);
  pinMode(btn4, INPUT);
  pinMode(btn5, INPUT);
  delay(40);

  Serial.begin(9600);
  BT.begin(9600);

}



void loop() {

  BT.listen();

  if (digitalRead(btn1) == HIGH) {
    int weather = 500;
    BT.write(weather);
    Serial.println("btn1 pressed");
    delay(50);
  }


  if (digitalRead(btn2) == HIGH) {
    int weather = 600;
    BT.write(weather);
    Serial.println("btn2 pressed");
    delay(100);

  }


  if (digitalRead(btn3) == HIGH) {
    int weather = 700;
    BT.write(weather);
    Serial.println("btn3 pressed");
    delay(100);
  }


  if (digitalRead(btn4) == HIGH) {
    int weather = 800;
    BT.write(weather);
    Serial.println("btn4 pressed");
    delay(100);

  }

  if (digitalRead(btn5) == HIGH) {
    int weather = 900;
    BT.write(weather);
    Serial.println("btn5 pressed");
    delay(100);

  }
}

接收码

#include <SoftwareSerial.h>
#include <FastLED.h>


#define tx 10
#define rx 11

SoftwareSerial BT(tx, rx); // tx rx of bt
int c ;  
void setup()
{
  pinMode(tx, INPUT);
  pinMode(rx, OUTPUT);

  delay(40);
  Serial.begin(9600);
  BT.begin(9600);
}

void loop()
{

  BT.listen();
  c = BT.read();
  Serial.println(c);
  delay(50);
}

如代码所示,我应该分别接收整数 500,600,700,800 和 900。 但是当我打印出从接收器 HC-05 接收到的值时,它打印出 insted 32、188、88 和 244...

我尝试将

BT.write()
更改为
BT.println()
,还尝试将数据类型从整数更改为
uint8_t 
,但这些都不起作用。

arduino bluetooth arduino-c++ hc-05
© www.soinside.com 2019 - 2024. All rights reserved.