/* Даный скетч позволяет управлять сетевым диммером DMR-02 через WiFi с помощью ESP8266 и смартфона с любой точки планеты, где есть доступ в интернет Скетч позволит управлять нагрузкой (лампой) с помощью ползунка на Вашем смартфоне по WiFi Код работает в неблокирующем режиме (можно добавлять свой код) Управление со смартфона будет происходить с помощью программы Blynk (Play market/APP store) Перед началом работы рекомендуется разобраться с функионалом данного софта пример работы (ВИДЕО) https://www.youtube.com/watch?v=Z_Vvgx4QuSY Для того чтобы успешно прошить даный скетч Вам нужно: - скачать дистрибутив для работу с ESP8266 в Arduino IDE - скачать библиоеки Blynk и Ticker.h - скачать приложение Blynk на смартфон - создать проект в приложении Blynk для управления димером - получить на почту Ваш ЛИЧНЫЙ токен с приложения Blynk и вписать его ниже - вписать имя и пароль WiFi для подключения ESP8266 (смотрите ниже) - подключить димер на соответствующие пины или назначить свои При работе с ESP8266 подключать библиотеку AC_Dimmer и использовать ее функции не нужно Достаточно прошить лишь данный пример Для управления можностью используется переменная val (смотрите ниже) */ #include #include #include Ticker blinker; const byte interruptPin = D7; // пин диммера М2 const byte dimPin = D5; // пин диммера М1 int power = 0; int val = 0; // переменная задающая мощность от 0 до 10000 char auth[] = "7wE5GzzU2zs83pOZKSbMxfEu_G53y4V6"; // Ваш ЛИЧНЫЙ токен от приложения Blynk char ssid[] = "AndroidAP"; // имя WiFi char pass[] = "23412123"; // пароль WiFi void ICACHE_RAM_ATTR handleInterrupt(); void ICACHE_RAM_ATTR onTimerISR() // обработчик прерывания таймера { digitalWrite(dimPin, HIGH); delayMicroseconds(40); digitalWrite(dimPin, LOW); timer1_write(50000);//10мс } void handleInterrupt() // обработчик прерывания по фронту (от пина детекции фазы димера) { power = 49000 - 4.75*val; timer1_write(power); } void setup() { Serial.begin(9600); Blynk.begin(auth, ssid, pass); pinMode(interruptPin, INPUT_PULLUP); pinMode(dimPin, OUTPUT); attachInterrupt(digitalPinToInterrupt(interruptPin), handleInterrupt, RISING); timer1_attachInterrupt(onTimerISR); timer1_enable(TIM_DIV16, TIM_EDGE, TIM_SINGLE); // здесь можно писать свой код (setup()) // // здесь можно писать свой код (setup()) } void loop() { Blynk.run(); // функция поллинга данных по WiFi // здесь можно писать свой код // // здесь можно писать свой код } BLYNK_WRITE(V0) // функция считывания данных по WiFi { val = param.asInt(); }