В своєму проекті реалізував індикацію стану пристрою світлодіодом.
Коли пристрій в режимі налаштування WiFiManager - блимаємо 0.2 секунди.
Коли пристрій під’єднується до WiFi точки - блимаємо 0.5 секунди.
Після під’єднання, світлодіод перемикається в стан - вимкнутий.
Приклад цієї реалізації взяв з прикладів WiFi Manager - feedback through LED blink example
Хочу додати індикацію, коли немає зв’язку з Blynk server, то блимати світлодіодом раз на 2 секунди.
Я зробив це так: (вставлю код тільки той, що стосується теми).
In his project, he realized the LED status of the device.
When the device in the WiFiManager setup mode is flashing 0.2 seconds.
When the device connects to the WiFi point - flashing 0.5 seconds.
After connecting, the LED switches to the state - turned off.
An example of this implementation is taken from examples of WiFi Manager - feedback through LED blink example
I want to add an indication when there is no connection with the Blynk server, then blink the LED every 2 seconds.
I did so: (I’ll insert the code only on the theme).
#include <Ticker.h>
Ticker ticker;
void setup()
{
pinMode(LED_RED, OUTPUT);
ticker.attach(0.5, tick); // вмикаємо блимання світлодіодом кожні 0.5 сек (turn on flashing LEDs every 0.5 sec)
/*
Тут код запуску WiFi Manager та всього що потрібно
Here is the WiFi Manager startup code and everything you need
*/
ticker.detach(); // дезактивуємо блимання світлодіодом (deactivate flashing light emitting diode)
digitalWrite(LED_RED, LOW); // вимикаємо світлодіод (turn off the LED)
Blynk.config(settings.blynkToken, settings.blynkServer, atoi(settings.blynkPort));
if (Blynk.connect() == false)
{
ticker.attach(2, tick); // Як не з'єднались з Blynk активуємо блимання кожні 2 секунди (How to connect with Blynk will activate the flashing every 2 seconds)
}
timer.setInterval(INTERVAL_SEND_DATA, timerSendServer);
}
void loop()
{
Blynk.run();
timer.run();
/*
Тут обробник кнопок і все таке
Here is the handler of the buttons and so on
*/
}
BLYNK_CONNECTED()
{
ticker.detach(); // якщо з'єднались дезактивуємо блимання світлодіодом (if connected, deactivate the flashing LED)
digitalWrite(LED_RED, LOW); // вимикаємо світлодіод (turn off the LED)
Blynk.syncAll();
}
void timerSendServer()
{
if (Blynk.connected())
{
// тут відправлення даних на сервер (sending data to the server here)
}
else
{
ticker.attach(2, tick); // якщо статус - немає підключення до Blynk server, то блимаємо світлодіодом (if status - no connection to Blynk server, then flashing LED)
}
}
void tick()
{
//toggle state
int state = digitalRead(LED_RED); // get the current state of GPIO pin
digitalWrite(LED_RED, !state); // set pin to the opposite state
}
Код робочий. Все працює як слід. Але хочу спитатись в громади чи це правильний спосіб? Може є більш “елегантний/правильний” спосіб? Що порадите? Чи залишити як є?
Work code. Everything works as it should. But do I want to be in a community or is it the right way? Maybe there is a more “elegant / correct” way? What advice? Do you leave as it is?