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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.03.2017, 00:11   #1
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
По умолчанию

PHP код:
#include <CyberLib.h> //Библиотека от Cyber-Place.ru
volatile unsigned long Dimmer

void setup()
{
  
D4_Out;  //Настраиваем порты на выход
  
D4_Low;  //установить на выходах низкий уровень сигнала
  
D2_In//настраиваем порт на вход для отслеживания прохождения сигнала через ноль

  //CHANGE – прерывание вызывается при любом изменении значения на входе;
  //RISING – вызов прерывания при изменении уровня напряжения с низкого (Low) на высокий(HIGH)
  //FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкий (Low)
  
attachInterrupt(0detect_upRISING);  // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень
  
}
//********************обработчики прерываний*******************************

void  detect_up()  // обработка внешнего прерывания. Сработает по переднему фронту
{
  
delay_us(Dimmer);
  
D4_High;
  
delay_us(40); //формируем импульс включения симистора
  
D4_Low;
}

//*************************************************************************
void loop() 
{
  
Dimmer 5500// время в микросекундах, где 500 = Max. 9500 = Min. 

Теоретически и так должно работать. На практике не проверял
Но мне не нравится большая пауза в прерывании, о многозадачности придется забыть
У меня в первой версии диммера было так реализовано
Но в первой версии оптрон был с одним светодиодом
Admin вне форума   Ответить с цитированием
Старый 26.03.2017, 01:53   #2
RaySun
Junior Member
 
Регистрация: 29.01.2017
Сообщений: 10
Вес репутации: 0
RaySun is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Admin Посмотреть сообщение
Теоретически и так должно работать. На практике не проверял
Но мне не нравится большая пауза в прерывании, о многозадачности придется забыть
У меня в первой версии диммера было так реализовано
Но в первой версии оптрон был с одним светодиодом
Схема "визуально"работает (проверил), но полностью с Вами согласен, для меня ключевой момент - нет многозадачности, в топку эту версию.
Просто я ищу куда можно в коде из шапки вклиниться, чтобы скажем выполнить несложную функцию, без "видимого"(в прямом смысле слова) влияния на работу димера.
Например выполнить функцию по запросу данных с датчика DS1820 или отправить в сериал массив данных.
Т.к. если что-то "в лоб" выполнять в loop(e), то эффект начинает визуально проявляться, особенно на низком напряжении.
Есть же мертвая зона пусть и в какое-то кол-во мкс. Пока на ум приходят мысли только о функции halfcycle()

Последний раз редактировалось RaySun; 26.03.2017 в 01:56.
RaySun вне форума   Ответить с цитированием
Ответ


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

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

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

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


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


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