ESP nowでやりとり 受信側

 受信側

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

const int LED_PIN = 5;
bool ledState = false;
bool received = false;

 uint8_t slaveAddress[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 }; // 受信機のMACアドレスに書き換えます

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.print(" ");
        if (data[i] == 222) {
            flashLed();
            received = true;
        }
    }

}


void setup() {

    Serial.begin(115200);
    pinMode(LED_PIN, OUTPUT);
    flashLed();
    Serial.println(WiFi.macAddress()); // このアドレスを送信側へ登録します

    WiFi.mode(WIFI_STA);

    WiFi.disconnect();
    if (esp_now_init() == ESP_OK) {
        Serial.println("ESP-Now Init Success");
    }
    flashLed();

    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] = { 33,55}; // 送信データ
  if(received){
    delay(100);
    received = false;
    esp_err_t result = esp_now_send(slaveAddress, data, sizeof(data));
    if (result == ESP_OK) {
        Serial.println("Sent with success");
    }
    else {
        Serial.println("Error sending the data");
    }
  }

}



コメント