Контакт ARDUINO постоянно меняется с ВЫСОКОГО НА НИЗКОЕ? - PullRequest
0 голосов
/ 12 марта 2019

Я использовал этот код для проверки состояния вывода Arduino 8. Чтобы узнать, является ли вывод высоким или низким, но мой выход постоянно меняется с высокого на низкий.

Я не подключаю что-либо к выводу 8, показапустить этот код.

const int Pin = 8; 
int Reading=0;

void setup() {
  Serial.begin(9600);
  delay(2000);
  pinMode(Pin, INPUT); 
}

void loop() {
  Reading = digitalRead(Pin); 
  if(Reading == HIGH)
  {
    Serial.println("HIGH");
    delay(2000);
  }

  if(Reading == LOW)
  {
    Serial.println("LOW");
    delay(2000);
  }

}

Но мой вывод выглядит так: ВЫХОД:

HIGH
HIGH
LOW
LOW
HIGH
HIGH
LOW
LOW
HIGH
HIGH
LOW
LOW
HIGH
HIGH
LOW
LOW

Не знаю, что делать ??

Ответы [ 2 ]

5 голосов
/ 13 марта 2019

Это правильное поведение.

Поскольку вы не подключаете вывод, чтение должно быть неопределенным (это означает, что оно нестабильно).Проверьте «плавающее» состояние , чтобы узнать больше.

Если вы хотите сделать его стабильным, рассмотрите возможность использования внутреннего подтягивающего резистора.Измените строку

pinMode (Pin, INPUT);

на

pinMode (Pin, INPUT_PULLUP);

, чтобы он всегда был ВЫСОКИМ, когда отключен.В этом случае вы должны учитывать внутреннее сопротивление подтягиванию, когда вы фактически пытаетесь подключить контакт.

Официальная документация Arduino предоставляет более подробные описания для каждого состояния GPIO.

0 голосов
/ 14 марта 2019

Поскольку внутренние подтяжки слабые, иногда добавление

pinMode (Pin, INPUT_PULLUP);

не решит проблему, поэтому вам нужно добавить сопротивление 10K или выше между контактом и землей/ power для первоначального подъема или опускания штифта.

...