/*
* ESP32 version
* Este sketch permite la recepción de dos datos mediante la comunicación ESP-NOW
*/
/*
*****************************************************
* LIBRERIAS
*****************************************************
*/
#include <esp_now.h>
#include <WiFi.h>
/*
*****************************************************
* VARIABLES
*****************************************************
*/
const int LED_onboard=5; //Led Conetado al GPIO2 (5) ESP12 - NODEMCU GPIO16
//ESTRUCTURA DE LOS DATOS TRANSMITIDOS ESCLAVO (RECEPTOR)
typedef struct mensaje_recibido {
uint16_t pot = 0;
uint32_t tiempo = 0;
} mensaje_recibido;
// Create a struct_message called myData
mensaje_recibido myData;
/*
*****************************************************
* INICIO
*****************************************************
*/
void setup() {
// Inicialización del puerto serial
Serial.begin(115200);
// Colocamos el dispositivo en modo estación
WiFi.mode(WIFI_STA);
// Inicialización del protocolo ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
// Declaración del Pin 2 como salida para (led)
pinMode(LED_onboard, OUTPUT);
/*
Una vez que ESPNow haya iniciado con éxito, nos registraremos
en recvCB para obtener información del empaquetador recv
*/
//esp_now_set_self_role(ESP_NOW_ROLE_SLAVE); //Asigna el rol del dispositivo (Esclavo o Maestro)
//esp_now_register_recv_cb(OnDataRecv);//Registramos los datos recibidos por el transmisor
}
/*
*****************************************************
* REPETICIÓN
*****************************************************
*/
void loop() {
esp_now_register_recv_cb(esp_now_recv_cb_t(OnDataRecv));//Registramos los datos recibidos por el transmisor
delay(2000);
}
/*
*****************************************************
* FUNCIONES
*****************************************************
*/
// Callback function that will be executed when data is received
void OnDataRecv(const uint8_t * mac,const uint8_t *incomingData, int len) {
memcpy(&myData, incomingData, sizeof(myData));
Serial.print(". Dato potenciometro: ");
Serial.print(myData.pot);
Serial.print(". Dato tiempo: ");
Serial.println(myData.tiempo);
analogWrite(LED_onboard,myData.pot); // Escribo los datos sobre el pin del led
}