IOGS_France
/
Arts_DMX512_carteV3_IOGS
Program for Nucleo Board / DMX protocol only
main.cpp@1:8bb95fa25427, 2022-03-01 (annotated)
- 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?
User | Revision | Line number | New 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 | } |