Почему светодиодное состояние ведет себя по-другому?
Я хотел, чтобы датчик был высоким, когда я нажимаю кнопку, но когда 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);
}
@Sabri73, 👍1
Обсуждение0
Смотрите также:
- Реализовать связь Visible Light с помощью Arduino
- Количество мигающих светодиодов с датчиком LDR
- Скетч мигания ESP8266 не мигает светодиодом
- KY-022 ИК-приемник, светодиод всегда горит, нет выхода
- Как установить таймеры, используя миллисекунды на 3 датчиках PIR?
- Одновременное использование двух датчиков с задержкой
- Затухание светодиода с помощью петли геркона
- Как я могу объединить эти два кода в одной программе? И используйте его в приложении javafx
А как насчет кнопки? Вы подключили кнопку к "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