79 lines
2.5 KiB
C++
79 lines
2.5 KiB
C++
/*
|
||
Данный скетч позволяет запустить димер в режиме FADE для платы ESP8266
|
||
- 2сек диммер плавно увеличивает мощность
|
||
- 2сек диммер плавно уменьшает мощность
|
||
|
||
Для того чтобы успешно прошить даный скетч Вам нужно:
|
||
- скачать дистрибутив для работу с ESP8266 в Arduino IDE
|
||
- скачать библиоеки Ticker.h
|
||
- подключить димер на соответствующие пины или назначить свои
|
||
|
||
При работе с ESP8266 подключать библиотеку AC_Dimmer и использовать ее функции не нужно
|
||
Достаточно прошить лишь данный пример
|
||
Для управления можностью используется переменная val (смотрите ниже)
|
||
|
||
*/
|
||
|
||
#include <ESP8266WiFi.h>
|
||
#include <Ticker.h>
|
||
|
||
Ticker blinker;
|
||
|
||
const byte interruptPin = D7; // пин диммера М2
|
||
const byte dimPin = D5; // пин диммера М1
|
||
int val = 0; // переменная, которая определяет мощность от 0 до 10000
|
||
|
||
int power = 0;
|
||
int rise = 0;
|
||
|
||
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.785*val;
|
||
timer1_write(power);
|
||
|
||
if(val < 10000 && rise == 1) val = val + 100; // плавное наростание
|
||
else rise = 0;
|
||
|
||
if(val > 0 && rise == 0) val = val - 100; // плавное угасание
|
||
else rise = 1;
|
||
}
|
||
|
||
|
||
|
||
void setup()
|
||
{
|
||
|
||
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()
|
||
{
|
||
// здесь можно писать свой код
|
||
//
|
||
// здесь можно писать свой код
|
||
}
|
||
|