Sketch DMX 512

Ciao a tutti, da un paio di giorni sto lottando per realizzare un piccolo controller dmx... sono alla ricerca di vari sketch per dmx che possano girare su arduino 2009, da capire e modificare secondo le mie esigenze... Purtroppo sono ancora in alto mare... :~ ore e ore tra librerie a copiare e incollare istruzioni, cercando di capirne il significato e verificandone in live l'effetto... (da quanto ho letto.. smontare e riutilizzare cose già fatte...mi pare che questo sia thinkering puro... :) ) Sintetizzo brevemente quanto già riportato in un mio post precedente, ovvero il risultato a cui vorrei arrivare...

ho un faro RGB a led che adotta 7 canali, il canale 1 deve stare sempre a valore 255 , il canale 2 a 0, il canale 3 a 0, il canale 4 a 0 (sono canali effetti) il 5 (R) il 6 (G) e il 7 (B), sono i canali RGB e adottano valori da 0 a 255. Il pin usato dalla dmx shield per prelevare il segnale di arduino è il pin 11 Vorrei poter programmare ad esempio la seguente routine... accendo il rosso,(CH 5)per il tempo di 30 sec. , dissolvenza incrociata con il verde(CH6) nel tempo di 5 sec, tengo acceso il verde (CH6) per il tempo di 30 sec. , dissolvenza incrociata con il blu (CH7) nel tempo di 5 sec, tengo acceso il blu per 30 sec. e così si ripete all'infinito

Forse pochi semplici passi , rispetto agli interessantissimi progetti (per me sino ad ora indecifrabili ;) ) che ho letto sul forum... ma che per me rappresentano un macigno insormontabile... Un sincero Grazie a tutti coloro che mi aiuteranno

Fabio

Il bus DMX, che poi in realtà è un bus RS485, lavora a 250kbps, dato che la tua shield usa il pin 11 vuol dire che si appoggia ad una seriale software. Francamente la vedo molto dura gestire comunicazioni a 250kbps (solo 4uS per bit) con una seriale emulata via software in ambiente wiring. Se l'avevo progettata io quella shield l'avrei collegata alla seriale hardware di Arduino, anche perché essendo monodirezionale (almeno nella implementazione standard), cioè i dati viaggiano solo verso i device e non c'è nessun ritorno al controller, basta collegare solo l'Rx del transceiver 485 al Tx di Arduino, più il controllo direzione(volendo può essere lasciato fisso su TX se c'è un solo controller collegato sul bus), pertanto non viene bloccato l'uso del FTDI per la programmazione e il debug di Arduino.

#include <DmxSimple.h>

void setup() {
  DmxSimple.write(1, 255);
  DmxSimple.write(2, 0);
  DmxSimple.write(3, 0);
  DmxSimple.write(4, 0);

}

void loop() {

  DmxSimple.write(5, 255); // rosso acceso
  delay(30000); // brutale, 30 secondi di attesa
  int brightness;  
  for (brightness = 0; brightness <= 255; brightness++) {
    DmxSimple.write(6, brightness); // rampa verde
    DmxSimple.write(5, ?????); // ora devi capire tu cosa deve fare il rosso
    delay(10); // aspetta 19ms (19 * 255 = 4845 msec) 
  }

 // il resto lo fai copiando pezzi del codice precedente

}

Ciao a tutti , anzittutto grazie per la collaborazione…
da quanto ho appreso questa istruzione crea la rampa “in salita” , ovvero da luminosità 0 a luminosità 255…

int brightness;
for (brightness = 0; brightness <= 255; brightness++) {
DmxSimple.write(6, brightness); // rampa verde

come faccio però a creare una rampa “in discesa” ovvero da 255 a 0 ed ad incrociarla con quella precedente…?

ovvero…rosso acceso…(10 secondi per essere meno “brutale” :slight_smile: ) poi nel tempo di 5 secondi, mentre il valore del verde aumenta al valore di 255, quello del rosso con proporzionalità inversa deve scendere a 0 …e a questo punto il verde deve rimanere acceso 10 sec, per poi ridiscendere e incrociare la dissolvenza col blu…

Ancora grazie ! :wink:

qui è dove devi studiare tu :)

o spendi 459 eur e ti compri una lanbox dove le rampe le crei facendo click col mouse oppur ci metti dell'impegno tuo e con 20 eur di arduino risolvi il tuo problema.

se non ci metti del tuo non ha senso che noi ti diamo la soluzione. non imparerai nulla.

detto questo... leggiti la reference di "for" su http://arduino.cc/en/Reference/For , cerca di capire il meccanismo...

have fun

m

Grazie mille, Massimo... capito come fare la rampa in discesa, ovvero il fadedown... ora si tratta di assemblare i vari pezzi di codice seguendo correttamente la sintassi.... :~ A presto, buona giornata !