Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops ArduinoUno R3运行连续例程并在例程循环中更新_Loops_Arduino - Fatal编程技术网

Loops ArduinoUno R3运行连续例程并在例程循环中更新

Loops ArduinoUno R3运行连续例程并在例程循环中更新,loops,arduino,Loops,Arduino,大家好,谢谢你们看我的帖子。我正在努力实现以下目标,我正在寻找完成任务的最佳方法 我有一个重量传感器输入和一个LED输出,当施加更多重量时闪烁得更快。我已经使用一个简单的if-else循环完成了这项工作。请参阅下面的代码部分 lpin是灯光输出引脚的变量。 WeightMeasure()是我的函数,它返回以磅为单位的重量 代码 结束代码 此代码意味着在传感器上施加的重量减少时闪烁更多。虽然这是可行的,但它有一个重大缺陷。我已经设置了与每个IF-ELSE语句中的每个权重范围对应的闪烁延迟。这不允许

大家好,谢谢你们看我的帖子。我正在努力实现以下目标,我正在寻找完成任务的最佳方法

我有一个重量传感器输入和一个LED输出,当施加更多重量时闪烁得更快。我已经使用一个简单的if-else循环完成了这项工作。请参阅下面的代码部分

lpin是灯光输出引脚的变量。 WeightMeasure()是我的函数,它返回以磅为单位的重量

代码

结束代码

此代码意味着在传感器上施加的重量减少时闪烁更多。虽然这是可行的,但它有一个重大缺陷。我已经设置了与每个IF-ELSE语句中的每个权重范围对应的闪烁延迟。这不允许实时更新。例如,如果对传感器施加一个20磅的项目,它将再次延迟采样重量800毫秒。当重量超过20磅时,我希望在眨眼之间获得适当的时间长度,但如果重量从21磅快速下降到19磅,我希望它立即突破800毫秒的等待延迟,并以适当的更快间隔开始眨眼。有人想过如何最好地实现这一点吗?我可能完全错了,但我用的是我对编程的基本理解。一个例子或最好的方法和解释会很有帮助,因为我只是一个初学者。如果有什么不清楚的地方,请询问

干杯


War

花些时间查看Arduino示例中包含的示例代码。它使用经过的时间来控制LED闪烁,不会像
delay()
那样锁定其他代码的运行

还可以考虑定义一个函数来执行闪烁(更改LED引脚的状态),而不是在每个if/else子句中重复相同的代码

void setup()
{
        pinMode(lpin, OUTPUT);
}
void loop()
{
    WeightMeasure();// get the current weight in lbs

    Serial.println("The wight of the object is: ");
    Serial.print(WeightMeasure);
    Serial.println(" lbs");

    delay(100);

    //runs the if loop to turn on the LED based on weight
  if(WeightMeasure  > 20){   
      digitalWrite(lpin, LOW);
      delay(50);
      Serial.println("I'm more than 20 LBS”);
  } 
  else if(WeightMeasure > 10){
  digitalWrite(lpin, HIGH);
  delay(800);
  digitalWrite(lpin, LOW);
  delay(800);
  Serial.println("I'm less than 20lbs but more than 10lbs ");
  }
 else if(WeightMeasure > 5 ){
      digitalWrite(lpin, HIGH);
  delay(500);
  digitalWrite(lpin, LOW);
  delay(500);
  Serial.println("I'm less than 10lbs but more than 5lbs");
  } 
  else if(WeightMeasure  > 3){
      digitalWrite(lpin, HIGH);
  delay(200);
  digitalWrite(lpin, LOW);
  delay(200);
  Serial.println("I'm less than 5lbs but more than 3lbs");
  } 
  else  {
      digitalWrite(lpin, HIGH);
   Serial.println("I'm less than 3lbs");

  }