Напряжение меняется, но цифровой поток всегда 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);
}
}
@Toni startup, 👍5
Обсуждение2 ответа
Прежде всего - прочитайте свой пост, прежде чем вы его опубликуете. Этот код невозможно прочитать. И если у вас есть проблемы с электроникой, добавьте изображение схем, как вы подключили свою плату. Там тоже могут быть проблемы.
D3 IO, 10k Подтягивающий GPIO0
Источник: https://www.wemos.cc/product/d1-mini-pro.html
Ваш вывод D3 имеет внутреннее подтягивание, поэтому нет сомнений, что он все время читается ВЫСОКО. Подключите плату, как показано на рисунке ниже, или, например, измените вывод считывания на D0 (у него нет другой функции, кроме простого ввода-вывода).
Для получения дополнительной информации о подтягиваниях и подтягиваниях ознакомьтесь с этой статьей: http://www.electronics-tutorials.ws/logic/pull-up-resistor.html
Спасибо за ваш совет Адам Росиек, я выбираю D3 из-за некоторых проблем с упаковочным пространством. Да, я перехожу на D8, это решает проблему. И я прошу прощения за неудобный код и отсутствие картинки, @Toni startup
Проблема в том, что когда кнопка не нажата, напряжение на выводе D3 просто плавает. Поскольку ничего не подключено, напряжение на выводе может быть любым. Чтобы предотвратить это, вы используете понижающий резистор, так что, когда кнопка не нажата, напряжение на D3 притягивается к земле, и вы получите НИЗКИЙ уровень, используя digitalRead.
- Сработал детектор отключения питания
- ESP8266, похоже, убивает цикл while
- Ложное срабатывание резервуара для воды
- Получение тарабарщины последовательного порта до тех пор, пока кнопка не будет нажата, плюс кнопка выключает светодиоды, а не включает
- Strip.clear() не очищает/отключает полосу NeoPixel после сброса ESP8266.
- Узнать статус, подключен ли коммутатор к arduino или нет?
- Проблемы с определением цифрового состояния кнопки
- Скетч останавливается, если кнопка нажата при загрузке
Как может быть, что вы измеряете > 4В при D3, если вы просто ** тянете вниз ** контакт. Либо вы предоставите нам схемы того, что находится в D3, либо мы не сможем сделать ничего, кроме как строить догадки, не говоря уже о том, чтобы помочь вам., @Enric Blanco
вы должны использовать режим "INPUT_PULLUP", если хотите активировать его, подключив GPIO к GND; в противном случае ваше входное состояние будет инвертировано., @dandavis