我如何在 Arduino 中使用串行监视器给出像我的名字这样的词,"DASH" 并且只让 LED 闪烁?
How do I use Serial Monitor in Arduino to give word like my name, "DASH" and only that to blink an LED?
所以,我手头有一个任务,那就是使用一个词,比如我的名字“DASH”作为 Arduino 串行监视器的输入,这样 ESP32-WROOM-32 中的 LED 就会闪烁,否则,它惯于。我是 Arduino 方面的新手,非常感谢任何指导,即使信息可能很少,请随意。
我使用的是 ESP32-WROOM-32 模块,没有外部 LED,模块本身会闪烁蓝色。
这是我尝试过的方法:
String incomingString;
int LED_BUILTIN=2;
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
if (Serial.available()>0)
{
String incomingString=Serial.readString();
Serial.println("Enter 'Dhaval' to blink thy LED in hue of blue!");
if (incomingString=="Dhaval"){
Serial.println("You have entered 'Dhaval', needless to say enjoy the beautiful baby blue LED.");
digitalWrite(LED_BUILTIN, HIGH);
}
else
{
Serial.println("Seems that you've entered anything else but Dhaval, please just enter 'Dhaval'.");
}
}
}
我知道在这段代码中最好使用 for 循环和 if 条件让它一次获取每个字符一次,但不确定如何实现,而且我觉得它可能只需使用这个定义的字符串,当我开始阅读关于我输入的内容的条目并使用 Serial.print 命令打印它时,它显示完全相同的字符串。
我还考虑过使用上面提到的循环,每轮给它们输入参数作为 ASCII 值并确认它,然后让最终输出说出整个单词 DASH,并且只有在验证时才让 LED眨眼
提前致谢。
因此,在仔细阅读和了解有关 Arduino 和串口监视器的更多信息后,我准备好说问题不是代码,事实上它很好。
问题出在我和显示输出选项的串口监视器上。它应该是“没有换行符”,在我的例子中它一直是“换行符”,这使得用户输入的字符串向输入的字符串添加新行,增加了字符串的长度。
这是代码,鉴于串行监视器输出的设置已更改为“无行结束”,它工作得很好:
#include
String s1;
String s2("Dhaval");
int LED_BUILTIN=2;
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
if (Serial.available()>0)
{
String s1=Serial.readString();
Serial.println("Enter 'Dhaval' to blink thy LED in hue of blue!");
Serial.println(s1);
if (s1.equals(s2)){
Serial.println("You have entered 'Dhaval', needless to say enjoy the beautiful baby blue LED.");
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
else
{
Serial.println("Seems that you've entered anything else but Dhaval, please just enter 'Dhaval'.");
}
}
}
希望有一天能对某人有所帮助。如果你想使用“换行符”,那么输入的字符串将比原来的意图多出一些长度,在这种情况下,你可以通过字符串的 .trim 函数 trim 字符串。没问题。
所以,我手头有一个任务,那就是使用一个词,比如我的名字“DASH”作为 Arduino 串行监视器的输入,这样 ESP32-WROOM-32 中的 LED 就会闪烁,否则,它惯于。我是 Arduino 方面的新手,非常感谢任何指导,即使信息可能很少,请随意。
我使用的是 ESP32-WROOM-32 模块,没有外部 LED,模块本身会闪烁蓝色。
这是我尝试过的方法:
String incomingString;
int LED_BUILTIN=2;
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
if (Serial.available()>0)
{
String incomingString=Serial.readString();
Serial.println("Enter 'Dhaval' to blink thy LED in hue of blue!");
if (incomingString=="Dhaval"){
Serial.println("You have entered 'Dhaval', needless to say enjoy the beautiful baby blue LED.");
digitalWrite(LED_BUILTIN, HIGH);
}
else
{
Serial.println("Seems that you've entered anything else but Dhaval, please just enter 'Dhaval'.");
}
}
}
我知道在这段代码中最好使用 for 循环和 if 条件让它一次获取每个字符一次,但不确定如何实现,而且我觉得它可能只需使用这个定义的字符串,当我开始阅读关于我输入的内容的条目并使用 Serial.print 命令打印它时,它显示完全相同的字符串。
我还考虑过使用上面提到的循环,每轮给它们输入参数作为 ASCII 值并确认它,然后让最终输出说出整个单词 DASH,并且只有在验证时才让 LED眨眼
提前致谢。
因此,在仔细阅读和了解有关 Arduino 和串口监视器的更多信息后,我准备好说问题不是代码,事实上它很好。
问题出在我和显示输出选项的串口监视器上。它应该是“没有换行符”,在我的例子中它一直是“换行符”,这使得用户输入的字符串向输入的字符串添加新行,增加了字符串的长度。
这是代码,鉴于串行监视器输出的设置已更改为“无行结束”,它工作得很好:
#include
String s1;
String s2("Dhaval");
int LED_BUILTIN=2;
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
if (Serial.available()>0)
{
String s1=Serial.readString();
Serial.println("Enter 'Dhaval' to blink thy LED in hue of blue!");
Serial.println(s1);
if (s1.equals(s2)){
Serial.println("You have entered 'Dhaval', needless to say enjoy the beautiful baby blue LED.");
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
else
{
Serial.println("Seems that you've entered anything else but Dhaval, please just enter 'Dhaval'.");
}
}
}
希望有一天能对某人有所帮助。如果你想使用“换行符”,那么输入的字符串将比原来的意图多出一些长度,在这种情况下,你可以通过字符串的 .trim 函数 trim 字符串。没问题。