![]() |
|
|
|
|
#1 |
|
Junior Member
Регистрация: 02.11.2014
Сообщений: 11
Вес репутации: 0 ![]() |
Радости как у Матроскина -"Заработалааа!" )) Admin Спасибо большое .
применительно к моей задаче -использование ( D2_In ) выглядит как немного болеее сглаженные переходы и чеснее выход на полное горение . =Это правильная работа D2 ? =Растянуть / сгладить смену режимов канала чем правильно ? ( слишком быстро ) =Исходя из чего выбирается значение в "StartTimer1(halfcycle, 40); //время для одного разряда ШИМ" ? = в таком скетче возможно регулировать верхнюю и нижнюю границу величины свечения ? // ведь тут менять 50 и 200 ? так ? - Dimmer1=random(50, 200); |
|
|
|
|
|
#2 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Я же написал выше что нужно изменять
Немного опишу подробнее: Для изменения динамики мерцания нужно изменить диапазон задержек delay(random(10, 100)); первый параметр это минимальная задержка начинается от 10, второй это максимальная задержка от 10 до любого значения которое Вам понравится, ставьте хоть 1000 Для изменения диапазона яркости мерцания нужно изменить диапазон яркости DimmerХ=random(50, 200); первый параметр это минимальная яркость, можно изменять от 0 до 200, второй параметр это максимальная яркость от 0 до 200. Параметры для каждой лампочки можно задавать индивидуально Видео будет? |
|
|
|
|
|
#3 | |
|
Junior Member
Регистрация: 02.11.2014
Сообщений: 11
Вес репутации: 0 ![]() |
Цитата:
|
|
|
|
|
|
|
#4 |
|
Junior Member
Регистрация: 02.11.2014
Сообщений: 11
Вес репутации: 0 ![]() |
[QUOTE=Admin;17692]Я же написал выше что нужно изменять
Немного опишу подробнее: Для изменения динамики мерцания нужно изменить диапазон задержек delay(random(10, 100)); первый параметр это минимальная задержка начинается от 10, второй это максимальная задержка от 10 до любого значения которое Вам понравится, ставьте хоть 1000 - Вечер добрый , продолжаю после перерыва пытаться ..) _ Все изменения яркости происходят СТУПЕНЧАТО _ пробовал убирать режим RANDOM , ставил DELAY 3000 . Результата не дало .. Нужно плавное изменение , это возможно ? |
|
|
|
|
|
#5 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
На Youtube
Еще можно добавить задержки между лампами PHP код:
|
|
|
|
|
|
#6 |
|
Junior Member
Регистрация: 02.11.2014
Сообщений: 11
Вес репутации: 0 ![]() |
|
|
|
|
|
|
#7 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Если бы я не знал правду, то подумал бы что это реально от свечки на заднем фоне свечение
|
|
|
|
|
|
#8 |
|
Junior Member
Регистрация: 02.11.2014
Сообщений: 11
Вес репутации: 0 ![]() |
Думаю что по ситуации можно будет от одного канала (свеча ) до всех (маленькое пламя) использовать .
Вот что хочется еще реализовать но я не знаю еще как это делается - - переход механической кнопкой или тумблерами между "пакетами" настроек . Иногда надо поактивней горение ,а иногда это шепот свечи ) - общее диммирование каналов или если можно по отдельности ??..( разные случаи -разная потребность яркостей ) Это видео с этим скетчем: #include <CyberLib.h> //Библиотека от Cyber-Place.ru volatile uint8_t tic, Dimmer1, Dimmer2, Dimmer3, Dimmer4; uint8_t data; void setup() { D4_Out; D5_Out; D6_Out; D7_Out; //Настраиваем порты на выход D4_Low; D5_Low; D6_Low; D7_Low; //установить на выходах низкий уровень сигнала D2_In; //настраиваем порт на вход для отслеживания прохождения сигнала через ноль //CHANGE – прерывание вызывается при любом изменении значения на входе; //RISING – вызов прерывания при изменении уровня напряжения с низкого (Low) на высокий(HIGH) //FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкий (Low) attachInterrupt(0, detect_up, LOW); // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень StartTimer1(halfcycle, 40); //время для одного разряда ШИМ StopTimer1(); //остановить таймер UART_Init(115200); //инициализация порта } //********************обработчик и прерываний******************** *********** void halfcycle() //прерывания таймера { tic++; //счетчик if(Dimmer1 < tic ) D4_High; //управляем выходом if(Dimmer2 < tic ) D5_High; //управляем выходом if(Dimmer3 < tic ) D6_High; //управляем выходом if(Dimmer4 < tic ) D7_High; //управляем выходом } void detect_up() // обработка внешнего прерывания. Сработает по переднему фронту { tic=0; //обнулить счетчик ResumeTimer1(); //запустить таймер attachInterrupt(0, detect_down, HIGH); //перепрограммировать прерывание на другой обработчик } void detect_down() // обработка внешнего прерывания. Сработает по заднему фронту { StopTimer1(); //остановить таймер D4_Low; D5_Low; D6_Low; D7_Low; //логический ноль на выходы tic=0; //обнулить счетчик attachInterrupt(0, detect_up, LOW); //перепрограммировать прерывание на другой обработчик } //**************************************** ********************************* void loop() {Start Dimmer1=random(155, 175); delay(random(10, 300)); Dimmer2=random(155, 175); delay(random(10, 300)); Dimmer3=random(155, 175); delay(random(10, 300)); Dimmer4=random(155, 175); delay(random(10, 300)); End} |
|
|
|
|
|
#9 | |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
|
|
|
|
|
|
|
#10 | |
|
Junior Member
Регистрация: 02.11.2014
Сообщений: 11
Вес репутации: 0 ![]() |
Цитата:
- что предпочтительней в этой ситуации кнопка или тумблер ? |
|
|
|
|
![]() |
| Здесь присутствуют: 6 (пользователей: 0 , гостей: 6) | |
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|
|