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

Вернуться   Форум обсуждения оборудования "Умный дом" > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.12.2017, 02:03   #821
wmv84
Junior Member
 
Регистрация: 15.12.2017
Сообщений: 2
Вес репутации: 0
wmv84 is an unknown quantity at this point
По умолчанию

Здравствуйте! Есть желание сделать двухканальную гирлянду на ардуино на основе двух диммеров. Схему спаял, код залил, все работает. Но можно ли заставить ардуино выдавать на 4 пин цифровой сигнал для управления вторым диммером с несколько отличным наполнением скетча. Или брать вторую Нано и заливать в нее свой скетч и привязывать свой диммер?
int AC_LOAD = 3;
int dimming = 128; // Dimming level (0-128) 0 = ON, 128 = OFF

void setup()
{
pinMode(AC_LOAD, OUTPUT);// Set AC Load pin as output
attachInterrupt(0, zero_crosss_int, RISING); // Choose the zero cross interrupt # from the table above
}
// the interrupt function must take no parameters and return nothing
void zero_crosss_int() // function to be fired at the zero crossing to dim the light
{
// Firing angle calculation : 1 full 50Hz wave =1/50=20ms
// Every zerocrossing thus: (50Hz)-> 10ms (1/2 Cycle) For 60Hz => 8.33ms
// 10ms=10000us
// (10000us - 10us) / 128 = 75 (Approx) For 60Hz =>65
int dimtime = (75*dimming); // For 60Hz =>65
delayMicroseconds(dimtime); // Off cycle
digitalWrite(AC_LOAD, HIGH); // triac firing
delayMicroseconds(10); // triac On propogation delay (for 60Hz use 8.33)
digitalWrite(AC_LOAD, LOW); // triac Off
}

void loop() {

for (int i=30; i <= 100; i++){
dimming=i;
delay(3);
}
for (int i=5; i <= 100; i++){
dimming=i;
delay(10);
}
for (int i=30; i <= 100; i++){
dimming=i;
delay(3);
}
for (int i=5; i <= 100; i++){
dimming=i;
delay(10);
}
for (int i=100; i >= 10; i--){
dimming=i;
delay(20);
}
for (int i=20; i <= 100; i++){
dimming=i;
delay(30);
}
for (int i=5; i <= 100; i++){
dimming=i;
delay(10);}
for (int i=2; i <= 100; i++){
dimming=i;
delay(1);}
for (int i=2; i <= 100; i++){
dimming=i;
delay(2);}
for (int i=5; i <= 100; i++){
dimming=i;
delay(3);}
for (int i=15; i <= 100; i++){
dimming=i;
delay(4);}
for (int i=25; i <= 100; i++){
dimming=i;
delay(5);}
for (int i=45; i <= 100; i++){
dimming=i;
delay(15);}
}
wmv84 вне форума   Ответить с цитированием
Старый 15.12.2017, 13:44   #822
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,090
Вес репутации: 9288
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
По умолчанию

В шапке пример для работы с 3-мя диммерами
Admin вне форума   Ответить с цитированием
Старый 23.12.2017, 01:20   #823
wmv84
Junior Member
 
Регистрация: 15.12.2017
Сообщений: 2
Вес репутации: 0
wmv84 is an unknown quantity at this point
Thumbs up

Цитата:
Сообщение от Admin Посмотреть сообщение
В шапке пример для работы с 3-мя диммерами
Разобрался! Вы Золото
wmv84 вне форума   Ответить с цитированием
Старый 06.02.2018, 01:27   #824
kastor666
Junior Member
 
Регистрация: 06.02.2018
Сообщений: 2
Вес репутации: 0
kastor666 is an unknown quantity at this point
По умолчанию

Admin, использую ваш код со своим провереным Serial управлением из 5 ANSI символов, первые два - номер канала, 3тий - H или L для прямого выключения, 4и5 - значение яркости.Перевод в цифровые занчения делаю так:

if (Serial.available() > 0) { //если есть доступные данные
// считываем байт

///----------функція з димера 16канал///////


//Serial.flush();

er=Serial.read();
er1=Serial.read();

val = Serial.read(); // on/off var

port1 = Serial.read(); // read the port
port2 = Serial.read();



int p11=(int)er-48;
int p22=(int)er1-48;

pp=p11*10+p22;

chan_num_66=pp; //номер каналу

int p1=(int)port1-48;
int p2=(int)port2-48;
p=p1*10+p2;


dim_com =p; // значение яркости
chan_num=pp; // номер канала

UART_Init(19200); //инициализация порта - отключил, использую Serial.begin/

Если постоянно Arduino шлет в терминал данные, то в ответ я тоже могу посылать. Если остановить передачу из Arduino, то и из терминала данные не доходят вообще либо не то что отправлено.
kastor666 вне форума   Ответить с цитированием
Старый 06.02.2018, 06:47   #825
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,090
Вес репутации: 9288
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
По умолчанию

Сейчас у меня нет диммера, что бы проверить.
Но могу предложить попробовать все таки использовать код из шапки и отправлять 5 байт массивом. Дело в том что прерывания для обработки диммера срабатывают примерно 150 раз в секунду, а Serial.begin очень нагроможденная функция, к тому же скорость передачи у Вас заниженная, и не успевает отработать. Можно так же попробовать при работе serial запретить прерывания.
Хотя возможно проблема в другом, как я писал Выше нужно пробовать
Admin вне форума   Ответить с цитированием
Старый 07.02.2018, 03:54   #826
kastor666
Junior Member
 
Регистрация: 06.02.2018
Сообщений: 2
Вес репутации: 0
kastor666 is an unknown quantity at this point
По умолчанию

Вопрос таки не к коду диммера, как выяснилось.
kastor666 вне форума   Ответить с цитированием
Ответ


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

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

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

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

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


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


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