Увеличивать, если заявление Arduino

0

У меня есть свет, подключенный к x2 фоторезисторам, подключенным к моему Arduino. Я имею их на пределе, когда они полны, чем предел, который он выполняет.

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

Предложения и небольшая помощь будут очень признательны.

int sensorPin1 = A5;
int sensorPin2 = A4;
int ledPin2 = 7;
int ledPin1 = 8;
int moto = 12;

void setup() {
    Serial.begin(9600);
    pinMode(ledPin1, OUTPUT);
    pinMode(ledPin2, OUTPUT);
    pinMode(moto, OUTPUT);
    pinMode(sensorPin1, INPUT);
    pinMode(sensorPin2, INPUT);
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(moto, LOW);
}

int limit = 450;

void loop() {
    // read the value from the sensor:
    int sensorValue1 = analogRead(sensorPin1);
    int sensorValue2 = analogRead(sensorPin2);
    int sensorValue1a = analogRead(sensorPin1 - 2);
    int sensorValue2a = analogRead(sensorPin2 - 2);

    if (sensorValue1 > limit) {
        digitalWrite(moto, LOW);
        digitalWrite(ledPin1, LOW);
        digitalWrite(ledPin2, HIGH);
    }

    delay(0);

    if (sensorValue2 > limit) {
        digitalWrite(moto, HIGH);
        digitalWrite(ledPin1, HIGH);
        digitalWrite(ledPin2, LOW);
    }

    Serial.println(sensorValue1);
    // delay(100);
}
Теги:
arduino
arduino-uno

1 ответ

1
Лучший ответ
int sensorPin1 = A5;
int sensorPin2 = A4;
int ledPin2 = 7;
int ledPin1 = 8;
int moto = 12;
int sensorValue1last = 0;
int sensorValue2last = 0;

void setup() {
        Serial.begin(9600);
        pinMode(ledPin1, OUTPUT);
        pinMode(ledPin2, OUTPUT);
        pinMode(moto, OUTPUT);
        pinMode(sensorPin1, INPUT);
        pinMode(sensorPin2, INPUT);
        digitalWrite(ledPin1, HIGH);
        digitalWrite(ledPin2, HIGH);
        digitalWrite(moto, LOW);
}

int limit = 450;

void loop() {

    // read the value from the sensor:
    int sensorValue1 = analogRead(sensorPin1);
    int sensorValue2 = analogRead(sensorPin2);
    int sensorValue1a = analogRead(sensorPin1 - 2);
    int sensorValue2a = analogRead(sensorPin2 - 2);
    int diff1 = sensorValue1-sensorValue1last;
    int diff2 = sensorValue2-sensorValue2last;

    if ( sensorValue1 > limit || diff1 > 5 ) {
        digitalWrite(moto, LOW);
        digitalWrite(ledPin1, LOW);
        digitalWrite(ledPin2, HIGH);
        sensorValue1last = sensorValue1;
    }

    delay(0);

    if ( sensorValue2 > limit || diff2 > 5 ) {
        digitalWrite(moto, HIGH);
        digitalWrite(ledPin1, HIGH);
        digitalWrite(ledPin2, LOW);
        sensorValue2last = sensorValue2;
    }

    Serial.println(sensorValue1);
    // delay(100);

}
  • 1
    Я думал в том же духе. Возможно, используйте sensorValue1last и sensorValue2last чтобы не выходить за рамки кода ОП. И, более конкретно, установите sensorValue1last = sensorValue1 после каждой итерации.
  • 0
    У меня есть только одно значение за раз, я пытаюсь зарегистрировать значение, а затем сравнить его после изменения, а затем записать новое значение и так далее. Этот код будет сравнивать это агенты с его текущим я нет?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню