#include <painlessMesh.h>
#define MESH_PREFIX "TestMesh"
#define MESH_PASSWORD "password123"
#define MESH_PORT 5555
#define LED_PIN 2
painlessMesh mesh;
String myMsg;
unsigned long ledOnTime = 0;
bool ledState = LOW;
void receivedCallback(uint32_t from, String &msg) {
Serial.printf("[RECEIVED] from %u --> %s\n", from, msg.c_str());
}
void flashLED() {
digitalWrite(LED_PIN, HIGH);
ledOnTime = millis();
ledState = HIGH;
}
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
mesh.init(MESH_PREFIX, MESH_PASSWORD, &receivedCallback, MESH_PORT);
myMsg = "Hello from Node " + String(mesh.getNodeId());
Serial.println("Starting node: " + myMsg);
}
void loop() {
mesh.update();
// Broadcast every 3 seconds
static unsigned long lastSent = 0;
if (millis() - lastSent > 3000) {
lastSent = millis();
mesh.sendBroadcast(myMsg);
Serial.println("[SEND] " + myMsg);
flashLED();
}
// turn off LED after 100 ms
if (ledState == HIGH && (millis() - ledOnTime > 100)) {
digitalWrite(LED_PIN, LOW);
ledState = LOW;
}
}