Loops ArduinoUno R3运行连续例程并在例程循环中更新
大家好,谢谢你们看我的帖子。我正在努力实现以下目标,我正在寻找完成任务的最佳方法 我有一个重量传感器输入和一个LED输出,当施加更多重量时闪烁得更快。我已经使用一个简单的if-else循环完成了这项工作。请参阅下面的代码部分 lpin是灯光输出引脚的变量。 WeightMeasure()是我的函数,它返回以磅为单位的重量 代码 结束代码 此代码意味着在传感器上施加的重量减少时闪烁更多。虽然这是可行的,但它有一个重大缺陷。我已经设置了与每个IF-ELSE语句中的每个权重范围对应的闪烁延迟。这不允许实时更新。例如,如果对传感器施加一个20磅的项目,它将再次延迟采样重量800毫秒。当重量超过20磅时,我希望在眨眼之间获得适当的时间长度,但如果重量从21磅快速下降到19磅,我希望它立即突破800毫秒的等待延迟,并以适当的更快间隔开始眨眼。有人想过如何最好地实现这一点吗?我可能完全错了,但我用的是我对编程的基本理解。一个例子或最好的方法和解释会很有帮助,因为我只是一个初学者。如果有什么不清楚的地方,请询问 干杯Loops ArduinoUno R3运行连续例程并在例程循环中更新,loops,arduino,Loops,Arduino,大家好,谢谢你们看我的帖子。我正在努力实现以下目标,我正在寻找完成任务的最佳方法 我有一个重量传感器输入和一个LED输出,当施加更多重量时闪烁得更快。我已经使用一个简单的if-else循环完成了这项工作。请参阅下面的代码部分 lpin是灯光输出引脚的变量。 WeightMeasure()是我的函数,它返回以磅为单位的重量 代码 结束代码 此代码意味着在传感器上施加的重量减少时闪烁更多。虽然这是可行的,但它有一个重大缺陷。我已经设置了与每个IF-ELSE语句中的每个权重范围对应的闪烁延迟。这不允许
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");
}