以下是一个示例代码,演示如何在Arduino / DigiSpark / ATtiny85上接收和解析多个数据片段:
#include
const int RX_PIN = 0; // 用于接收数据的引脚
const int BAUD_RATE = 9600; // 串口波特率
SoftwareSerial serial(RX_PIN, -1); // 创建一个软件串口对象
void setup() {
Serial.begin(BAUD_RATE); // 初始化硬件串口
serial.begin(BAUD_RATE); // 初始化软件串口
}
void loop() {
if (serial.available()) {
String data = serial.readStringUntil('\n'); // 读取一行数据
Serial.print("Received data: ");
Serial.println(data);
// 解析数据
if (data.startsWith("A")) {
// 处理类型 A 的数据
int value = data.substring(1).toInt();
Serial.print("Type A data: ");
Serial.println(value);
} else if (data.startsWith("B")) {
// 处理类型 B 的数据
float value = data.substring(1).toFloat();
Serial.print("Type B data: ");
Serial.println(value);
}
}
}
在上述代码中,我们使用了SoftwareSerial
库来创建一个软件串口对象,该对象用于接收数据。我们在setup()
函数中初始化了硬件串口和软件串口,并在loop()
函数中通过serial.available()
检查是否有数据可用。如果有可用数据,我们使用serial.readStringUntil('\n')
读取一行数据,然后将其打印出来。
接下来,我们根据数据的类型进行解析。如果数据以字母“A”开头,我们将其视为类型 A 的数据,并将其余部分转换为整数。如果数据以字母“B”开头,我们将其视为类型 B 的数据,并将其余部分转换为浮点数。我们将解析后的数据打印出来。
请注意,此示例中使用的是软件串口对象,因为ATtiny85只有一个硬件串口,用于与计算机通信。如果您使用的是Arduino UNO或其他具有多个硬件串口的板子,则可以直接使用硬件串口对象进行通信。