M5Atom_airqa/anemostat/AC_dimmer-dmr-0.2.1-master/AC_dimmer-dmr-0.2.1-master/AC_Dimmer/AC_Dimmer/esp8266_dimmer_fade/esp8266_dimmer_fade.ino

79 lines
2.5 KiB
Arduino
Raw Normal View History

2021-08-02 20:41:39 +03:00
/*
Данный скетч позволяет запустить димер в режиме 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()
{
// здесь можно писать свой код
//
// здесь можно писать свой код
}