我目前正在使用 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
,但这些都不起作用。