Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <esp_now.h>
- #include <WiFi.h>
- #define LEDC_CHANNEL_0 0
- #define LEDC_TIMER_13_BIT 13
- #define LEDC_BASE_FREQ 5000
- uint8_t broadcastAddress[] = {0xE8, 0x68, 0xE7, 0x80, 0x5E, 0x11}; // MAC address of the receiver. In my case it is ESP8266
- const int ledPin = 16;
- const int buttonPin = 21;
- const int buttonPin2 = 22;////////2
- int currButtonVal = 0, prevButtonVal = 0;
- int currButtonVal2 = 0, prevButtonVal2 = 0;///////////////////2
- int brightness = 0;
- bool isDataReceived = false;
- int receivedPotValue = 0;
- typedef struct struct_message { // Structure to send/receive data. Must match the receiver/sender structure
- //char charPlaceHolder[32];
- int intPlaceHolder;
- int intPlaceHolder2;//////////////////2
- //float floatPlaceHolder;
- //String stringPlaceHolder;
- //bool boolPlaceHolder;
- } struct_message;
- struct_message myOutGoingData, myIncomingData;
- // Callback when data is sent
- void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
- Serial.print(status == ESP_NOW_SEND_SUCCESS ? "Packet sent successfully with value: " : "Packet sending failed with values: ");
- Serial.println(currButtonVal);
- ////////////////2
- Serial.print(status == ESP_NOW_SEND_SUCCESS ? "Packet sent successfully with value2: " : "Packet sending failed with values2: ");
- Serial.println(currButtonVal2);
- }
- // Callback when data is received
- void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
- memcpy(&myIncomingData, incomingData, sizeof(myIncomingData)); // copying the incoming data into our structure
- receivedPotValue = myIncomingData.intPlaceHolder; // Here I recieve potentiometer value from ESP8266 in the range [0, 1023]
- isDataReceived = true;
- }
- // Arduino like analogWrite
- // value has to be between 0 and valueMax
- void IMHESP_analogWrite(uint8_t channel, uint32_t value, uint32_t valueMax = 255) {
- uint32_t duty = (8191 / valueMax) * min(value, valueMax); // calculate duty, 8191 from 2 ^ 13 - 1
- ledcWrite(channel, duty); // write duty to LEDC
- }
- void setup() {
- Serial.begin(115200);
- pinMode(buttonPin, INPUT);
- pinMode(buttonPin2, INPUT);
- pinMode(ledPin, OUTPUT);
- WiFi.mode(WIFI_STA);
- WiFi.disconnect();
- if (esp_now_init() != ESP_OK) {
- Serial.println("Error initializing ESP-NOW");
- return;
- }
- esp_now_register_send_cb(OnDataSent); // register the ondatasent callback
- //esp_now_register_send_cb(OnDataSent2); ////////////2
- // Register peer
- esp_now_peer_info_t peerInfo;
- memcpy(peerInfo.peer_addr, broadcastAddress, 6);
- peerInfo.channel = 0;
- peerInfo.encrypt = false;
- // Add peer
- if (esp_now_add_peer(&peerInfo) != ESP_OK){
- Serial.println("Failed to add peer");
- return;
- }
- esp_now_register_recv_cb(OnDataRecv); // Register for a callback function that will be called when data is received
- // Setup timer and attach timer to a led pin
- ledcSetup(LEDC_CHANNEL_0, LEDC_BASE_FREQ, LEDC_TIMER_13_BIT);
- ledcAttachPin(ledPin, LEDC_CHANNEL_0);
- }
- void loop() {
- currButtonVal = digitalRead(buttonPin);
- if(currButtonVal != prevButtonVal) {
- prevButtonVal = currButtonVal;
- myOutGoingData.intPlaceHolder = currButtonVal;
- esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myOutGoingData, sizeof(myOutGoingData));
- }
- currButtonVal2 = digitalRead(buttonPin2);
- if(currButtonVal2 != prevButtonVal2) {
- prevButtonVal2 = currButtonVal2;
- myOutGoingData.intPlaceHolder2 = currButtonVal2;
- esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myOutGoingData, sizeof(myOutGoingData));
- }
- if(isDataReceived) {
- isDataReceived = false;
- Serial.print("[RECEIVED]>> ");
- Serial.println(receivedPotValue); }
- delay(40);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement