我正在使用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() {
}
答案 0 :(得分:1)
正如setup
(“ //将您的设置代码放在这里,运行一次:”中的注释所述,该代码将只执行一次,因此当您准备就绪时要“键入输入”,将没有任何代码正在运行以读取它。
因此,您肯定需要做的一件事就是将dispColor
移至loop
。
还有更多错误:
dispColor
,而不是从其中读取dispColor
。看看https://www.arduino.cc/reference/en/language/functions/communication/serial/read/开始吧!
答案 1 :(得分:0)
我知道了!
我的新代码
void setup()
{
Serial.begin(9600);
Serial.println("Please type in R, G, or B.");
}
void dispColor(char a)
{
while(!Serial.available());
a = Serial.read();
if(a == 'R')
Serial.println("Red");
else if(a == 'G')
Serial.println("Green");
else if(a == 'B')
Serial.println("Blue");
Serial.print('\n');
}
void loop() {
char a;
dispColor(a);
}