多个 if 语句和

Multiple if statements and

本文关键字:语句 if 多个      更新时间:2023-10-16

提前感谢您的帮助。

所以我正在研究压力传感器。这个想法是,当压力传感器达到某个值时,比如 10,然后在达到 10 后急剧下降,激活蜂鸣器。(就像,我把我的汽车轮胎抽到 10,我想知道是否有泄漏(

只是为了我的生活不能让这件事发生。我知道我只是错过了一些很小的东西,但我会非常感谢任何帮助。

下面是我的代码:

    #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
      // These constants won't change: const int analogPin = A0;    // pin that the sensor is attached to const int ledPin = 13;       // pin that the LED is attached to const int threshold = 5;   // an arbitrary threshold level that's in the range of the analog input const int buzzer = 9;  // pin that the buzzer is connected to.
void setup() {   // initialize the LED pin as an output:   pinMode(ledPin, OUTPUT);  // initilizes the pin as an output.   pinMode(buzzer, OUTPUT); // Set buzzer - pin 9 as an output
  // initialize serial communications:   Serial.begin(9600);   lcd.begin(16, 2);   lcd.print ("Pressure in kpa"); }
void loop() {   // read the value of the pressure sensor:   float sensorValue = analogRead(analogPin);   // int kpa = (((sensorValue*5)/1024)*(120/5)-116); // 116 was subtracted to equilibrate the sensor   int kpa = ((sensorValue * 5 / 1024) * (15 / 5) * (6.894 / 1) - 10); //   // if the analog value is greater than whatever threshold we use , turn on the LED:
  if (kpa > threshold )
    {
    digitalWrite(ledPin, HIGH);
    digitalWrite(buzzer, HIGH);
    tone(buzzer, 1000); // this controls the picth of the sound. (Hz)
    delay(1000);   } else {
    digitalWrite(ledPin, LOW);
    digitalWrite(buzzer, LOW);
    noTone(buzzer);     // Stop sound...
    delay(1000);   }

  // print the analog value:   Serial.println(kpa);   delay(1);        // delay in between reads for stability   lcd.setCursor (0, 1);   lcd.print (kpa);
}
Thanks.

我已经编辑了代码以反映您要执行的操作。

基本上,您需要检查您的压力是增加还是减少。因此,为此,您可以获取两个读数并进行比较;一个读数先于另一个读数。如果最新读数高于前一个读数,则其上升,无需惊慌。

如果最新读数低于前一个读数,则压力正在下降。所以,引起警报,但不是现在...

在警报响起之前需要满足两个条件,压力需要处于下降路径,压力需要低于阈值。

KPI 必须下降且低于阈值:

(val < previous && val < threshold)

看看这是否有效,对不起,我有点匆忙,根本没有测试过:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// These constants won't change:
const int analogPin = A0;    // pin that the sensor is attached to
const int ledPin = 13;       // pin that the LED is attached to
const int threshold = 5;   // an arbitrary threshold level that's in the range of the analog input
const int buzzer = 9;  // pin that the buzzer is connected to.
int val = 0;  // store value
int previous; // previous reading
void setup()
{
  pinMode(ledPin, OUTPUT);  // initialize the LED pin as an output:
  pinMode(buzzer, OUTPUT); // Set buzzer - pin 9 as an output
  Serial.begin(9600);   // initialize serial communications:
  lcd.begin(16, 2);
  lcd.print ("Pressure in kpa");
}
void loop() {
  float sensorValue = analogRead(analogPin);   // read the value of the pressure sensor:
  int kpa = ((sensorValue * 5 / 1024) * (15 / 5) * (6.894 / 1) - 10);
  // we want to check if this is going up or down.
  previous = val;
  val = kpa;
  if (val > previous) {
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, HIGH);  // make LED flashy-flashy if its going up
    delay(1000);
  }
  else if (val < previous && val < threshold) {
    digitalWrite(ledPin, LOW); // ... and we switch off the LED
    tone(buzzer, 1000);     // WEE WAH WEE WAH WEE WAH
    delay(1000);
  }
}

我在代码中添加了一个闪烁的 LED,因为闪烁的 LED 更好。我还使用了else...if语句。

希望这会起作用。

干杯英格威。