DALI.ino 2.24 KB
#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);

};