2022-10-24 15:57:52 +02:00
|
|
|
#include <DMXSerial.h>
|
|
|
|
|
|
2023-02-07 18:41:44 +01:00
|
|
|
//Détail des trames
|
|
|
|
|
//Réception
|
|
|
|
|
//Demande de mise à jour d'un canal 0xC 0xCANAL 0xVALUE
|
|
|
|
|
//Demande de version 0xD
|
|
|
|
|
//Envoi
|
|
|
|
|
//Envoi d'un status prêt 0xA
|
|
|
|
|
//Envoi d'un status de mise à jour réussie 0xE
|
|
|
|
|
//Envoi de la version firmware 0xD VERSION
|
2022-10-24 15:57:52 +02:00
|
|
|
|
2023-02-07 18:41:44 +01:00
|
|
|
|
|
|
|
|
#define FIRMWARE_VERSION "DMXBOX V0.0.2"
|
|
|
|
|
|
|
|
|
|
unsigned int receiveState = 0;
|
|
|
|
|
unsigned int channel = 0;
|
2022-10-24 15:57:52 +02:00
|
|
|
|
|
|
|
|
//Modifie un canal DMX512
|
2023-02-07 18:41:44 +01:00
|
|
|
void setCanal(unsigned int number, unsigned int value){
|
2022-10-24 15:57:52 +02:00
|
|
|
DMXSerial.write(number, value);
|
2023-02-07 18:41:44 +01:00
|
|
|
Serial.write(0xE);
|
2022-10-24 15:57:52 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Initialisation
|
|
|
|
|
void setup() {
|
|
|
|
|
Serial.begin(9600);
|
|
|
|
|
DMXSerial.init(DMXController);
|
2023-02-07 18:41:44 +01:00
|
|
|
Serial.write(0xA);
|
2022-10-24 15:57:52 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Interception des commandes de canaux
|
|
|
|
|
void loop() {
|
|
|
|
|
if(Serial.available())
|
|
|
|
|
{
|
2023-02-07 18:41:44 +01:00
|
|
|
unsigned int received = Serial.read();
|
|
|
|
|
if(received == 0xD && receiveState == 0) {
|
|
|
|
|
Serial.write(0xD);
|
|
|
|
|
Serial.println(FIRMWARE_VERSION);
|
|
|
|
|
}
|
|
|
|
|
//Demande de paramétrage canal
|
|
|
|
|
else if(received == 0xC && receiveState == 0) receiveState = 1;
|
|
|
|
|
else if(receiveState == 1) {
|
|
|
|
|
channel = received;
|
|
|
|
|
receiveState = 2;
|
|
|
|
|
}
|
|
|
|
|
else if(receiveState == 2){
|
|
|
|
|
setCanal(channel, received);
|
|
|
|
|
receiveState = 0;
|
|
|
|
|
channel = 0;
|
2022-10-24 15:57:52 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|