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

111 lines
4.7 KiB
Arduino
Raw Normal View History

2021-08-02 20:41:39 +03:00
//20.02.2019
//by Reptiloid software
/*
Ограничения:
- Для контроля фазы использовать только D2 (прерывание INT0)
(порт M2 диммера подключать к порту D2 АРДУИНО)!!!
- Не использовать пины D9 и D10 для ШИМ Analog.Write()!!!
только цифровой выход/вход digitalWrite() и digitalRead()
Функционал:
- Данная библиотека позволяет регулировать нагрузку(и),
подключенную в промышленную сеть 220В с помощью АУРДУИНО
различными встроенными функциями описанными ниже
Как работать:
1) Чтобы начать работу нужно подключить библиотеку AC_Dimmer.h
2) Обозначить и раздать номера диммерам (нумерация от 0!!!), используемым в проекте:
#define <"имя димера"> <"порядковый номер">
Например:
#include <AC_Dimmer.h>
#define Dimmer_1 0
#define Dimmer_2 1
#define Dimmer_3 2
3) Инициализировать димер(ы) в void setup().
- Инициализацию выполнять строго между функций Dimmer_init_begin() и Dimmer_init_end();
- Инициализировать с помощью функции Dimmer_pin_assign():
Dimmer_pin_assign(<"имя димера">, <"порт(пин) ардуино димера">);
Например:
void setup()
{
Dimmer_init_begin();
Dimmer_pin_assign(Dimmer_1, 3);
Dimmer_pin_assign(Dimmer_2, A3);
Dimmer_pin_assign(Dimmer_3, A2);
Dimmer_init_end();
}
3) В void loop() использовать нужную функцию:
- Dimm_value(<"имя димера">, <"значение мощности от 0 до 255">)
- Heater(<"имя димера">, <"значение мощности от 0 до 10">)
- SSR_switch(<"имя димера">, <значения 1 или 0 (HIGH/LOW)>)
Например: void loop()
{
Dimm_value(Dimmer_3, 64); // 25% мощность на диммере№3
Heater(Dimmer_2, 3); //30% мощности на диммере№2 (при условии что там ТЕН или другая низкоинерциооная нагрузка)
Dimm_value(Dimmer_1, 128); //50% мощности на диммере№1
delay(1000); //установленные высше параметры удерживаются 1сек
SSR_switch(Dimmer_3, LOW); // отключим все диммеры на 1сек
SSR_switch(Dimmer_2, LOW);
SSR_switch(Dimmer_1, LOW);
delay(1000);
}
Код даного примера предполагает плавное поочередное зажигание и
и тушение трех ламп накаливания, подключенных к ардуино каждая через независимый диммер
Демонстрацию работы библиотеки на тестовом стенде и схему можно посмотреть здесь:
https://www.youtube.com/watch?v=9fhkJQIRmEA
Так же можно использовать для теста одиночного диммера
*/
#include <AC_Dimmer.h>
#include <math.h> //если Вы хотите использовать данную библитеку в своем в проекте,
//математическая библиотека <math.h> не обязательна к включению
#define Dimmer_1 0
#define Dimmer_2 1
#define Dimmer_3 2
unsigned char i = 0;
unsigned char range = 70; // Диапазон регулировки
// (255 - максимальное значение)
void setup()
{
Dimmer_init_begin();
Dimmer_pin_assign(Dimmer_1, 3);
Dimmer_pin_assign(Dimmer_2, A3);
Dimmer_pin_assign(Dimmer_3, A2);
Dimmer_init_end();
}
void loop()
{
i++;
Dimm_value(Dimmer_1, range*fabs(sin(i*2*3.14/255)));
Dimm_value(Dimmer_2, range*fabs(sin((i+(255/3))*2*3.14/255)));
Dimm_value(Dimmer_3, range*fabs(sin((i+(255*2/3))*2*3.14/255)));
delay(25);
}