Как использовать GPIO ESP-01 для ввода
Я пытаюсь использовать один из GPIO ESP-01 в качестве входного сигнала, однако я всегда читаю 1 и ничего не прикрепляю к этим выводам. В принципе, я пытаюсь обнаружить высокое напряжение от другого датчика, такого как сенсорный датчик или инфракрасный, чтобы сделать что-то (начальное состояние будет низким. так что загрузка не будет затронута).
Итак, что я должен сделать, чтобы прочитать фактическое значение 0.
Вот код, который я запускаю:
#define PIN0 0
#define PIN2 2
#define PIN3 3 // Using RX as GPIO
void setup() {
Serial.begin(115200,SERIAL_8N1,SERIAL_TX_ONLY);
pinMode(PIN0, INPUT);
pinMode(PIN2, OUTPUT);
pinMode(PIN3, INPUT);
digitalWrite(PIN2, HIGH);
digitalWrite(PIN0, LOW);
digitalWrite(PIN3, LOW);
}
void loop() {
Serial.print("PIN0: "); Serial.print(digitalRead(PIN0)); Serial.print("\t");
Serial.print("PIN2: "); Serial.print(digitalRead(PIN2)); Serial.print("\t");
Serial.print("PINRX: "); Serial.print(digitalRead(PIN3)); Serial.println("");
delay(500);
}
Вот последовательное чтение:
PIN0: 1 PIN2: 1 PINRX: 1
PIN0: 1 PIN2: 1 PINRX: 1
PIN0: 1 PIN2: 1 PINRX: 1
PIN0: 1 PIN2: 1 PINRX: 1
@motion channel, 👍-1
Обсуждение1 ответ
Вы записываете 0
на входной контакт. Из ссылки на Arduino:
"Если контакт настроен в качестве ВХОДНОГО, digitalWrite() включит (ВЫСОКИЙ) или отключит (НИЗКИЙ) внутренний вывод на входном выводе. Рекомендуется установить pinMode() в значение INPUT_PULLUP, чтобы включить внутренний подтягивающий резистор."
Кроме того, когда вы оставляете входной вывод плавающим, т. Е. Ничего к нему не подключаете, а также не включаете (или явно не отключаете) внутреннее подтягивание или не подключаете внешнее подтягивание, входной вывод может показывать 1
или 0
.
TL;DR: Вы не должны оставлять входные контакты плавающими; плавающие контакты восприимчивы к электрическому шуму и могут показывать что угодно или даже колебаться. Если вы хотите, чтобы они показывали 0
, когда ничего не подключено, добавьте внешний понижающий резистор.
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Какие входные контакты я могу использовать на ESP8266 NodeMCU
- ESP 12 непригодных контактов
- Какие контакты GPIO лучше всего использовать для моего проекта?
- digitalRead не читает входной контакт ESP8266-01
- Реле с активным низким уровнем и контакты ESP8266 GPIO
- Можно ли запитать ESP8266E-12 любым из контактов 3,3 В?
- Материнская плата WeMos D1 ESP-Wroom-02 ESP8266 — где контакт сброса для глубокого сна
esp-01**S** имеет подтягивание на io 0, @Juraj