Несколько операторов if и

Заранее спасибо за помощь.

Так что я работаю над датчиком давления. Идея состоит в том, что, когда датчик давления достигает определенного значения, скажем, 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.

-3

Решение

Я отредактировал код, чтобы отразить то, что вы пытаетесь сделать.

По сути, вам нужно проверить, увеличивается или уменьшается ваше давление.
Так что для этого вы можете взять два чтения и сравнить их; одно чтение берется раньше другого. Если последнее значение выше, чем предыдущее, оно увеличивается, и нет причин для тревоги.

Если последнее значение меньше предыдущего, тогда давление снижается. Так что повод для тревоги, но не только пока …

Прежде чем раздастся сигнал тревоги, должны быть выполнены ДВА условия, давление должно быть направлено вниз и давление должно быть ниже порогового значения.

кпа должно быть вниз и быть ниже порога:

(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);
}

}

Я добавил мигающий светодиод в код, потому что мигающие светодиоды просто лучше.
Я также использовал else...if заявление.

Надеюсь, это сработает.

Ура,
Ingwe.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]