Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| zheleznaja_chast:dmx_512_priemnik_svoimi_rukami [2016/01/25 01:37] – Leo | zheleznaja_chast:dmx_512_priemnik_svoimi_rukami [2025/12/23 11:48] (текущий) – внешнее изменение 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== DMX512 приемник, | ====== DMX512 приемник, | ||
| ===== Описание ===== | ===== Описание ===== | ||
| - | В этой статье, | + | В этой статье, |
| - | <note tip> | + | <note tip> |
| </ | </ | ||
| ===== Элементы ===== | ===== Элементы ===== | ||
| Строка 24: | Строка 24: | ||
| |ATmega168|ATmega168|Микроконтроллер для управления| | |ATmega168|ATmega168|Микроконтроллер для управления| | ||
| |ICSP|ICSP|Разьем для программирования Atmega168| | |ICSP|ICSP|Разьем для программирования Atmega168| | ||
| - | |DMX|XLR|Разьем XLR или схожий с ним| | + | |[[: |
| |6N137|6N137|Оптрон для гальванической развязки линий.(// | |6N137|6N137|Оптрон для гальванической развязки линий.(// | ||
| - | |MAX481|MAX481(или MAX482)|Микросхема преобразователь дифференциального сигнала DMX в логический сигнал| | + | |MAX481|MAX481(или MAX482)|Микросхема преобразователь дифференциального сигнала |
| |DC1|0505|Чип питания отдельной линии, используется для гальванической развязки| | |DC1|0505|Чип питания отдельной линии, используется для гальванической развязки| | ||
| ===== Схема контроллера и платы ===== | ===== Схема контроллера и платы ===== | ||
| - | {{ : | + | ==== Схема ==== |
| + | {{ : | ||
| + | ==== Плата | ||
| {{ : | {{ : | ||
| ===== Прошивка Микроконтроллера ===== | ===== Прошивка Микроконтроллера ===== | ||
| Скачать прошивку МК{{: | Скачать прошивку МК{{: | ||
| - | Библиотека DMX 512 для МК {{: | + | Библиотека |
| ===== Модернизация ===== | ===== Модернизация ===== | ||
| Вы сможете собрать готовую схему на монтажной плате, и попробовать как работает эта схема. А также в зависимости от опыта работы с МК, вы сможете заменять разные узлы данной схемы, например вместо транзисторов использовать реле для большой нагрузки, | Вы сможете собрать готовую схему на монтажной плате, и попробовать как работает эта схема. А также в зависимости от опыта работы с МК, вы сможете заменять разные узлы данной схемы, например вместо транзисторов использовать реле для большой нагрузки, | ||
| + | ===== Прошивка ===== | ||
| + | Необходимую библиотеку добавить в папку с компилятором. | ||
| + | // | ||
| + | <code cpp DMXReciver.txt> | ||
| + | #include < | ||
| + | |||
| + | // Константы выходных пинов | ||
| + | |||
| + | const int RedPin = 9; // Пин для красного | ||
| + | const int GreenPin = 6; // Пин для зеленого | ||
| + | const int BluePin = | ||
| + | |||
| + | |||
| + | void setup(void) | ||
| + | { | ||
| + | |||
| + | |||
| + | DMXSerial.init(DMXController); | ||
| + | |||
| + | |||
| + | |||
| + | pinMode(RedPin, | ||
| + | pinMode(GreenPin, | ||
| + | pinMode(BluePin, | ||
| + | |||
| + | analogWrite(RedPin, | ||
| + | analogWrite(GreenPin, | ||
| + | analogWrite(BluePin, | ||
| + | } | ||
| + | |||
| + | |||
| + | // | ||
| + | void setChannelRGB(int channel, int hue) { | ||
| + | hue = hue % 765; | ||
| + | if (hue < 256) { | ||
| + | /// От синего к красному | ||
| + | DMXSerial.write(channel | ||
| + | DMXSerial.write(channel+1, | ||
| + | DMXSerial.write(channel+2, | ||
| + | |||
| + | } else if (hue < 511) { | ||
| + | /// От красного до зеленого | ||
| + | DMXSerial.write(channel | ||
| + | DMXSerial.write(channel+1, | ||
| + | DMXSerial.write(channel+2, | ||
| + | |||
| + | } else { | ||
| + | /// От зеленого к синему | ||
| + | DMXSerial.write(channel | ||
| + | DMXSerial.write(channel+1, | ||
| + | DMXSerial.write(channel+2, | ||
| + | } // if | ||
| + | } // setChannelRGB() | ||
| + | |||
| + | |||
| + | void loop(void) | ||
| + | { | ||
| + | unsigned long now = millis(); | ||
| + | int channeldmx= 1; | ||
| + | | ||
| + | |||
| + | int alpha = (now / 12) % 765; | ||
| + | |||
| + | |||
| + | |||
| + | for (int n = 0; n < 20; n++) { | ||
| + | setChannelRGB (n*3+1, alpha + n*64); | ||
| + | } | ||
| + | | ||
| + | |||
| + | analogWrite(RedPin, | ||
| + | analogWrite(GreenPin, | ||
| + | analogWrite(BluePin, | ||
| + | } | ||
| + | </ | ||
| + | Переменная **channeldmx** - устанавливает [[: | ||
| + | |||
| ===== Готовый вид платы выглядит так ===== | ===== Готовый вид платы выглядит так ===== | ||
| - | {{: | + | |
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| ===== Готовое устройство ===== | ===== Готовое устройство ===== | ||
| - | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{: | ||
| + | {{tag> | ||
| ---- | ---- | ||
| [[zheleznaja_chast: | [[zheleznaja_chast: | ||