Arduino中整数到整数的ASCII
ASCII of integer to integer in Arduino
我正在使用 LoRa 和 Arduino 进行一个项目,我遇到了一个奇怪的问题,当我传输一个整数时,接收器接收到的 ASCII 值不适合我的情况,因为我想传输传感器数据 (3数字),这是 ASCII 无法实现的。我还将附上我的代码(转换为用于测试的基本整数代码)我需要一个解决方案来解决这个顺便说一句,我使用 Arduino UNO 进行传输,使用 Arduino Mega 进行接收,使用 SX1278 LoRa 模块进行传输和接收。
发射器代码(Arduino UNO):
#include <SPI.h>
#include <LoRa.h>
int val = 5;
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Sender");
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop() {
Serial.print("Sending packet: ");
// send packet
LoRa.beginPacket();
LoRa.print(val);
LoRa.endPacket();
delay(500);
}
接收代码(Arduino Mega):
#include <SPI.h>
#include <LoRa.h>
#define LORA_SS 53
#define LORA_RST 9
#define LORA_DIO0 8
int val;
void setup() {
pinMode(LORA_SS, OUTPUT);
digitalWrite(LORA_SS, HIGH);
LoRa.setPins(LORA_SS, LORA_RST, LORA_DIO0);
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 '");
// read packet
while (LoRa.available()) {
//Serial.print((char)LoRa.read());
int val = LoRa.read();
}
Serial.print(val);
// print RSSI of packet
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());
}
}
接收器的输出:
Received packet '53' with RSSI -5
要解决此问题,只需将值作为整数发送,因为 LoRa 在接收器中的字符串变量中接收到相同的 char/string 并使用 toInt();
将其转换为整数,这将修复它!
我正在使用 LoRa 和 Arduino 进行一个项目,我遇到了一个奇怪的问题,当我传输一个整数时,接收器接收到的 ASCII 值不适合我的情况,因为我想传输传感器数据 (3数字),这是 ASCII 无法实现的。我还将附上我的代码(转换为用于测试的基本整数代码)我需要一个解决方案来解决这个顺便说一句,我使用 Arduino UNO 进行传输,使用 Arduino Mega 进行接收,使用 SX1278 LoRa 模块进行传输和接收。
发射器代码(Arduino UNO):
#include <SPI.h>
#include <LoRa.h>
int val = 5;
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Sender");
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop() {
Serial.print("Sending packet: ");
// send packet
LoRa.beginPacket();
LoRa.print(val);
LoRa.endPacket();
delay(500);
}
接收代码(Arduino Mega):
#include <SPI.h>
#include <LoRa.h>
#define LORA_SS 53
#define LORA_RST 9
#define LORA_DIO0 8
int val;
void setup() {
pinMode(LORA_SS, OUTPUT);
digitalWrite(LORA_SS, HIGH);
LoRa.setPins(LORA_SS, LORA_RST, LORA_DIO0);
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 '");
// read packet
while (LoRa.available()) {
//Serial.print((char)LoRa.read());
int val = LoRa.read();
}
Serial.print(val);
// print RSSI of packet
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());
}
}
接收器的输出:
Received packet '53' with RSSI -5
要解决此问题,只需将值作为整数发送,因为 LoRa 在接收器中的字符串变量中接收到相同的 char/string 并使用 toInt();
将其转换为整数,这将修复它!