DALI.ino
2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <Dali.h>
const int DALI_TX = 3;
const int DALI_RX_A = 0;
#define BROADCAST_DP 0b11111110
#define BROADCAST_C 0b11111111
#define ON_DP 0b11111110
#define OFF_DP 0b00000000
#define ON_C 0b00000101
#define OFF_C 0b00000000
# define QUERY_STATUS 0b10010000
# define RESET 0b00100000
void setup() {
Serial.begin(74880);
dali.setupTransmit(DALI_TX);
dali.setupAnalogReceive(DALI_RX_A);
dali.busTest();
help(); //Show help
}
void help() {
Serial.println("Enter 16 bit command or another command from list:");
Serial.println("help - command list");
Serial.println("on - broadcast on 100%");
Serial.println("off - broadcast off 0%");
Serial.println("scan - device short address scan");
Serial.println("initialise - start process of initialisation");
Serial.println();
}
void sinus () {
uint8_t lf_1_add = 0;
uint8_t lf_2_add = 1;
uint8_t lf_3_add = 2;
uint8_t lf_1;
uint8_t lf_2;
uint8_t lf_3;
int i;
int j = 0;
while (j != 1) {
for (i = 0; i < 360; i = i + 1) {
lf_1 = (int) abs(254 * sin(i * 3.14 / 180));
lf_2 = (int) abs(254 * sin(i * 3.14 / 180 + 2 * 3.14 / 3));
lf_3 = (int) abs(254 * sin(i * 3.14 / 180 + 1 * 3.14 / 3));
dali.transmit(lf_1_add << 1, lf_1);
delay(5);
dali.transmit(lf_2_add << 1, lf_2);
delay(5);
dali.transmit(lf_3_add << 1, lf_3);
delay(5);
delay(20);
}
}
}
void loop() {
const int delaytime = 500;
int i;
int cmd1;
int cmd2;
String comMsg;
// Read command from port
delay(delaytime);
while (Serial.available()) {
comMsg = comMsg + (char)(Serial.read());
}; // read data from serial
if (comMsg == "sinus") {
sinus();
};
if (comMsg == "scan") {
dali.scanShortAdd();
}; // scan short addresses
if (comMsg == "on") {
dali.transmit(BROADCAST_C, ON_C);
}; // broadcast, 100%
if (comMsg == "off") {
dali.transmit(BROADCAST_C, OFF_C);
}; // broadcast, 0%
if (comMsg == "initialise" or comMsg == "ini") {
dali.initialisation();
}; // initialisation
if (comMsg == "help") {
help();
}; //help
if (dali.cmdCheck(comMsg, cmd1, cmd2)) {
dali.transmit(cmd1, cmd2); // command in binary format: (address byte, command byte)
}
delay(delaytime);
};