首页 > 解决方案 > Arduino代码不处理串行输出

问题描述

我正在使用 Arduino Uno 进行嵌入式系统课程。我的任务是我必须编写一个实现这些规范的函数。从用户那里获取输入('R'、'G'、'B')并显示红色、绿色或蓝色。函数名必须是 dispColor(),输入必须是 char a 并且它们是不返回的。我的代码在下面,但是每当我输入输入时,我都没有收到任何输出。我的代码中的错误在哪里?

String dispColor(char){

  char a = Serial.read();

  if (a == "R")
    Serial.print("Red");
  else if (a == "G")
    Serial.print("Green");
  else if (a == "B")
    Serial.print("Blue");

}

void setup() {
// put your setup code here, to run once:
  Serial.begin(9600);
  String dispColor();
}

void loop() {
// put your main code here, to run repeatedly:

}

我的更新代码

void dispColor(char a){
  if(Serial.available()){
        a = Serial.read();
        if(a == 'R')
        Serial.print("Red");
        else if(a == 'G')
        Serial.print("Green");
        else if(a == 'B')
        Serial.print("Blue");
    }
  }

void setup() {
    Serial.begin(9600);   
    Serial.println("Please type in R, G, or B.");
    dispColor();
}

void loop() {

}

标签: carduino

解决方案


正如setup("// 将您的设置代码放在这里,运行一次:" 中的注释所述,该代码将只执行一次,因此当您准备好“输入输入”时,将不会有任何代码运行到阅读。

因此,您肯定需要做的一件事就是迁移 dispColorloop.

还有几个错误:

  • 您正在将 char 与 String 进行比较
  • 您应该将参数传递给dispColor,而不是从其中读取
  • dispColor如果有可用的输入,您可能应该只打电话。

看看https://www.arduino.cc/reference/en/language/functions/communication/serial/read/开始吧!


推荐阅读