Как использовать 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

, 👍-1

Обсуждение

esp-01**S** имеет подтягивание на io 0, @Juraj


1 ответ


2

Вы записываете 0 на входной контакт. Из ссылки на Arduino:

"Если контакт настроен в качестве ВХОДНОГО, digitalWrite() включит (ВЫСОКИЙ) или отключит (НИЗКИЙ) внутренний вывод на входном выводе. Рекомендуется установить pinMode() в значение INPUT_PULLUP, чтобы включить внутренний подтягивающий резистор."

Кроме того, когда вы оставляете входной вывод плавающим, т. Е. Ничего к нему не подключаете, а также не включаете (или явно не отключаете) внутреннее подтягивание или не подключаете внешнее подтягивание, входной вывод может показывать 1или 0.

TL;DR: Вы не должны оставлять входные контакты плавающими; плавающие контакты восприимчивы к электрическому шуму и могут показывать что угодно или даже колебаться. Если вы хотите, чтобы они показывали 0, когда ничего не подключено, добавьте внешний понижающий резистор.

,