Program for Nucleo Board / DMX protocol only

Committer:
villemejane
Date:
Tue Mar 01 08:27:17 2022 +0000
Revision:
1:8bb95fa25427
Parent:
0:1647cc24e061
Program for Nucleo Board / DMX protocol only

Who changed what in which revision?

UserRevisionLine numberNew contents of line
villemejane 0:1647cc24e061 1 /****************************************************************************/
villemejane 0:1647cc24e061 2 /* Test DMX512 */
villemejane 0:1647cc24e061 3 /****************************************************************************/
villemejane 0:1647cc24e061 4 /* LEnsE / Julien VILLEMEJANE / Institut d'Optique Graduate School */
villemejane 0:1647cc24e061 5 /****************************************************************************/
villemejane 0:1647cc24e061 6 /* Brochage */
villemejane 0:1647cc24e061 7 /* TO COMPLETE */
villemejane 0:1647cc24e061 8 /****************************************************************************/
villemejane 0:1647cc24e061 9 /* Test réalisé sur Nucléo-L476RG */
villemejane 0:1647cc24e061 10 /****************************************************************************/
villemejane 0:1647cc24e061 11
villemejane 0:1647cc24e061 12 #include "mbed.h"
villemejane 0:1647cc24e061 13 #include "platform/mbed_thread.h"
villemejane 0:1647cc24e061 14
villemejane 0:1647cc24e061 15 #define SAMPLES 512
villemejane 0:1647cc24e061 16 Serial debug_pc(USBTX, USBRX);
villemejane 0:1647cc24e061 17
villemejane 0:1647cc24e061 18 Serial dmx(A0, A1);
villemejane 0:1647cc24e061 19 DigitalOut out_tx(D5);
villemejane 0:1647cc24e061 20 DigitalOut start(D4); //envoie des données
villemejane 0:1647cc24e061 21 DigitalOut enableDMX(D6);
villemejane 0:1647cc24e061 22 AnalogIn CV_volume(PC_1);
villemejane 0:1647cc24e061 23 AnalogIn CV_pitch(PB_0);
villemejane 0:1647cc24e061 24
villemejane 0:1647cc24e061 25 AnalogIn variationR(PC_0);
villemejane 0:1647cc24e061 26 AnalogIn variationG(PC_2);
villemejane 0:1647cc24e061 27 AnalogIn variationB(PC_3);
villemejane 0:1647cc24e061 28
villemejane 0:1647cc24e061 29 // DMX
villemejane 0:1647cc24e061 30 char dmx_data[SAMPLES] = {0};
villemejane 0:1647cc24e061 31 char nb = 0;
villemejane 0:1647cc24e061 32
villemejane 0:1647cc24e061 33 void initDMX();
villemejane 0:1647cc24e061 34 void updateDMX();
villemejane 0:1647cc24e061 35
villemejane 0:1647cc24e061 36
villemejane 0:1647cc24e061 37 // MOSI, MISO, SCK, CSN, CE, IRQ
villemejane 0:1647cc24e061 38 InterruptIn my_bp(USER_BUTTON);
villemejane 0:1647cc24e061 39
villemejane 0:1647cc24e061 40
villemejane 0:1647cc24e061 41 // Main
villemejane 0:1647cc24e061 42 int main() {
villemejane 0:1647cc24e061 43 debug_pc.baud(9600);
villemejane 0:1647cc24e061 44 debug_pc.printf("Essai DMX512\r\n");
villemejane 0:1647cc24e061 45
villemejane 0:1647cc24e061 46 initDMX();
villemejane 0:1647cc24e061 47
villemejane 0:1647cc24e061 48 while(1) {
villemejane 1:8bb95fa25427 49 // Renkforce LPT12 - AD 1
villemejane 1:8bb95fa25427 50 dmx_data[0] = 0;
villemejane 1:8bb95fa25427 51 dmx_data[3] = 100;
villemejane 1:8bb95fa25427 52 dmx_data[4] = variationR.read() * 255;
villemejane 1:8bb95fa25427 53 dmx_data[5] = variationG.read() * 255;
villemejane 1:8bb95fa25427 54 dmx_data[6] = variationB.read() * 255;
villemejane 0:1647cc24e061 55 updateDMX();
villemejane 0:1647cc24e061 56 wait_us(10000);
villemejane 0:1647cc24e061 57
villemejane 0:1647cc24e061 58 }
villemejane 0:1647cc24e061 59 }
villemejane 0:1647cc24e061 60
villemejane 0:1647cc24e061 61
villemejane 0:1647cc24e061 62 void initDMX(){
villemejane 0:1647cc24e061 63 // Initialisation DMX
villemejane 0:1647cc24e061 64 dmx.baud(250000);
villemejane 0:1647cc24e061 65 dmx.format (8, SerialBase::None, 2);
villemejane 0:1647cc24e061 66 enableDMX = 0;
villemejane 0:1647cc24e061 67 // Initialisation canaux DMX
villemejane 0:1647cc24e061 68 for(int k = 0; k < SAMPLES; k++){
villemejane 0:1647cc24e061 69 dmx_data[k] = 0;
villemejane 0:1647cc24e061 70 }
villemejane 0:1647cc24e061 71 updateDMX();
villemejane 0:1647cc24e061 72 }
villemejane 0:1647cc24e061 73
villemejane 0:1647cc24e061 74 void updateDMX(){
villemejane 0:1647cc24e061 75 enableDMX = 1;
villemejane 0:1647cc24e061 76 start = 1; // /start
villemejane 0:1647cc24e061 77 out_tx = 0; // break
villemejane 0:1647cc24e061 78 wait_us(88);
villemejane 0:1647cc24e061 79 out_tx = 1; // mb
villemejane 0:1647cc24e061 80 wait_us(8);
villemejane 0:1647cc24e061 81 out_tx = 0; // break
villemejane 0:1647cc24e061 82 start = 0;
villemejane 0:1647cc24e061 83 dmx.putc(0); // Start
villemejane 0:1647cc24e061 84 for(int i = 0; i < SAMPLES; i++){
villemejane 0:1647cc24e061 85 dmx.putc(dmx_data[i]); // data
villemejane 0:1647cc24e061 86 }
villemejane 0:1647cc24e061 87 wait_us(23000); // time between frame
villemejane 0:1647cc24e061 88 }