1.接收端代码

复制MAC地址给发送端

#include <Arduino.h>
#include <WiFi.h>
#include <esp_now.h>
// 接收回调函数
void OnDataRecv(const uint8_t *mac_addr, const uint8_t *incomingData, int len)
{
  Serial.print("收到数据:");
  Serial.print(String(incomingData[0]));
  Serial.print("--");
  Serial.println(String(incomingData[1]));
}
void setup()
{
  Serial.begin(115200); // 初始化基础
  // 启用调试输出
  Serial.setDebugOutput(true);
  WiFi.mode(WIFI_MODE_STA);
  // 打印一下MAC地址,复制出来给发送端调用
  Serial.print("mac地址:");
  Serial.println(WiFi.macAddress());
  delay(1000);
  WiFi.mode(WIFI_STA);
  // 初始化ESP_NOW
  if (esp_now_init() != ESP_OK)
  {
    Serial.println("Error initializing ESP-NOW");
    return;
  }
  // 注册接收回调函数
  esp_now_register_recv_cb(OnDataRecv);
  Serial.println("ESP-NOW初始化完成");
}
void loop()
{
}

2.发送端

#include <Arduino.h>
#include <WiFi.h>
#include <esp_now.h>
// 发送数据回调函数
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status)
{
  Serial.print("Send Status:\t");
  Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Success" : "Fail");
}
// 这里为接收端MAC地址
uint8_t broadcastAddress[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
void setup()
{
  Serial.begin(115200);
  // 启用调试输出
  Serial.setDebugOutput(true);
  WiFi.mode(WIFI_STA);
  //  初始化ESP-NOW
  if (esp_now_init() != ESP_OK)
  {
    Serial.println("Error initializing ESP-NOW");
    return;
  }
  // 注册回调函数
  esp_now_register_send_cb(OnDataSent);
  // 注册通信频道
  esp_now_peer_info_t peerInfo;
  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;
  }
}
u_int8_t i = 0;
void loop()
{
  u_int8_t data[2] = {255 - i, i};
  esp_now_send(broadcastAddress, data, sizeof(data));
  if (i == 255)
  {
    i = 0;
  }
  else
  {
    i++;
  }
  delay(1000);
}