我有一个简单的arduino代码:
void loop()
{
if serial.available
{
c = serial.read();
if (c == 'a')
{
blinkled();
}
else
offled();
}
}
如果我发送一个角色'它应该发光led。
当循环进入下一个循环时,当我不提供任何东西时它就会消失。
但是一旦我给出了'它开始发光,永远不会消失。
是否正在阅读char' a'从缓冲区? 如果是的话那么如何清除呢?
Serial.flush()无效。
请提出任何想法。 我是arduino的新手。 抱歉,如果它很傻。
答案 0 :(得分:1)
您可以使用以下内容:
void loop() {
while (Serial.available() > 0)
{
char received = Serial.read();
inData += received;
// Process message when new line character is received
if (received == '\n')
{
Serial.print("Arduino Received: ");
Serial.print(inData);
// You can put some if and else here to process the message juste like that:
if(inData == "a\n"){ // DON'T forget to add "\n" at the end of the string.
Serial.println("OK, I'll blink now.");
blinkled();
}
else if (inData == "b\n") {
offled();
}
inData = ""; // to flush the value.
}
}
}
编辑:我已根据正确答案修改了我的答案。
答案 1 :(得分:1)
您已将您的offled函数置于Serial.available()路径中。您只能通过Serial.available()将其关闭为true并且您推送一个不同的字符,以便它读取除' a'
之外的其他内容不幸的是,上面的例子犯了同样的错误。
构造它以使led在if语句
之外关闭