Arduino 串行命令
Arduino Serial commands
我 运行 我的 Arduino 有问题。我希望能够在 Arduino IDE 上打开我的串行监视器并能够输入类似 hello 的内容,并让 Arduino 对所谓的命令做出设置响应,这样我就可以创建一个聊天机器人说话。
这是我的代码,有人可以帮我吗?
byte byteRead;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available()) {
byteRead = Serial.read();
if(byteRead =="hello") {
Serial.println("hello freind");
}
}
您需要将串行输入视为字符串而不是字节。
尝试将您的输入变量声明为类型 String
:
String stringRead;
使用readString()
从串口读取字符串:
stringRead = Serial.readString();
并将您的比较更改为:
if(byteRead == "hello") {
至:
if (stringRead == "hello") {
除了 Serial.readString(),您还可以使用 Serial.readStringUntil()。
另外,Arduino 网站提供了一个不错的 reference 串口功能,您可能会觉得有用。
byteRead =="hello"
成真的机会太小了。尝试读取一个字符串(不仅是一个字符!)并逐个比较字符串中的字符。
// read one line
void read_line(char *buf, int max)
{
int i = 0;
while(i < len - 1) {
int c = Serial.read();
if (c >= 0) {
if (c == '\r' || c == '\n') break;
buf[i++] = c;
}
}
buf[i] = '[=10=]';
}
// compare two strings and return whether they are same
int is_same(const char *a, const char *b)
{
while (*a != '[=10=]' || *b != '[=10=]') {
if (*a++ != *b++) return 0;
}
return 1;
}
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available()) {
char stringRead[128];
read_line(stringRead, 128);
if(is_same(stringRead, "hello")) {
Serial.println("hello freind");
}
}
}
我 运行 我的 Arduino 有问题。我希望能够在 Arduino IDE 上打开我的串行监视器并能够输入类似 hello 的内容,并让 Arduino 对所谓的命令做出设置响应,这样我就可以创建一个聊天机器人说话。
这是我的代码,有人可以帮我吗?
byte byteRead;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available()) {
byteRead = Serial.read();
if(byteRead =="hello") {
Serial.println("hello freind");
}
}
您需要将串行输入视为字符串而不是字节。
尝试将您的输入变量声明为类型 String
:
String stringRead;
使用readString()
从串口读取字符串:
stringRead = Serial.readString();
并将您的比较更改为:
if(byteRead == "hello") {
至:
if (stringRead == "hello") {
除了 Serial.readString(),您还可以使用 Serial.readStringUntil()。
另外,Arduino 网站提供了一个不错的 reference 串口功能,您可能会觉得有用。
byteRead =="hello"
成真的机会太小了。尝试读取一个字符串(不仅是一个字符!)并逐个比较字符串中的字符。
// read one line
void read_line(char *buf, int max)
{
int i = 0;
while(i < len - 1) {
int c = Serial.read();
if (c >= 0) {
if (c == '\r' || c == '\n') break;
buf[i++] = c;
}
}
buf[i] = '[=10=]';
}
// compare two strings and return whether they are same
int is_same(const char *a, const char *b)
{
while (*a != '[=10=]' || *b != '[=10=]') {
if (*a++ != *b++) return 0;
}
return 1;
}
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available()) {
char stringRead[128];
read_line(stringRead, 128);
if(is_same(stringRead, "hello")) {
Serial.println("hello freind");
}
}
}