arduino无法正确运行无反应求帮助

arduino无法正确运行无反应求帮助


int val;//接收串口发送过来的值
int led = 13;//13号引脚为Arduino板载的LED

void setup() {
  Serial.begin(9600);//设置波特率
  Serial.println("请输入你要发送的数据:");//提示字符
  pinMode(led,OUTPUT);//设置led管脚为输出模式
}

void loop() {
    //读取电脑传来的数据
     val=Serial.read();//读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val。
 
     
     if(val=="a"){//如果发送过来的指令是“open”,则打开LED
      Serial.println("扫描中"+val);
       digitalWrite(led,HIGH);
       Serial.println("LED已经点亮!");
      //led持续亮1秒
     }
     
     if(val=='b'){//如果发送过来的指令是“close”,则关闭LED
       digitalWrite(led,LOW);
       Serial.println("LED已经熄灭!");
     }
     if(val=='R'){//判断接收到的指令或字符是否是“R”。//如果接收到的是“R”字符
    digitalWrite(led,HIGH);//点亮数字13 口LED。
    delay(500);
    digitalWrite(led,LOW);//熄灭数字13 口LED
    delay(500);
    Serial.println("Hello World!");//显示“Hello World!”字符串
  }

   //清空,重新读取
}

你的Arduino代码有几个小错误需要修正。首先,Serial.read()函数返回的是一个字节(int类型),而不是一个字符串。你不能直接将其与字符串比较,例如if(val=="a")这样的代码是不对的,你需要与字符进行比较,如if(val=='a')

其次,你需要确保Serial.read()真正读取到了数据。如果没有可用数据,Serial.read()会返回-1。因此,你需要在读取数据之前检查Serial.available(),这个函数会返回可用数据的字节数。

以下是修改后的代码:

int val;
int led = 13;

void setup() {
  Serial.begin(9600);
  Serial.println("请输入你要发送的数据:");
  pinMode(led,OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
    val = Serial.read();

    if (val == 'a') {
      digitalWrite(led, HIGH);
      Serial.println("LED已经点亮!");
    }

    if (val == 'b') {
      digitalWrite(led, LOW);
      Serial.println("LED已经熄灭!");
    }

    if (val == 'R') {
      digitalWrite(led, HIGH);
      delay(500);
      digitalWrite(led, LOW);
      delay(500);
      Serial.println("Hello World!");
    }
  }
}

这个修正版本的代码应该能够正常工作。如果你的Arduino仍然没有反应,那么可能是你的硬件连接有问题,或者你的Arduino IDE环境有问题。你需要检查你的硬件和软件设置,确保一切正常。