c - 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() {
}
解决方案
正如setup
("// 将您的设置代码放在这里,运行一次:" 中的注释所述,该代码将只执行一次,因此当您准备好“输入输入”时,将不会有任何代码运行到阅读。
因此,您肯定需要做的一件事就是迁移 dispColor
到loop
.
还有几个错误:
- 您正在将 char 与 String 进行比较
- 您应该将参数传递给
dispColor
,而不是从其中读取 dispColor
如果有可用的输入,您可能应该只打电话。
看看https://www.arduino.cc/reference/en/language/functions/communication/serial/read/开始吧!
推荐阅读
- spring - 我在 Spring 应用程序上的 @Scheduled 任务未在 Heroku 上执行
- postgresql - PostgreSQL 12 中是否可以使用自定义域数组?
- affinity - 在 zig 中设置线程的核心亲和性
- sql - 如何添加比较 ON CONFLICT () DO UPDATE
- git - 如何在 git --skip-worktree 之后拉取?
- django - 如何为 Django Rest Framework 中的视图集上的自定义操作编写测试
- php - 如何使用 PHP 在 Excel 中导出 HTML 页面
- kubernetes - 从 helm 图表为 AWS 网络负载均衡器配置粘性会话
- css - 如何通过强制文本溢出使简单的预代码片段响应?
- windows - 如何用gnu替换win10的“ls”命令?