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
C++
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
Данный скетч позволяет запустить димер в режиме 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()
{
// здесь можно писать свой код
//
// здесь можно писать свой код
}