ESP nowでやりとり 送信側

 送信側

#include <Arduino.h>
#include <esp_now.h>
#include <WiFi.h>

 int8_t slaveAddress[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 }; // 受信機のMACアドレスに書き換えます
const int LED_PIN = 5;
bool ledState = false;

void flashLed() {
    digitalWrite(LED_PIN, HIGH);
    delay(500);
    digitalWrite(LED_PIN, LOW);
}
void onSend(const uint8_t* mac_addr, esp_now_send_status_t status) {
    char macStr[18];
    snprintf(macStr, sizeof(macStr), "%02X:%02X:%02X:%02X:%02X:%02X",
        mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);

    Serial.println(macStr);
    Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Success" : "Failed");
}

void onReceive(const uint8_t* mac_addr, const uint8_t* data, int data_len) {
    char macStr[18];
    snprintf(macStr, sizeof(macStr), "%02X:%02X:%02X:%02X:%02X:%02X",
        mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
    Serial.println();
    Serial.printf("Last Packet Recv from: %s\n", macStr);
    Serial.printf("Last Packet Recv Data(%d): ", data_len);
    for (int i = 0; i < data_len; i++) {
        Serial.print(data[i]);
        Serial.println(" ");
        if (data[i] == 55) {
            flashLed();
        }
    }

}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();

  pinMode(LED_PIN, OUTPUT);

  flashLed();

  if (esp_now_init() == ESP_OK) {
      Serial.println("ESPNow Init Success");
  }

  esp_now_peer_info_t peerInfo = {}; //ココ重要
  memcpy(peerInfo.peer_addr, slaveAddress, 6);
  peerInfo.channel = 0;
  peerInfo.encrypt = false;

  if (esp_now_add_peer(&peerInfo) != ESP_OK) {
      Serial.println("Failed to add peer");
      return;
  }

  esp_now_register_send_cb(onSend);
  esp_now_register_recv_cb(onReceive);
}

void loop() {
  // put your main code here, to run repeatedly:
  uint8_t data[2] = { 111, 222 }; // 送信データ

  esp_err_t result = esp_now_send(slaveAddress, data, sizeof(data));

  Serial.print("Send Status: ");
  switch (result)
  {
  case ESP_OK:
      Serial.println("Success");
      break;
  case ESP_ERR_ESPNOW_NOT_INIT:
      Serial.println("ESPNOW not Init.");
      break;
  case ESP_ERR_ESPNOW_ARG:
      Serial.println("Invalid Argument");
      break;
  case ESP_ERR_ESPNOW_INTERNAL:
      Serial.println("Internal Error");
      break;
  case ESP_ERR_ESPNOW_NO_MEM:
      Serial.println("ESP_ERR_ESPNOW_NO_MEM");
      break;
  case ESP_ERR_ESPNOW_NOT_FOUND:
      Serial.println("Peer not found.");
      break;

  default:
      Serial.println("Not sure what happened");
      break;
  }

   
  delay(5000);
}

コメント