Напряжение меняется, но цифровой поток всегда HIGH

Я разработал простой кнопочный проект Я использовал wemos D1 mini Я подключил вывод D3, чтобы снять резистор 1K.

Я использовал мультиметр для измерения напряжения на выводе D3.

Когда я нажимаю кнопку, напряжение на выводе D3 изменяется с 0.x вольт до 4.x вольт

Но цифровое считывание на D3 всегда дает ВЫСОКУЮ отдачу.

Пожалуйста, помогите мне найти проблему. Заранее спасибо

Это в моем скетче :

int ledPin = D2; // choose the pin for the LED
int inPin = D3;   // choose the input pin (for a pushbutton)
int val = 0;     // variable for reading the pin status

void setup() {

  pinMode(ledPin, OUTPUT);  // declare LED as output
  pinMode(inPin, INPUT);    // declare pushbutton as input
}

void loop(){

  val = digitalRead(inPin);  // read input value
  if (val == HIGH) {    
    digitalWrite(ledPin, LOW);  
  } else {
    digitalWrite(ledPin, HIGH);  
  }
}

, 👍5

Обсуждение

Как может быть, что вы измеряете > 4В при D3, если вы просто ** тянете вниз ** контакт. Либо вы предоставите нам схемы того, что находится в D3, либо мы не сможем сделать ничего, кроме как строить догадки, не говоря уже о том, чтобы помочь вам., @Enric Blanco

вы должны использовать режим "INPUT_PULLUP", если хотите активировать его, подключив GPIO к GND; в противном случае ваше входное состояние будет инвертировано., @dandavis


2 ответа


2

Прежде всего - прочитайте свой пост, прежде чем вы его опубликуете. Этот код невозможно прочитать. И если у вас есть проблемы с электроникой, добавьте изображение схем, как вы подключили свою плату. Там тоже могут быть проблемы.

D3 IO, 10k Подтягивающий GPIO0

Источник: https://www.wemos.cc/product/d1-mini-pro.html

Ваш вывод D3 имеет внутреннее подтягивание, поэтому нет сомнений, что он все время читается ВЫСОКО. Подключите плату, как показано на рисунке ниже, или, например, измените вывод считывания на D0 (у него нет другой функции, кроме простого ввода-вывода).

schematic

Для получения дополнительной информации о подтягиваниях и подтягиваниях ознакомьтесь с этой статьей: http://www.electronics-tutorials.ws/logic/pull-up-resistor.html

,

Спасибо за ваш совет Адам Росиек, я выбираю D3 из-за некоторых проблем с упаковочным пространством. Да, я перехожу на D8, это решает проблему. И я прошу прощения за неудобный код и отсутствие картинки, @Toni startup


6

Проблема в том, что когда кнопка не нажата, напряжение на выводе D3 просто плавает. Поскольку ничего не подключено, напряжение на выводе может быть любым. Чтобы предотвратить это, вы используете понижающий резистор, так что, когда кнопка не нажата, напряжение на D3 притягивается к земле, и вы получите НИЗКИЙ уровень, используя digitalRead.

schematic

,