昨天我开始在Arduino上使用我的LoRa模块。我使用示例草图来了解它们的工作原理。现在我想检查接收到的值来做某些事情,比如打开和关闭LED。
我的问题是接收到的值与LoRa库的原始示例草图是正确的,但是一旦我尝试将它们存储在变量中就会开始变得不正确。
这是我为获取接收值而编写的代码。
#include <SPI.h>
#include <LoRa.h>
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Receiver");
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop() {
// try to parse packet
int packetSize = LoRa.parsePacket();
if (packetSize) {
// received a packet
Serial.print("Received packet '");
byte buffer[packetSize];
int index = 0;
// read packet
while (LoRa.available()) {
Serial.println((char)LoRa.read());
buffer[index] = LoRa.read();
index++;
}
char result = char(buffer);
Serial.println(result);
}
}
注意:不是我的代码的所有内容。我部分采用示例草图来帮助我。
控制台输出如下所示:
Received packet '3' with RSSI -73
⸮
Received packet '4' with RSSI -85
⸮
Received packet '5' with RSSI -84
⸮
...
Received packet '8' with RSSI -83
⸮
Received packet '9' with RSSI -83
⸮
Received packet '1' with RSSI -82
⸮
发件人没有什么特别的,但最多可以计算16,然后从头开始。这只是一项非常基本的任务,但由于我对这项技术不是很熟悉,所以我不明白如何让它发挥作用。这意味着我得到的是价值而不是'?'。第二个问题是大于10的数字缩小为1。
我希望你能给我一些建设性的帮助,或者至少暗示我如何才能做到这一点。
答案 0 :(得分:0)
char result = char(buffer);
Serial.println(result);
您正在打印char
,而不是小数值。所以是的,期望有单字节奇怪的字符。
uint8_t result = char(buffer);
Serial.println(result);
会给你一个良好的开端。