利用串口中断实现,当串口发送1食堂,灯亮,发送其他数值,灯灭
时间: 2024-01-07 22:03:31 浏览: 32
好的,这是一个比较简单的串口中断控制灯的应用。我可以提供 C++ 代码示例:
```
const int LED_PIN = 13; // 灯的引脚号
String inputString; // 用于接收串口数据的字符串
void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
Serial.println("Serial communication started");
inputString.reserve(10); // 预留 10 字节空间用于接收数据
}
void loop() {
// 不需要执行任何操作,因为我们利用串口中断处理数据
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n') { // 收到换行符表示一条完整的消息
// 检查输入的字符串是否为 "1食堂"
if (inputString.equals("1食堂\n")) {
digitalWrite(LED_PIN, HIGH); // 点亮 LED
} else {
digitalWrite(LED_PIN, LOW); // 关闭 LED
}
inputString = ""; // 清空输入字符串,等待下一条消息
}
}
}
```
这段代码的逻辑很简单,就是利用 `serialEvent()` 函数来处理串口数据。当收到数据时,将其添加到 `inputString` 字符串中,如果收到换行符,就表示一条完整的消息,然后检查字符串是否为 "1食堂",如果是,就点亮 LED,否则关闭 LED。最后清空 `inputString`,等待下一条消息的到来。