| 新玩法,学习了。 |
| 为何贴子里看不本人的回复? |
jhczy 发表于 2024-1-15 09:54 //发送程序 #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); } } |
| 好东西。价格便宜又实用 |
热烈欢迎楼主全盘奉献![]() |