//發送程序
#include <ESP8266WiFi.h>
#include <espnow.h>
uint8_t broadcastAddress[] = {0x84, 0xCC, 0xA8, 0xA0, 0x2D, 0xCF};//接收ESP-01S的MAC值,可先用MAC程序獲取。
typedef struct struct_message {
char a[32];
int b;
} struct_message;
struct_message myData;
void OnDataSent(uint8_t *mac_addr, uint8_t sendStatus) {
Serial.print("Last Packet Send Status: ");
if (sendStatus == 0){
Serial.println("Delivery success");
}
else{
Serial.println("Delivery fail");
}
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
if (esp_now_init() != 0) {
Serial.println("Error initializing ESP-NOW");
return;
}
pinMode(1,INPUT);
pinMode(3,INPUT);
esp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER);
esp_now_register_send_cb(OnDataSent);
esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0);
}
void loop() {
if(digitalRead(1)==HIGH) myData.b = 1;
if(digitalRead(3)==HIGH) myData.b = 2;
esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));
delay(2000);
}
//MAC
#include <ESP8266WiFi.h>
void setup(){
Serial.begin(115200);
Serial.println();
Serial.print("ESP8266 Board MAC Address: ");
Serial.println(WiFi.macAddress());
}
void loop()
{
}
//接收程序
#include <ESP8266WiFi.h>
#include <espnow.h>
int k;
typedef struct struct_message {
char a[32];
int b;
} struct_message;
struct_message myData;
void OnDataRecv(uint8_t * mac, uint8_t *incomingData, uint8_t len) {
memcpy(&myData, incomingData, sizeof(myData));
Serial.print("Int: ");
Serial.println(myData.b);
k=myData.b;
Serial.println();
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
if (esp_now_init() != 0) {
Serial.println("Error initializing ESP-NOW");
return;
}
pinMode(0,OUTPUT);
digitalWrite(0, LOW);
pinMode(2,OUTPUT);
digitalWrite(2, LOW);
esp_now_set_self_role(ESP_NOW_ROLE_SLAVE);
esp_now_register_recv_cb(OnDataRecv);
}
void loop(){
if(k==2) {
digitalWrite(0, LOW);
digitalWrite(2, LOW);
}
if(k==1) {
digitalWrite(0, HIGH);
digitalWrite(2, HIGH);
}
}
|