Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.11.2014, 19:50   #411
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Если бы я не знал правду, то подумал бы что это реально от свечки на заднем фоне свечение
Admin вне форума   Ответить с цитированием
Старый 02.11.2014, 20:11   #412
1ardu
Junior Member
 
Регистрация: 02.11.2014
Сообщений: 11
Вес репутации: 0
1ardu is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Думаю что по ситуации можно будет от одного канала (свеча ) до всех (маленькое пламя) использовать .
Вот что хочется еще реализовать но я не знаю еще как это делается -
- переход механической кнопкой или тумблерами между "пакетами" настроек . Иногда надо поактивней горение ,а иногда это шепот свечи )
- общее диммирование каналов или если можно по отдельности ??..( разные случаи -разная потребность яркостей )

Это видео с этим скетчем:

#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}
1ardu вне форума   Ответить с цитированием
Старый 02.11.2014, 20:20   #413
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
- переход механической кнопкой или тумблерами между "пакетами" настроек . Иногда надо поактивней горение ,а иногда это шепот свечи )
- общее диммирование каналов или если можно по отдельности ??..( разные случаи -разная потребность яркостей )
Можно загружать разные профили из массива, но для Вас наверно будет проще вынести свечение в разные функции по нажатию кнопок через switch вызывать эти функции
Admin вне форума   Ответить с цитированием
Старый 02.11.2014, 20:47   #414
1ardu
Junior Member
 
Регистрация: 02.11.2014
Сообщений: 11
Вес репутации: 0
1ardu is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
Сообщение от Admin Посмотреть сообщение
Можно загружать разные профили из массива, но для Вас наверно будет проще вынести свечение в разные функции по нажатию кнопок через switch вызывать эти функции
--А есть пример чтоб понять что и как прописать для задействования мех. кнопок ? к примеру для выбора того или иного пакета " void loop() ''
- что предпочтительней в этой ситуации кнопка или тумблер ?
1ardu вне форума   Ответить с цитированием
Старый 02.11.2014, 21:04   #415
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Вот так пишется функция
PHP код:
void profile1()
{
Dimmer1=random(155175); 
 
delay(random(10300)); 
 
Dimmer2=random(155175); 
 
delay(random(10300));
 
Dimmer3=random(155175); 
 
delay(random(10300));
 
Dimmer4=random(155175);
 
delay(random(10300));

Вот так вызывается функция
PHP код:
profile1(); 
вот так нужно обрабатывать включение тумблеров

PHP код:
if(digitalRead(8)==LOWprofile1();
if(
digitalRead(9)==LOWprofile2();
if(
digitalRead(10)==LOWprofile3(); 
Для использования кнопок или тумблеров ,не забудьте на входах активировать подтягивающие резисторы
Admin вне форума   Ответить с цитированием
Старый 02.11.2014, 21:41   #416
1ardu
Junior Member
 
Регистрация: 02.11.2014
Сообщений: 11
Вес репутации: 0
1ardu is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

наверное я не правильно делаю ?
Вместо '' volid loop() "void*profile1()
{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}*
void*profile2()
{Start
Dimmer1=random(50,*100);*
*delay(random(10,*300));*
*Dimmer2=random(50,*100);*
*delay(random(10,*300));
*Dimmer3=random(50,*100);*
*delay(random(10,*300));
*Dimmer4=random(50,*100);
*delay(random(10,*300));
End}*
void*profile3()
{Start
Dimmer1=random(50,*200);*
*delay(random(10,*300));*
*Dimmer2=random(50,*200);*
*delay(random(10,*300));
*Dimmer3=random(50,*200);*
*delay(random(10,*300));
*Dimmer4=random(50,*200);
*delay(random(10,*300));
End}*

-- А ведь надо прописать еще включение тумблеров , пробую , не туда видемо все , скетч ругается. Это нужно создать новый абзац на подобии "Обработчики Прерываний " ?
1ardu вне форума   Ответить с цитированием
Старый 02.11.2014, 21:48   #417
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Start End уберите из функций, я в примере же их не прописывал
Admin вне форума   Ответить с цитированием
Старый 03.11.2014, 02:50   #418
1ardu
Junior Member
 
Регистрация: 02.11.2014
Сообщений: 11
Вес репутации: 0
1ardu is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

to Admin
- Да с "Start & End" что то напутал .
А есть куда можно посмотреть , наглядно прочесть /понять , как строится правильно скетч , что за чем - азбука ? А то все методом подбора приходиться знакомиться (( понимать примерно понимаю , а составить не знаю как " проверка" ругается .. Вот понимаю что надо сначало заявить ноги 8 9 10 , а в каком месте скетча правильно и как не знаю..

Извиняюсь , но я только в начале пути ) Спасибо за помощь .
1ardu вне форума   Ответить с цитированием
Старый 03.11.2014, 10:21   #419
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

здесь
Admin вне форума   Ответить с цитированием
Старый 09.11.2014, 22:15   #420
Shoower
Junior Member
 
Регистрация: 09.11.2014
Сообщений: 2
Вес репутации: 0
Shoower is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Добрый день.
Я что-то делаю не так? Я просто скопировал код с сайта и вставил, но компиляция выдает ошибку:


Arduino: 1.5.7 (Windows 7), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

sketch_nov09a.ino: In function 'void setup()':
sketch_nov09a.ino:17:30: error: 'StartTimer1' was not declared in this scope
sketch_nov09a.ino:18:16: error: 'StopTimer1' was not declared in this scope
sketch_nov09a.ino:19:21: error: 'UART_Init' was not declared in this scope
sketch_nov09a.ino: In function 'void detect_up()':
sketch_nov09a.ino:33:15: error: 'ResumeTimer1' was not declared in this scope
sketch_nov09a.ino: In function 'void detect_down()':
sketch_nov09a.ino:39:13: error: 'StopTimer1' was not declared in this scope
sketch_nov09a.ino: In function 'void loop()':
sketch_nov09a.ino:47:25: error: 'UART_ReadByte' was not declared in this scope
Shoower вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 53 (пользователей: 0 , гостей: 53)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 05:50. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика