Почему светодиодное состояние ведет себя по-другому?

arduino-uno sensors led sketch coding-standards

Я хотел, чтобы датчик был высоким, когда я нажимаю кнопку, но когда digitalRead делает низкий, светодиод включается, когда он делает высокий, светодиод гаснет. В то время как когда digitalRead высокий, разве он не должен включить светодиод?

int pirPin = 8;
int ledPin = 13;
int state;
unsigned long previousMillis = 0;        // сохранит, когда последний раз светодиод был обновлен
const long interval = 1000;

void setup() {
  pinMode(pirPin, INPUT);
  pinMode(ledPin, OUTPUT);

}

void loop() {

  unsigned long currentMillis = millis();
  state = digitalRead(pirPin);
  Serial.println(durum);

  if (state == HIGH) {
    previousMillis = currentMillis;
     }
    if (currentMillis - previousMillis >= interval) {
      digitalWrite(ledPin, LOW);
    }
    else
      digitalWrite(ledPin, HIGH);
  }

, 👍1

Обсуждение

А как насчет кнопки? Вы подключили кнопку к "pirPin" или датчик PIR?, @chrisl

"разве он не должен включить светодиод?" - откуда нам это знать? Это твой код. Вы скажете нам, что он должен делать. Если вы хотите, чтобы индикатор продолжал работать, код неверен., @Thomas Weller

Таким образом, загорается светодиод.Но я не понимаю, почему светодиод включается, когда я делаю низкий, @Sabri73

@ christl. да, я подключился.код уже работает таким образом.Мне интересно, почему светодиод загорается, когда он низкий, @Sabri73

Вероятно, потому что он подключен так, что он загорается, когда выход низкий, например, если поместить светодиод между положительным источником питания и выходным выводом (с резистором между ними)., @StarCat

Проверьте это [link](https://randomnerdtutorials.com/electronics-basics-how-do-rgb-leds-work/#:~:text=Common%20Anode%20and%20Common%20Cathode%20RGB%20LEDs&text=In%20a%20common%20cathode%20RGB,cathode%20or%20one%20common%20anode.). Светодиод может быть обычным анодным светодиодом, @Sony

Пожалуйста, предоставьте схему или электрическую схему вашей схемы. И, пожалуйста, лучше опишите свою проблему. Какого поведения вы ожидали? Что же на самом деле произошло? В настоящее время я вас не понимаю. "Я делаю это низко" на самом деле не является полезным описанием того, что вы делаете, @chrisl

Ваш код немного запутан. Вы регистрируете значение чего-то, называемого "твердым", но никогда не определяете его. У вас есть оператор if " если (состояние == ВЫСОКОЕ)", который влияет только на значение "Предыдущий миллиметр", несмотря на вводящий в заблуждение отступ. Похоже, что нажатие на "пирПин" приведет к тому, что ваш светодиодный контакт будет поднят высоко на 1 секунду., @Duncan C

Я предлагаю вам проверить свой "{} "в разделе" если(состояние==ВЫСОКОЕ)", они, вероятно, ошибаются. Вам лучше последовательно использовать эти скобки: хотя они вам не понадобятся ни в одной из этих трех линий, вы используете их в первых двух, но не используете их в последней., @Sim Son

Банкомат, вы обновляете метку времени, если нажата кнопка. Затем, если метка времени истек, вы выключаете индикатор, в противном случае он включается. Это должно вести себя следующим образом: когда кнопка нажата, светодиод должен включиться, через секунду после того, как кнопка отпущена, светодиод выключается. Как уже отмечалось, все это зависит от того, как подключена ваша кнопка., @Sim Son

Спасибо всем вам, я позаботился об этой проблеме, @Sabri73