· 6 years ago · Dec 09, 2019, 09:28 PM
1/*************************************************************************************************************
2*
3* Title : Example DMX Receiver
4* Version : v 0.3
5* Last updated : 07.07.2012
6* Target : Arduino mega 2560, Arduino mega 1280, Arduino nano
7* Author : Toni Merino - merino.toni at gmail.com
8* Web : www.deskontrol.net/blog
9*
10**************************************************************************************************************/
11#include <lib_dmx.h> // comment/uncomment #define USE_UARTx in lib_dmx.h as needed
12
13// This example receive 4 channels from address 1 to 4 and write analog values to PWM pins 2 to 5
14
15// outputs update in main loop
16
17
18//*********************************************************************************************************
19// New DMX modes *** EXPERIMENTAL ***
20//*********************************************************************************************************
21#define DMX512 (0) // (250 kbaud - 2 to 512 channels) Standard USITT DMX-512
22#define DMX1024 (1) // (500 kbaud - 2 to 1024 channels) Completely non standard - TESTED ok
23#define DMX2048 (2) // (1000 kbaud - 2 to 2048 channels) called by manufacturers DMX1000K, DMX 4x or DMX 1M ???
24#include <RBDdimmer.h>//
25
26//#define USE_SERIAL SerialUSB //Serial for boards whith USB serial port
27#define USE_SERIAL Serial
28#define outputPin 6
29#define zerocross 2 // for boards with CHANGEBLE input pins
30
31//dimmerLamp dimmer(outputPin, zerocross); //initialase port for dimmer for ESP8266, ESP32, Arduino due boards
32dimmerLamp dimmer(outputPin); //initialase port for dimmer for MEGA, Leonardo, UNO, Arduino M0, Arduino Zero
33
34void setup()
35{
36 ArduinoDmx0.set_control_pin(5); // Arduino output pin for MAX485 input/output control (connect to MAX485 pins 2-3)
37 ArduinoDmx0.set_rx_address(2); // set rx0 dmx start address
38 ArduinoDmx0.set_rx_channels(1); // number of rx channels
39 ArduinoDmx0.init_rx(DMX512); // starts universe 0 as rx, NEW Parameter DMX mode
40 dimmer.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE)
41 // pinMode(11,OUTPUT);
42} //end setup()
43
44void loop()
45{
46 //write values from dmx channels 1-4 universe 0 to arduino pwm pins 2-5
47 // analogWrite(11, ArduinoDmx0.RxBuffer[0]); //buffers 0 indexed
48 int val = ArduinoDmx0.RxBuffer[0];
49 if(val<=33) // ha 33 alatti érték jön, 0
50 {
51 val=0;
52
53 }
54
55 int intensity = map(val,0,255,0,100); // 0 és 255 közti jelet (bejövő dmx vagy 0 ugye) felosztja 0-100as skálára (ezt várja a dimmer)
56 if(val==0)
57 {
58 intensity=0;
59 }
60
61dimmer.setPower(intensity);
62} //end loop()