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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.03.2014, 21:21   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824
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, работающий в фоновом режиме

Цитата:
Сообщение от g100m Посмотреть сообщение
в смысле просто digitalwrite?
Да

Цитата:
или в смысле схему по другому сделать?
Схему менять не нужно
Admin вне форума   Ответить с цитированием
Старый 25.03.2014, 00:52   #2
kirex
Member
 
Регистрация: 24.03.2014
Сообщений: 38
Вес репутации: 0
kirex is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Неужели так никто и не поможет???
kirex вне форума   Ответить с цитированием
Старый 25.03.2014, 09:36   #3
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 800
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
Сообщение от kirex Посмотреть сообщение
Неужели так никто и не поможет???
Если я правильно понимаю, что за плавность выключения отвечает вот этот и аналогичные ему кусок
PHP код:
for(int fadeValue 0fadeValue <= 255fadeValue +=3)  
{  
analogWrite(LRfadeValue);  

Если принять время выполнения записи в аналоговый порт за 2 миллисекунды(это на самом деле много) - цикл заканчивается за 255/3*0,002= 0,17 секунд - т.е. на глаз плавное выключение не увидишь. Чтоб не тормозить программу плавность предлагаю использовать таймеры

в посте 96 этого топика есть пример моей реалиации функций плавного гашения и зажигания

Последний раз редактировалось Bulatovor; 25.03.2014 в 09:46.
Bulatovor вне форума   Ответить с цитированием
Старый 27.03.2014, 01:59   #4
kirex
Member
 
Регистрация: 24.03.2014
Сообщений: 38
Вес репутации: 0
kirex is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
Сообщение от Bulatovor Посмотреть сообщение
Если я правильно понимаю, что за плавность выключения отвечает вот этот и аналогичные ему кусок
PHP код:
for(int fadeValue 0fadeValue <= 255fadeValue +=3)  
{  
analogWrite(LRfadeValue);  

Если принять время выполнения записи в аналоговый порт за 2 миллисекунды(это на самом деле много) - цикл заканчивается за 255/3*0,002= 0,17 секунд - т.е. на глаз плавное выключение не увидишь. Чтоб не тормозить программу плавность предлагаю использовать таймеры

в посте 96 этого топика есть пример моей реалиации функций плавного гашения и зажигания
Со светом разобрался. Теперь нужно сделать возможным включение и выключение света кнопками (UP-Вкл., DOWN-Выкл.), независимо от времени. А также возможность включения и выключения нагревателя кнопками (LEFT-Вкл., RIGHT-Выкл.), независимо от температуры.
kirex вне форума   Ответить с цитированием
Старый 27.03.2014, 10:23   #5
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 800
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Я вот так развлекался с кнопками http://cyber-place.ru/showpost.php?p=4329&postcount=23 - не забудь про кондеры параллельно кнопкам
Bulatovor вне форума   Ответить с цитированием
Старый 27.03.2014, 18:15   #6
kirex
Member
 
Регистрация: 24.03.2014
Сообщений: 38
Вес репутации: 0
kirex is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
Сообщение от Bulatovor Посмотреть сообщение
Я вот так развлекался с кнопками http://cyber-place.ru/showpost.php?p=4329&postcount=23 - не забудь про кондеры параллельно кнопкам
Только каким образом прикрутить это к моему коду?
Вот часть кода с реле:

Код HTML:
// Если температура достигает 28,3 (с погрешностью), отключаем кипятильник
if (celsius > 28.3)
{
digitalWrite(40, Relay_Off);
lcd.setCursor(0, 1);
lcd.print("H1-Off");
}
if (celsius < 28.0)
{
digitalWrite(40, Relay_On);
lcd.setCursor(0, 1);
lcd.print("H1-On ");
}[/background][/size][/font][/color]
[color=#141414][font=Georgia, 'Times New Roman', Times, serif][size=4][background=rgb(252, 252, 255)]// Если температура достигает 28,5 (с погрешностью), отключаем кипятильник
if (celsius > 28.5)
{
digitalWrite(41, Relay_Off);
lcd.setCursor(7, 1);
lcd.print("H2-Off");
}
if (celsius < 28.0)
{
digitalWrite(41, Relay_On);
lcd.setCursor(7, 1);
lcd.print("H2-On ");
}
lcd_key = read_LCD_buttons(); // read the buttons
switch (lcd_key)                         // depending on which button was pus hed, we perform an action
{
case btnRIGHT:
{
digitalWrite(41,!digitalRead(41));
lcd.setCursor(7, 1);
lcd.print("H2-Off");
break;
}
case btnLEFT:
{
digitalWrite(41, Relay_On);
lcd.setCursor(7, 1);
lcd.print("H2-On ");
break;
}
case btnUP:
{
lcd.print("UP ");
break;
}
case btnDOWN:
{
lcd.print("DOWN ");
break;
}
}
}//------------Конец ЦИКЛА-----------------------------
Пока кнопку держу реле срабатывает, отпускаю - возвращается в первоначальное положение.
kirex вне форума   Ответить с цитированием
Старый 27.03.2014, 19:43   #7
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 800
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Ну во первых я не знаю есть ли в используемой тобой библиотеке подавление дребезга, если есть то можно использовать её. Дальше - 28,5 и 28,3 градуса это принципиально или от балды -если кипятильники вместе включаются, то лучше сделать в одном if. Ну и по существу - реле и должно отключаться по этому коду, так как - ты нажал кнопку -реле исполнило сигнал, потом программа начинается заново и реле опять принимает статус согласно датчику температуры. Вывод - нужно для начала определить алгоритм после нажатия кнопки - кипятильник просто включается и датчики температуры больше не действуют -до какого времени или события? Соответственно при нажатии кнопки присваивать флаг который проверять одновременно с показанием температуры с условием И
Вот здесь еще ошибочка
PHP код:
digitalWrite(41,!digitalRead(41));
lcd.setCursor(71);
lcd.print("H2-Off");
break; 
Если нагреватель выключен, то кнопка его включит, а напишет что выключен

И еще, нуно по этому поводу создать отдельну тему - от Диммера тут не остается и следа -сделай тему своего проекта -опиши его и то что хочешь получить

Последний раз редактировалось Bulatovor; 27.03.2014 в 19:51.
Bulatovor вне форума   Ответить с цитированием
Старый 27.03.2014, 21:54   #8
kirex
Member
 
Регистрация: 24.03.2014
Сообщений: 38
Вес репутации: 0
kirex is an unknown quantity at this point
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Цитата:
Сообщение от Bulatovor Посмотреть сообщение
Ну во первых я не знаю есть ли в используемой тобой библиотеке подавление дребезга, если есть то можно использовать её. Дальше - 28,5 и 28,3 градуса это принципиально или от балды -если кипятильники вместе включаются, то лучше сделать в одном if. Ну и по существу - реле и должно отключаться по этому коду, так как - ты нажал кнопку -реле исполнило сигнал, потом программа начинается заново и реле опять принимает статус согласно датчику температуры. Вывод - нужно для начала определить алгоритм после нажатия кнопки - кипятильник просто включается и датчики температуры больше не действуют -до какого времени или события? Соответственно при нажатии кнопки присваивать флаг который проверять одновременно с показанием температуры с условием И
Вот здесь еще ошибочка
PHP код:
digitalWrite(41,!digitalRead(41));
lcd.setCursor(71);
lcd.print("H2-Off");
break; 
Если нагреватель выключен, то кнопка его включит, а напишет что выключен

И еще, нуно по этому поводу создать отдельну тему - от Диммера тут не остается и следа -сделай тему своего проекта -опиши его и то что хочешь получить
С дребезгом не проблема, разберусь. А вот с кнопками, хоть убейте не пойму. Я в программировании почти полный ноль.

Кстати новую тему создал: http://www.cyber-place.ru/showthread...2120#post12120
kirex вне форума   Ответить с цитированием
Старый 30.03.2014, 14:35   #9
ChemDevil
Junior Member
 
Регистрация: 30.03.2014
Сообщений: 12
Вес репутации: 0
ChemDevil is an unknown quantity at this point
Exclamation Re: Многоканальный Dimmer, работающий в фоновом режиме

День добрый!
Требуется создать диммер, управляющий яркостью лампочки (в последствии - нагревательным элементом из нихромовой проволоки). Яркость задается через com порт через сериал. Окончание числа - пробел (мне так удобнее). Схему собрал согласно статье http://www.instructables.com/id/Ardu...r-The-circuit/Вот сама схемка: http://cdn.instructables.com/FQZ/NYV...G9TK.LARGE.jpg Вот код прошитый в ардуинку (Due):
Код:
String Bi = "";
int AC_LOAD = 3;   
int dimming = 256;

void setup() {
Serial.begin(9600);
pinMode(AC_LOAD, OUTPUT);// Устанавливаем AC Load пин как вывод
attachInterrupt(2, ZC, RISING); 
}

void ZC(){
  int dimtime = (39*(256-dimming));    // Полное время     
  delayMicroseconds(dimtime);    // Ждем 
  digitalWrite(AC_LOAD, HIGH);   // Триак посылает сигнал зажечься
  delayMicroseconds(10);         // Триак ждет, для 50 Гц - 10мс 
  digitalWrite(AC_LOAD, LOW);    // Триак посылает сигнал потухнуть
}

void loop() {
 while (Serial.available() > 0)
  {
   char c = Serial.read();
     if (c == ' ')
      {
          Serial.println(Bi);
          dimming = Bi.toInt();  
          Bi = "";
      }
       else 
       {
         Bi += c;    
       }      
  }
}
Посылаю через сериал яркость и пробел: пару значений воспринимает нормально и регулирует яркость, а потом не принимает ничего, а лампочка ведет себя более чем странно: яркость постепенно падает, потом доходит до 0, затем снова на максимум и повторяется Я так понимаю, что из-за того, что каждый полуцикл в сети у меня включается функция прерывания, у меня не прочитывает данные с serial. помогите, пожалуйста! В теме всё для плат ардуино нано и мега, у меня же дуе, поэтому хотел бы узнать либо альтернативу моему коду, либо помочь исправить ошибку. Заранее спасибо!
ChemDevil вне форума   Ответить с цитированием
Старый 30.03.2014, 15:18   #10
Bulatovor
Senior Member
 
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 800
Bulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond reputeBulatovor has a reputation beyond repute
По умолчанию Re: Многоканальный Dimmer, работающий в фоновом режиме

Мне кажется, что что-то не так с типами переменных при чтении с буфера, на 3 страницы этого топика есть код админа про чтение с буфера. А вообще мне кажется что и основной код данной темы тоже подойдет к этой схеме, только надо заменить функции библиотеки Cyber на стандартные Arduino
Bulatovor вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 5 (пользователей: 0 , гостей: 5)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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


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


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