有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Arduino端口卡在满功率状态

我正在开发一个系统,当有人决定按铃或计时时,它会按铃。这还包括紧急钟声,如地震威胁或武装入侵者。武装入侵者铃响0.5秒(500毫秒),然后等待1.5秒(1500毫秒)并重复。然而,在第四个循环中,铃卡在上面,将一直保持,直到我关掉arduino。我已经尝试了很多方法试图修复它,但它不会起作用。我会把我的代码贴在下面,有人能看看有什么问题吗

谢谢大家!

Java for循环:

for(int i = 0; i < 21; i++) {
    out.write("500".getBytes("UTF-8"));
        out.flush();
    Thread.sleep(2000);
}

Arduino代码:

int Relay = 13;
//The pin that the relay is attached to
//int time;
//Creates temp variable

void setup() {
    Serial.begin(9600);
    pinMode(Relay, OUTPUT);
}

void loop() {
    while(true) {
        //Check if data has been sent from the computer:
        if (Serial.available()) {
              int time;
          //Assign serial value to temp
          time = Serial.parseInt();
          //Output value to relay

              delay(1000);
              digitalWrite(Relay, HIGH);
          delay(time);
          digitalWrite(Relay, LOW);
        }
    }
}

共 (1) 个答案

  1. # 1 楼答案

    你可以尝试在检查后和读取串行数据之前,在if循环中加入一个小的延迟(只需几毫秒。可能在开始时加入1000毫秒的延迟)。当数据以串行方式到达时,您可能会频繁地检查程序是否在接收到所有数据之前就开始读取数据

    我不知道到底是怎么回事。parseInt()可以工作,但可以尝试:

    out.write("500\n".getBytes("UTF-8"));
    

    在Java循环中