16-канальный DMX диммер

std
Offline
Зарегистрирован: 05.01.2012
Светооператоры, цените.
 
Блока питания нет, просто снаружи подводится 12 В. Делалось для светодиодных лент, но дешевизна начинки позволяет спаять полноценный фонарик. Расширяется путём добавления регистров, то есть примерно ещё +150 руб, и он станет 24-канальным. Только помним про порядок байт.
 
Плата Arduino внутри находится в силу девайсостроения для театра - спишут спектакль, и можно дуину снять, замутить другой проект. Вообще вещь вполне законченная, поэтому можно сделать на одной плате с Atmega, без FTDI. Трансивер RS-485 тем не менее, надлежит устанавливать в кроватке - они иногда горят. Оптической изоляции интерфейс не имеет, и это минус. Но китайские фонарики делают так же.
 
Детали - светодиодный 4х-значный экран Grove (http://devicter.ru/goods/Grove-4-Digit-Display), 4 кнопки, переключатель или джампер, трансивер (ADM485, MAX451, SN75176 - что вам по вкусу), 7805, два разъема XLR25, два регистра 74HC595.
 
ПО:
 
1. либа для экрана
http://www.seeedstudio.com/wiki/File:DigitalTube.zip (называется DigitalTube, у меня каталог для порядка переименован в TM1637)
 
2. DMXSerial
 
3. ShiftPWM
 
Суть синтеза BAM. Понятна по картинке:
Светодиоды ведут себя при таком виде модуляции так же, как при ШИМ. Теоретически, чаще происходят переключения транзисторов, но реально незаметно. Существует артефакт модуляции - дырка из нулей величиной в полный цикл, при переходе с уровня 127 на 128. На частотах выше 75 Гц тоже не заметно.
 
Базовый адрес DMX используется для управления общим уровнем яркости. 16 адресов, следующих после базового, отвечают за каждый канал. Т. о. всего он занимает 17 DMX каналов. В случае, если граница последнего адреса выходит за предел 512, следующий адрес начинается с 1, например если базовый 504, то последний будет на канале 8.
 
При нажатии в режиме изменения адреса кнопки Set новый адрес сохраняется, при нажатии Mode - не сохраняется. В режиме приема DMX отображается тот адрес, который назначен в качестве базового. Пишется только тот байт адреса, который изменился - если изменить адрес, например с 327 на 476, то перепишется только второй байт.
 
Маленькая хитрость, связанная с DMXSerial - ShiftPWM использует сериал для вывода отладочной информации (в любом случае, даже если не просить об этом), поэтому при сборке будет получено сообщение об ощибке в классе HardwareSerial. Идем в каталог ShiftPWM, открываем файл CShiftPWM.c и убираем оттуда или комментируем все упоминания о Serial.
 
Обязательные выводы - 11 и 13 (если хотим использовать аппаратный SPI, что в 2.5 раза быстрее софтварного); 0 (Rx) - для ввода DMX информации с RS-485 трансивера. Если подпаиваем к дуине - то через выключатель, чтобы на время перешития можно было отключить её от трансивера. Иначе не пишется. Остальные выводы - любые.
 
Провода A и B, идущие от платы к разъемам, скручены. Оба провода отводятся от платы, т. е. на каждый контакт разъема идет только один провод. Это сделано для правильной работы DMX терминатора, подавляющего отражение сигнала.
 
Корпус, точнее стенки - из ПВХ. Верхняя и нижняя крышки вырезаны из алюмопластикового композита. Вообще, это так, для театра - выдержит, если встать на него ногами. Кнопки вклеены в отверстия. С экрана отпаивается разъем, потом как обычно - приклеиваем два куска ПВХ, и к стенке на саморезы. Монтаж МГТФом, отводы от выходов платы - МГШВ.
 
Программа:
// uses hardware SPI: clock - D13, data - D11
const int ShiftPWM_latchPin=8;
const bool ShiftPWM_invertOutputs = false; 
const bool ShiftPWM_balanceLoad = false;

#include <ShiftPWM.h>                  // include ShiftPWM after setting the pins!
#include <DMXSerial.h>                 // DMX-512 lib
#include <TM1637.h>                    // LDM display TM1637 lib
#include <EEPROM.h>                    // EEPROM lib

#define MODEPIN  4                     // mode input pin
#define UPPIN    5                     // inc. DMX address input pin
#define DOWNPIN  6                     // dec. DMX address input pin
#define SETPIN   7                     // set input pin
#define KEYSPEED 200                   // buttons action trheshold, ms

unsigned char maxBrightness = 255;     // top ShiftPWM threshold
unsigned char pwmFrequency  = 100;     // ShiftPWM BAM synth. frequency
int           numRegisters  = 2;       // 74HC595 amount in chain
boolean       setaddr       = false,   // DMX process/set address flag
              btn_up        = true,    // button flags
              btn_down      = true,
              btn_set       = true,
              btn_mode      = true;
unsigned long last_btn;                // buttons press timestamps
byte          ticks,                   // movement buttons handled actions
              deltadmx;                // movement step
int           dmxaddr       = 1,       // DMX address
              mult          = 0;       // all channels light multiplicator
uint8_t       dmxh,dmxl;               // EEPROM DMX record
int8_t        brightness    = 4;       // screen brightness level

TM1637 tm1637(2,3);                    // CLK & DIO input pin from TM1637

void dmxdisp(){                      
  int tmp;                             // temp
  int8_t digit[3];                     // address output
  tmp=dmxaddr-(dmxaddr%100);
  digit[0]=tmp/100;
  tmp=dmxaddr-(dmxaddr%10)-(digit[0]*100);
  digit[1]=tmp/10;
  digit[2]=dmxaddr-(digit[0]*100)-(digit[1]*10);
  if(setaddr){
    tm1637.display(0,0x0A);            // setup address
    tm1637.display(1,digit[0]);
    tm1637.display(2,digit[1]);
    tm1637.display(3,digit[2]);
  }else{
    tm1637.display(1,digit[0]);        // display address
    tm1637.display(2,digit[1]);
    tm1637.display(3,digit[2]);
  }
}

void processmovestep(){
  ticks++;
  if(ticks>10) deltadmx=10;         // increase step
  if(ticks>20) deltadmx=50;
  if(ticks>30){                     // reset step
    deltadmx=1;
    ticks=0;
  }
  dmxdisp();
}

void setup(){
  ShiftPWM.SetAmountOfRegisters(numRegisters);      // ShiftPWM init
  ShiftPWM.SetPinGrouping(1);                       // no RGB grouping
  ShiftPWM.Start(pwmFrequency,maxBrightness);
  pinMode(SETPIN,INPUT_PULLUP);        // init input key pins
  pinMode(MODEPIN,INPUT_PULLUP);
  pinMode(UPPIN,INPUT_PULLUP);
  pinMode(DOWNPIN,INPUT_PULLUP);
  tm1637.init();                       // LDM init
  tm1637.set(brightness);
  DMXSerial.init(DMXReceiver);
  dmxh=EEPROM.read(0x00);              // restore DMX
  dmxl=EEPROM.read(0x01);
  if(dmxh!=0xFF) dmxaddr=(dmxh*256)+dmxl;
  dmxdisp();
}

void loop(){
  byte i,j; // counter
  if(setaddr){
    if(btn_up && btn_down && btn_set && btn_mode){  // read movement keys from idle mode
      btn_up=digitalRead(UPPIN);
      btn_down=digitalRead(DOWNPIN);
      btn_set=digitalRead(SETPIN);
      btn_mode=digitalRead(MODEPIN);
      last_btn=millis();
      ticks=0;
      deltadmx=1;
      if(!btn_up && !btn_down) btn_down=true;
    }
    if(!btn_mode){                                // back to DMX process mode
      btn_mode=true;                              // change mode
      setaddr=false;
      dmxh=EEPROM.read(0x00);                     // restore DMX
      dmxl=EEPROM.read(0x01);
      if(dmxh!=0xFF) dmxaddr=(dmxh*256)+dmxl;
      tm1637.init();                              // reset screen
      delay(500);
      dmxdisp();
    }
    if(!btn_set){                                 // store DMX
      if(dmxaddr>255){
        if(EEPROM.read(0x00)!=0x01) EEPROM.write(0x00,0x01);
        dmxl=dmxaddr-256;
      }else{
        if(EEPROM.read(0x00)!=0x00) EEPROM.write(0x00,0x00);
        dmxl=dmxaddr;
      }
      if(EEPROM.read(0x01)!=dmxl) EEPROM.write(0x01,dmxl);
      btn_set=true;                               // change mode
      setaddr=false;
      tm1637.init();                              // reset screen
      delay(500);
      dmxdisp();
    }
    if(!btn_up) btn_up=digitalRead(UPPIN);        // read movement keys from moving mode
    if(!btn_down) btn_down=digitalRead(DOWNPIN);
    if(!btn_up && millis()-last_btn>=KEYSPEED){   // move DMX up
      last_btn=millis();
      dmxaddr+=deltadmx;
      if(dmxaddr>512) dmxaddr=1;
      processmovestep();
    }
    if(!btn_down && millis()-last_btn>=KEYSPEED){ // move DMX down
      last_btn=millis();
      dmxaddr-=deltadmx;
      if(dmxaddr<1) dmxaddr=512;
      processmovestep();
    } 
  }else{
    if(digitalRead(MODEPIN)==0){                 // enter set address mode
      setaddr=true;                              // change mode
      tm1637.init();                             // reset screen
      delay(500);
      dmxdisp();
    }
    mult=DMXSerial.read(dmxaddr);                // global brightness
    for(i=0;i<=15;i++){                          // channel brightness
      if(i<=7) j=i+8;             // byte order correction
       else j=i-8;
      if(dmxaddr+i+1>512) ShiftPWM.SetOne(j,(byte)(DMXSerial.read(dmxaddr+i+1-512)*mult/256));
      else ShiftPWM.SetOne(j,(byte)(DMXSerial.read(dmxaddr+i+1)*mult/256));
    }
  }
}

Фотки:

  

разводка и схема:

 

На снимке монтажа не видно, но на плате 4 горизонтальных перемычки, они пересекают плюс и провод D, в середине платы снизу. Разводка - со стороны деталей.

std
Offline
Зарегистрирован: 05.01.2012

Ошибочка вышла, последний транзюк второго регистра (по схеме Q4) подключен не к 9 выводу а к 7. Разводка все же со стороны монтажа, пока писал - думал о smd кондерах возле микросхем... Детали же :))

armanlight
Offline
Зарегистрирован: 17.01.2012

А можно модифицировать схему для управления 250 каналами как я понимаю надо доставить сдвиговых регистров и изменить код с пояльником дружу хорошо а вот с кодом у меня проблемки), мне для конструкции надо столько каналов а собирать километр плат на отдельных ардуино выходит дороговато если можно подскажите как изменить код, мой маил armanlight@mail.ru  заранее спасибо.

ISerhiy
Offline
Зарегистрирован: 01.11.2014

Можеш перезалить фотки твоего проекта???

std
Offline
Зарегистрирован: 05.01.2012

Лежит в театре, гдеж ему быть. Схожу, раскручу.

А схема где-то была.

ISerhiy
Offline
Зарегистрирован: 01.11.2014

А схему можна увидеть???

std
Offline
Зарегистрирован: 05.01.2012

Щас нету времени, в субботу нарисую, если исходник не найду.

Sanyavlasov
Offline
Зарегистрирован: 17.04.2015

Можно ли переделать этот код для 6 каналов аппаратного ШИМа?

heaven_rover
Offline
Зарегистрирован: 26.03.2015

-- картинок-то нет. Как бы вообще непонятно о чём речь ))

wifilan
Offline
Зарегистрирован: 01.12.2014

было бы неплохо получить схемы

wifilan
Offline
Зарегистрирован: 01.12.2014

и библиотеку

3. ShiftPWM
https://github.com/elcojacobs/ShiftPWM/downloads - открывается пустая страница
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013
wifilan
Offline
Зарегистрирован: 01.12.2014

спс за библиотеку, осталось дело за схемами

std
Offline
Зарегистрирован: 05.01.2012

All, прошу извинить за молчание. Раньше можно было днями на форуме или в доту раковать - сейчас хоть какая-то жизнь появилась :) Понимаю вопросы, но это всё радикал.

Вот как выглядит DMX приёмник:

Лежит на imgur. Но если и он удалит - она позаимствована у OpenDMX. Схема подключения регистров находится на сайте Elco Jacobs, в разделе про ShiftPWM.

heaven_rover
Offline
Зарегистрирован: 26.03.2015

Спасибо, уже намного понятнее. Только фотографий всё равно нет, поэтому не до конца понятно. Что за устройство-то, каково его назначение? А то Светооператоры наверное понимают, а простым смертным остаётся лишь гадать.

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

вообще ни чего не понял, как димером управлять, как его заадресовать, какая нагрузка ему по зубам

работаю режисером по свету

5 залов/пол тыщщи дмх приборов

Sh0a1m0a0n1
Offline
Зарегистрирован: 16.09.2016

heaven_rover пишет:

Спасибо, уже намного понятнее. Только фотографий всё равно нет, поэтому не до конца понятно. Что за устройство-то, каково его назначение? А то Светооператоры наверное понимают, а простым смертным остаётся лишь гадать.

Да простая вещь. Протокол DMX512, работает на протоколе RS485. Всего есть 512 каналов, с их помощью можно управлять приборами, да, в принципе, чем угодно. Каждый канал передаёт значение от 0 до 255(0-100%). Самое простое применение - управление яркостью приборов, но так же можно управлять и фокусом, зумом, направлять приборы диначмического света.

Конкретно же этот прибор, как я понимаю, принимает сигнал DMX и можно к нему подключить, например, несколько диодов и управлять их яркостью.

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

Согласен, все оказалось совсем просто, что на аппаратной части что на програмном уровне, вот простой свитчь с адресацией, ну а усб коробочку ваще можно собрать за 120 руб, нужно только копать, у меня уже весь дмх на радио, красотище, все копейки, начальство довольно

код свичтча

#include <DMXSerial.h>
void setup () { 
  DMXSerial.init(DMXReceiver);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT); 
  pinMode(8, OUTPUT); 
  pinMode(9, OUTPUT); 
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT); 
  pinMode(12, OUTPUT); 
  pinMode(13, OUTPUT);  
}
void loop() {
unsigned long lastPacket = DMXSerial.noDataSince();

int n = 1;
int k = 155; 

if (DMXSerial.read(n) > k) { 
    digitalWrite (2, LOW);
    } else {
    digitalWrite (2, HIGH);
    }
if (DMXSerial.read(n+1) > k) {
    digitalWrite (3, LOW);
    } else {
    digitalWrite (3, HIGH);
    }
if (DMXSerial.read(n+2) > k) { 
    digitalWrite (4, LOW);
    } else {
    digitalWrite (4, HIGH);
    }
if (DMXSerial.read(n+3) > k) { 
    digitalWrite (5, LOW);
    } else {
    digitalWrite (5, HIGH);
    }
if (DMXSerial.read(n+4) > k) { 
    digitalWrite (6, LOW);
    } else {
    digitalWrite (6, HIGH);
    }
if (DMXSerial.read(n+5) > k) { 
    digitalWrite (7, LOW);
    } else {
    digitalWrite (7, HIGH);
    }
if (DMXSerial.read(n+6) > k) { 
    digitalWrite (8, LOW);
    } else {
    digitalWrite (8, HIGH);
    }
if (DMXSerial.read(n+7) > k) { 
    digitalWrite (9, LOW);
    } else {
    digitalWrite (9, HIGH);
    } 
if (DMXSerial.read(n+8) > k) { 
    digitalWrite (10, LOW);
    } else {
    digitalWrite (10, HIGH);
    } 
if (DMXSerial.read(n+9) > k) { 
    digitalWrite (11, LOW);
    } else {
    digitalWrite (11, HIGH);
    }      
if (DMXSerial.read(n+10) > k) { 
    digitalWrite (12, LOW);
    } else {
    digitalWrite (12, HIGH);
    }      
if (DMXSerial.read(n+11) > k) { 
    digitalWrite (13, LOW);
    } else {
    digitalWrite (13, HIGH);
    }          
}

здесь прошит начальный адрес "1"

можно адреса устанавливать переключателем

int pin = digitalRead(A0) + digitalRead(A1)*2 + digitalRead(A1)*4 + digitalRead(A1)*8 
+ digitalRead(A1)*16 + digitalRead(A1)*32 + digitalRead(A1)*64
+ digitalRead(A1)*128 + digitalRead(A1)*256;
 
на релейные болоки подаем LOW и они срабатывают, на тиристоры на оборот, при симисторном диммере чуть другой код, все работает и самое главное - очень быстрая реакция в отличие от заводских китайских диммеров/свитчеров

 

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

ftdi max 485  - лутший тандем для усб дмх интерфейса 

Sh0a1m0a0n1
Offline
Зарегистрирован: 16.09.2016

По нарисованной Вами схеме поключил, собрал. Поуправляли лунами через WiFi  с моего телефона. Вопрос - как подключить эту схему для приёма DMX-сигнала? Смотрю, у ТС совершенно такое же подключение нарисовано, как и для передачи. Это разве правильно?

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

http://city416.ru/mod/dmx_r_4.html

я по этой слеме приемник подключаю

olegoriy
Offline
Зарегистрирован: 08.02.2015

splans пишет:

http://city416.ru/mod/dmx_r_4.html

я по этой слеме приемник подключаю

Здравствуйте. Подскажите пожалуйста я все правильно понял? Подключаем DMX к sn75176, его выход к ардуине,заливаем скетч что у вас выше и получаем управление?

Неужели все так просто?

Это же и шаговиками можно управлять и вобше чем угодно. Просто я только что закончил переделовать светодиодную голову полностью на ардуино. Все получилось и инициация икса и игрика, и светодиоды ключами шимом управляются. И уже хотел хаотичную программку написать чтобы ездила и светила как попало, но увидел ваш код и подумал почему бы Dmx управление не замутить))

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

я сам в шоке, все работает, я даже подогнал протокол управления нео пикселями, все волшебным образом работает

olegoriy
Offline
Зарегистрирован: 08.02.2015

Подскажите пожалуйста еще один момент. Если в вашем коде переменную "n" задать не 1 а к пимеру 200 то и у устройства будет двухсотый адрес?

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015
Да, это прямое прописывание адреса 
funtik_kmv
Offline
Зарегистрирован: 15.12.2016

Подскажите пожалусто, а если для пробы использовать маленькую arduino pro micro у нее нет 11 и 13 пина, их просто убрать из скетча или и так заработает? Сорри за возможную нелепость вопроса, только начинаю изучать arduino.

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

да, конечно, я щас все только на прошках и собираю

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

а почему arduino pro micro? а не мини?

funtik_kmv
Offline
Зарегистрирован: 15.12.2016

Pro micro заказывал под проект 2 штуки, вторая не понадобилась вот и хочу ее использовать.

olegoriy
Offline
Зарегистрирован: 08.02.2015

https://youtu.be/6mFagVH_w2c

все получилось спасибо)))

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

молодца, санлайт 2й еще хуже сана 1го, qlcplus даст полную свободу и избавит от нервов, коробочку может собрат младенец, можно скетч сюда выложить

olegoriy
Offline
Зарегистрирован: 08.02.2015

Доброй ночи, Вот сижу работаю свадьбу в 10 голов и в 24 пара светодиодных разномастных и думаю о пиве)))

Зря вы так на санлайт ругаетесь.  Сам являюсь поклоннеком даслайта еще с 2003 года на первом работаю и если сказать честно тоже плохо относился к санлайтам  и всем говорил что даслайт удобнее. Пока со мной не случился один момент, работал я как то день города в одном провинциальном городке , и узнал за два часа да начала мероприятия что за приборы будут, вот там санлайт со своими авто-сценами очень выручил))

Курирую почти все заведения в своем городе , где санлайт где даслайт разници особой не вижу. 

Конечно в четвертом даслайте крутые авто сцены на rgb приборы очень упрощают жизнь) хоть экран с текстами или с картинками мути, ну конечно столько приборов нет)

Вот что еще вспомнил у санлайта2 если прибор пишешь в библиотеке RGBW то он учитывает белый свет в палитре больше я не где этого не встречал.

Работаю свадьбы со своим светом(славо богу) так вот работаю то санлайтом то даслайтом то пилотом 2000 когда как настроение , а то и всем сразу))

 

Сори если гружу текстом ))) а то я уже не только думал о пиве но уже и вмазал)) 

Код как буду на работе обязательно выставлю с пояснениями) 

 

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

что за автосцены? это движение голов по видам крывых? тк оно везде есть

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

qlcplus - пишет сцены мгновенно

olegoriy
Offline
Зарегистрирован: 08.02.2015

Тот случай когда проще показать чем обьяснить))

https://youtu.be/_JnE7PyAAlM

Там настроек море. Для светодиодных паров просто незаменимая штука. 

Да и код для головы может кому поможет))

#include <Stepper.h>
#include <DMXSerial.h>
int x = 0;
int y = 0;
int ranx;
int rany;
int LED_RED = 11;     // пины светодиодов
int LED_GREEN = 9;
int LED_BLUE = 6;
int TEST = A0;        // пин концивика для теста
int z = 0;
const int INX1 = A1;  // пны двигателя Х
const int INX2 = A2;
const int INX3 = A3;
const int INX4 = A5;
const int INY1 = 10;  // пины двигателя Y
const int INY2 = 8;
const int INY3 = 7;
const int INY4 = 4;

const int stepsPerRevolutionX = 5; 
const int stepsPerRevolutionY = 4; 

Stepper myStepperX(stepsPerRevolutionX, INX1, INX2, INX3, INX4);
Stepper myStepperY(stepsPerRevolutionY, INY1, INY2, INY3, INY4); 

void setup() {
  myStepperX.setSpeed(4000); 
  myStepperY.setSpeed(1000); 
  pinMode(LED_RED, OUTPUT);
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_BLUE, OUTPUT);
  pinMode(TEST, INPUT_PULLUP);
  DMXSerial.init(DMXReceiver);
  
}

void loop() {

  
  if( z == 0){myStepperX.step(stepsPerRevolutionX);}   // цикл теста
  if (!digitalRead(TEST)) {
    for (int i=0; i < 25; i++){
     myStepperY.step(stepsPerRevolutionY);}
     delay(1000);
     myStepperX.step(-stepsPerRevolutionX);
     myStepperX.step(-stepsPerRevolutionX);
     myStepperX.step(-stepsPerRevolutionX);
     analogWrite(LED_RED, 255);
     analogWrite(LED_GREEN,255);
     analogWrite(LED_BLUE, 255);
     x=0;
     y=0;
     delay(1000);
     z = 1;
     }

  
  if( z == 1){
 unsigned long lastPacket = DMXSerial.noDataSince();     // цыкл работы
 ranx = DMXSerial.read(4);
 rany = DMXSerial.read(5)/10;
 if(x < ranx) {myStepperX.step(-stepsPerRevolutionX); x = x +1;}
 if(x > ranx) {myStepperX.step(stepsPerRevolutionX);x = x - 1;}
 if(y < rany) {myStepperY.step(-stepsPerRevolutionY); y = y +1;}
 if(y > rany) {myStepperY.step(stepsPerRevolutionY);y = y - 1;}

   analogWrite(LED_RED, DMXSerial.read(1));
   analogWrite(LED_GREEN, DMXSerial.read(2));
   analogWrite(LED_BLUE, DMXSerial.read(3));
   
   if(DMXSerial.read(6) > 127)z = 0;
  }
  
}

 

olegoriy
Offline
Зарегистрирован: 08.02.2015

Вы наверное про автосцены санлайта спращивали)

Да я именно про кривые икса и игрика, кружочки там квадратики уже сразу на панели при добавлении прибора.

Они конечно беспонтовые но иногда очень полезны если времени в обрез.

 

А qlcplus обязательно попробую.

Она совместима с коробочками даслайт или санлайт или проще самому сделать?

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

За код спасибо, молодец, qlcplus нужна коробочка ftdi max 485  150 руб цена, но если даслайт Вам наравится то нет смысла менять, qlcplus очень простая без наворотов, все есть для работы, для меня само то

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

qlcplus простенькое детское представление, сенсорный пульт из старого ноута + точь стекло из китая

 

olegoriy
Offline
Зарегистрирован: 08.02.2015

Очень вдохновился самодельным dmx-ом вот результат))):http://youtu.be/4z2AmI4PeqY

Подумываю о том чтобы все PAR-ы переделать)))))

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

мягенько так ходит по PAN, да и шустренько, на МОСФЕТах диоды?

olegoriy
Offline
Зарегистрирован: 08.02.2015

Не много не понял вашего вопроса про диоды. :((

PAR остался без изменений. Была сделанна платформа для его вращения. Были использованы: шаговый двигатель nema 17, контроллер arduino, драйвер A4988, шифратор max 485, макетная плата, провода, термоусадка, и куча времени))))

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

PAN - это ход по панораме, горизонт тобищь, мягкий ход учитывая прямой привод

olegoriy
Offline
Зарегистрирован: 08.02.2015

Спасибо. Плавность хода заслуга драйвера двигателя, используется дробление шага 1/16.

VaZo
Offline
Зарегистрирован: 11.08.2017

Привет!

Подскажи пожалуйста скетч для управления головой.

Тот что ты запостил как я понимая для управления драйвером на основе полумостов (4 входа)

А, в цитируемом посте у тебя написано - нема 17, драйвер А4988....

Драйвер 4988 управляется STEP/DIR.

Хотелось бы увидеть скетч для данного драйвера. 

Тоже хочу собрать голову на ардуино.

БУду тебе очень благодарен!

П.С. Если есть возможность - кинь мне этот скетч на почту : zwp@mail.ru

 

СПАСИБО!

 

 

 

VaZo
Offline
Зарегистрирован: 11.08.2017

а будет разница между 1/16 и 1/32 микрошагом?

VaZo
Offline
Зарегистрирован: 11.08.2017

olegoriy пишет:

Спасибо. Плавность хода заслуга драйвера двигателя, используется дробление шага 1/16.

Кстати, какая библиотека используется?

 

olegoriy
Offline
Зарегистрирован: 08.02.2015

splans не нашел как написать вам в личку 

но вы меня вдохновили на это:

https://youtu.be/wKf6859eP14

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

http://city416.ru  -  вот кому спасибо, ну и вам за хорошие слова

попробуйте appinventor - андроид програмирование, блютуз управление намного проше, клиенты писаются от удовольствия обладания системой, настоятельно советую

пары которые у вас не соответсвуют уличному использованию, не долго проживут, совет - купите лак спрей и опрыскайте платы и контактные группы, конекота дмх удалите и спаяйте в тракт, не забывайте про сплитеры, их тоже в легкую на ардуино собрать можно, ну и на последок - не канальте грядкой, пишите сцены, переливы и волны - ваш конек как осветителя, люди должны быть удивленными нестандартами

deep
Offline
Зарегистрирован: 08.02.2014

Господа! ...А можно для идиотов как собрать DMX приемник? 

1. Есть TTL-RS485 переходник. там есть вывода RE,RO,DE,DI - какие куда подключить для считываения каналов DMX?

2. какой скетч запустить?

3. как вывести в консоль значения каналов?

 

Спасибо