esp_now.h: нет такого файла или каталога
Arduino: 1.8.19 (Windows 10), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"
esp_now_testing:3:21: fatal error: esp_now.h: No such file or directory
#include <esp_now.h>
^
compilation terminated.
exit status 1
esp_now.h: No such file or directory
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Не удалось выполнить компиляцию для платы node mcu esp8266. Установил библиотеку esp8266 из менеджера плат
#include <ESP8266WiFi.h>
#include <esp_now.h>
// Переменные для тестовых данных
int int_value;
float float_value;
bool bool_value = true;
// MAC-адрес ответчика - отредактируйте по мере необходимости
uint8_t broadcastAddress[] = {0x24, 0x6F, 0x28, 0x7A, 0xAE, 0x7C};
// Определяем структуру данных
typedef struct struct_message {
char a[32];
int b;
float c;
bool d;
} struct_message;
// Создаем структурированный объект
struct_message myData;
// Информация о пире
esp_now_peer_info_t peerInfo;
// Функция обратного вызова, вызываемая при отправке данных
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print("\r\nLast Packet Send Status:\t");
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
}
void setup() {
// Настройка последовательного монитора
Serial.begin(115200);
// Установите ESP32 в качестве станции Wi-Fi
WiFi.mode(WIFI_STA);
// Инициализировать ESP-СЕЙЧАС
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
// Зарегистрировать обратный вызов отправки
esp_now_register_send_cb(OnDataSent);
// Регистрация пира
memcpy(peerInfo.peer_addr, broadcastAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
// Добавляем пир
if (esp_now_add_peer(&peerInfo) != ESP_OK){
Serial.println("Failed to add peer");
return;
}
}
void loop() {
// Создаем тестовые данные
// Генерируем случайное целое число
int_value = random(1,20);
// Используйте целое число для создания нового числа с плавающей запятой
float_value = 1.3 * int_value;
// инвертировать логическое значение
bool_value = !bool_value;
// Форматирование структурированных данных
strcpy(myData.a, "Welcome");
myData.b = int_value;
myData.c = float_value;
myData.d = bool_value;
// Отправить сообщение через ESP-NOW
esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));
if (result == ESP_OK) {
Serial.println("Sending confirmed");
}
else {
Serial.println("Sending error");
}
delay(2000);
}
@JOSEPH BINIL, 👍1
Обсуждение1 ответ
▲ 0
Чтобы использовать ESP-NOW с ESP8266 и Arduino IDE, необходимо использовать файл "espnow.h" заголовочный файл. В этом случае коды ошибок меняются, и для успеха нужно использовать только значения int (0). esp_now_peer_info_t не требуется для добавления пиров. Вот код:
#include <ESP8266WiFi.h>
#include <espnow.h>
// Переменные для тестовых данных
int int_value;
float float_value;
bool bool_value = true;
// MAC-адрес ответчика - отредактируйте по мере необходимости
uint8_t broadcastAddress[] = {0x24, 0x6F, 0x28, 0x7A, 0xAE, 0x7C};
// Определяем структуру данных
typedef struct struct_message {
char a[32];
int b;
float c;
bool d;
} struct_message;
// Создаем структурированный объект
struct_message myData;
// Функция обратного вызова, вызываемая при отправке данных
void OnDataSent(uint8_t *mac_addr, uint8_t status) {
Serial.print("\r\nLast Packet Send Status:\t");
Serial.println(status == 0 ? "Delivery Success" : "Delivery Fail");
}
void setup() {
// Настройка последовательного монитора
Serial.begin(115200);
// Установите ESP32 в качестве станции Wi-Fi
WiFi.mode(WIFI_STA);
// Инициализировать ESP-СЕЙЧАС
if (esp_now_init() != 0) {
Serial.println("Error initializing ESP-NOW");
return;
}
// Зарегистрировать обратный вызов отправки
esp_now_register_send_cb(OnDataSent);
// Добавляем пир
if (esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_SLAVE, 0, NULL, 0) != 0){
Serial.println("Failed to add peer");
return;
}
}
void loop() {
// Создаем тестовые данные
// Генерируем случайное целое число
int_value = random(1,20);
// Используйте целое число для создания нового числа с плавающей запятой
float_value = 1.3 * int_value;
// инвертировать логическое значение
bool_value = !bool_value;
// Форматирование структурированных данных
strcpy(myData.a, "Welcome");
myData.b = int_value;
myData.c = float_value;
myData.d = bool_value;
// Отправить сообщение через ESP-NOW
int result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));
if (result == 0) {
Serial.println("Sending confirmed");
}
else {
Serial.println("Sending error");
}
delay(2000);
}
,
@lmcapacho
Ваше описание того, что нужно изменить, не является полным. Вы изменили не только заголовочный файл., @StarCat
Смотрите также:
- NodeMCU 1.0 автоматически сбрасывается через некоторое время
- Последовательный монитор ESP8266 выплевывает мусор
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
- Разница между этими двумя платами NodeMCU?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Как определить размер Flash?
- Как изменить имя модуля ESP8266-12E по умолчанию
Откуда вы взяли этот код? Хотя он загружает
<ESP8266WiFi.h>
, остальная часть этого кода, похоже, предназначена для ESP32, а не для ESP8266/NodeMCU., @StarCat