не могу понять, что не так с моим кодом nodemcu
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
//Настройки Firebase
#define FIREBASE_HOST "..........firebaseio.com/" // не могу поделиться
#define FIREBASE_AUTH "..............." // не могу поделиться
//настройки Wi-Fi
#define WIFI_SSID "kello"
#define WIFI_PASSWORD "8888"
//Определяем триггерные и эхо-цифровые выводы
const int trigPin = 4;
const int echoPin = 3;
// количество времени, в течение которого ультразвуковая волна будет распространяться
long duration = 0;
// Определяем переменную расстояния
double distance = 0;
void setup()
{
Serial.begin(9600);
// Подключиться к Wi-Fi
Serial.print("Wi-Fi...");
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting...");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.println();
Serial.print("Connected to: ");
Serial.println(WiFi.localIP());
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
// Ультразвуковой датчик, установите эхо в качестве входа и триггер в качестве выхода
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
getDistance();
// Печатает значение расстояния до последовательного монитора
Serial.print("Distance: ");
Serial.println(distance);
delay(500);
}
void getDistance()
{
// Очистить триггер
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// тригПин ВЫСОКИЙ пор 10 мс
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
//Читает echoPin, возвращает время прохождения звуковой волны в мс
duration = pulseIn(echoPin, HIGH);
// Расчет расстояния в сантиметрах по формуле, описанной в первом разделе.
distance = duration * 0.034 / 2;
// Отправляет значение расстояния в Firebase
Firebase.setFloat("distance", distance);
}
Я выпускник компьютерного факультета, поэтому у меня мало знаний о nodemcu. Я видел некоторые документы о nodemcu. Я хочу показать данные, полученные ультразвуковым датчиком расстояния, в базе данных Firebase в реальном времени. Но я не могу понять, почему я не могу получить вывод serial.println(distance) в окне com5, хотя код успешно компилируется. Вот что я получаю при запуске программы
Executable segment sizes:
IROM : 330560 - code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 27760 / 32768 - code in IRAM (ICACHE_RAM_ATTR, ISRs...)
DATA : 1408 ) - initialized variables (global, static) in RAM/HEAP
RODATA : 2044 ) / 81920 - constants (global, static) in RAM/HEAP
BSS : 25160 ) - zeroed variables (global, static) in RAM/HEAP
Sketch uses 361772 bytes (34%) of program storage space. Maximum is 1044464 bytes.
Global variables use 28612 bytes (34%) of dynamic memory, leaving 53308 bytes for local variables. Maximum is 81920 bytes.
esptool.py v2.8
Serial port COM5
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: ec:fa:bc:c1:44:d2
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 365920 bytes to 264395...
Writing at 0x00000000... (5 %)
Writing at 0x00004000... (11 %)
Writing at 0x00008000... (17 %)
Writing at 0x0000c000... (23 %)
Writing at 0x00010000... (29 %)
Writing at 0x00014000... (35 %)
Writing at 0x00018000... (41 %)
Writing at 0x0001c000... (47 %)
Writing at 0x00020000... (52 %)
Writing at 0x00024000... (58 %)
Writing at 0x00028000... (64 %)
Writing at 0x0002c000... (70 %)
Writing at 0x00030000... (76 %)
Writing at 0x00034000... (82 %)
Writing at 0x00038000... (88 %)
Writing at 0x0003c000... (94 %)
Writing at 0x00040000... (100 %)
Wrote 365920 bytes (264395 compressed) at 0x00000000 in 23.4 seconds (effective 125.3 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
Не получает ли ультразвуковой датчик достаточного питания, так как nodemcu подключен к моему ноутбуку? Пожалуйста, помогите мне и дайте мне знать, если потребуется дополнительная информация.
@Tank, 👍0
Обсуждение1 ответ
Лучший ответ:
Ваш echoPin
определяется как 3
. GPIO3 NodeMCU также является выводом «RX», необходимым для последовательной связи с хостом. Это может объяснить, почему вы не видите никакого вывода. Вы должны изменить его на другой контакт (например, контакт 5 / D1 является безопасным выбором).
Каждый контакт на NodeMCU имеет номер «GPIO» (это всего лишь номер контакта, определенный архитектурой ESP8266) и соответствующее обозначение «Dx» (которое обычно отмечается на плате NodeMCU).
Какой контакт GPIO соответствует какому контакту D, показан на схемах выводов, например здесь. Прокрутите до распиновки NodeMCU 12-E.
Самые безопасные контакты:
- Контакт 5 (D1)
- Контакт 4 (D2)
- Контакт 12 (D6)
- Контакт 13 (D7)
- Контакт 14 (D5)
Некоторые другие выводы также можно использовать, но они имеют некоторые ограничения, как вы можете видеть на странице, на которую я дал ссылку.
Обратите внимание, что контакты 12–14 используются для SPI, а контакты 4 и 5 (обычно) используются для (программного) I2C. Если вы хотите управлять оборудованием, использующим эти протоколы, используйте эти контакты по умолчанию.
- NodeMCU - Vin контакт как выход 5V?
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
- Разве в узле MCU v3 (LoLin) нет встроенного светодиода?
- Разница между этими двумя платами NodeMCU?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Как определить размер Flash?
- Использование датчика рН 5В с узлом 3,3В
https://electronics.stackexchange.com/questions/402066/esp8266-free-gpios-for-relay-switching/404845#404845, @Juraj