Estou tendo problema com a leitura dos sensores flex quando faço a comunicação entre dois esp32 via esp now. A comunicação é feita sem problema, mas os sensores flex não fazem a leitura dos valores, todos valores aparecem igual a 0. Todas as conexões estão bem feitas.
#include <esp_now.h>
#include <WiFi.h>
#define NUM_SENSORS 5
int sensorPins[NUM_SENSORS] = {4, 13, 14, 25, 26};
typedef struct struct_message {
int sensorValues[NUM_SENSORS];
} struct_message;
struct_message sensorData;
// Substitua pelo endereço MAC correto do receptor
uint8_t broadcastAddress[] = {0x10, 0x06, 0x1c, 0x81, 0x15, 0x64};
void onSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print("\r\nStatus da mensagem: ");
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Enviado com sucesso" : "Falha no envio");
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA); // Configura o ESP32 como estação Wi-Fi
Serial.print("Endereço MAC do Transmissor: ");
Serial.println(WiFi.macAddress());
// Configuração dos pinos dos sensores como entradas analógicas
for (int i = 0; i < NUM_SENSORS; i++) {
pinMode(sensorPins[i], INPUT);
}
// Inicialização do ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println("Erro ao inicializar ESP-NOW");
return;
}
// Registro da função de callback para envio
esp_now_register_send_cb(onSent);
// Configuração do peer para envio dos dados
esp_now_peer_info_t peerInfo;
memcpy(peerInfo.peer_addr, broadcastAddress, 6);
peerInfo.channel = 0;
peerInfo.encrypt = false;
if (esp_now_add_peer(&peerInfo) != ESP_OK) {
Serial.println("Erro ao adicionar peer");
return;
}
}
void loop() {
// Leitura dos valores dos sensores
for (int i = 0; i < NUM_SENSORS; i++) {
sensorData.sensorValues[i] = analogRead(sensorPins[i]);
}
// Imprimir os valores dos sensores para verificação no Serial Monitor
Serial.print("Valores dos sensores: ");
for (int i = 0; i < NUM_SENSORS; i++) {
Serial.print(sensorData.sensorValues[i]);
Serial.print(" ");
}
Serial.println();
// Envio dos dados via ESP-NOW
esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *)&sensorData, sizeof(sensorData));
if (result == ESP_OK) {
Serial.println("Dados enviados com sucesso");
} else {
Serial.print("Erro ao enviar dados: ");
Serial.println(result);
}
delay(500); // Aguarda um curto período antes de repetir o loop
}