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
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.

//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);
}