111 lines
4.7 KiB
C++
111 lines
4.7 KiB
C++
//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);
|
||
}
|