DMX su Arduino UNO Funziona ma non su MEGA 2560

Salve a tutti
Sto cercando di progettare un Controller Luci DMX usando Arduino Mega 2560 e lo shield DMX512 per Arduino acquistato presso Futura (cod. FT996M).

Con lo shield montato su UNO R3 funziona, su Mega 2560 no.
Qualcuno sa darmi qualche dritta? Dovendo programmare scene ho necessita della microSD e quindi UNO non mi è sufficiente.
Allego listato del test

#include <DmxSimple.h>

void setup() {
 Serial.begin(9600);
 DmxSimple.usePin (3);

 DmxSimple.maxChannel(16);

 DmxSimple.write(1, 0);
 DmxSimple.write(2, 0);
 DmxSimple.write(3, 0);
 DmxSimple.write(4, 0);

 DmxSimple.write(4, 255);  // Dimmer al massimo valore
 pinMode (7, OUTPUT);
 pinMode (8, OUTPUT);
}


void loop() {

 Serial.println ("Accendo il rosso");
 DmxSimple.write(1, 255); // rosso acceso
 delay(3000); // 3 secondi di attesa

 DmxSimple.write(1, 0); // rosso spento
 delay(3000); // 3 secondi di attesa
 Serial.println ("Accendo il verde");
 DmxSimple.write(2, 255); // verde acceso
 delay(3000); // 3 secondi di attesa

 DmxSimple.write(2, 0); // verde spento
 delay(3000); // 3 secondi di attesa
 Serial.println ("Accendo il blu");
 DmxSimple.write(3, 255); // blu acceso
 delay(3000); // 3 secondi di attesa

 DmxSimple.write(3, 0); // blu spento
 delay(3000); // 3 secondi di attesa
 Serial.println ("Accendo il bianco");
 DmxSimple.write(1, 255); // rosso acceso
 DmxSimple.write(2, 255); // verde acceso
 DmxSimple.write(3, 255); // blu acceso
 delay(3000); // 3 secondi di attesa

 DmxSimple.write(1, 0); // rosso spento
 DmxSimple.write(2, 0); // verde spento
 DmxSimple.write(3, 0); // blu spento
 delay(3000); // 3 secondi di attesa
 Serial.println ("Fade Up Verde");
 
 int brightness;
 for (brightness = 0; brightness <= 255; brightness++)
 {
   DmxSimple.write(2, brightness); // fade verde up
   delay(19); // aspetta 19ms (19 * 255 = 4845 msec)
 }

 for (brightness = 0; brightness <= 255; brightness++)
 {
   DmxSimple.write(2, 255-brightness); // fade verde down
   delay(19); // aspetta 19ms (19 * 255 = 4845 msec)
 }

 DmxSimple.write(2, 0); // verde spento
 digitalWrite (7, HIGH);
 digitalWrite (8, HIGH);
 delay (3000);
 digitalWrite (7, LOW);
 digitalWrite (8, LOW);
}

Ciao,

prima di tutto, ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra) ...

... poi, non avendolo tu mai fatto, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

Chiedo umilmente scusa, essendomi iscritto al forum circa due anni fa, pensavo di aver adempiuto alle formalità del caso.
Ho provveduto comunque a sanare la mia mancanza.
Buona serata
Silvio TREVISAN

Emmm ... manca di sistemare il post ... come ti ho scritto spora :wink: Grazie.

Guglielmo

Quale Shield hai? Prego il link.
Ciao Uwe

Allego il link allo shield acquistato da Futura:

>videotapioka: ancora una volta ti invito a sistemare il tuo primo post ... e spero di non dover intervenire ancora ...

Grazie.

Guglielmo

La descrizione del prodotto non riporta lo schema o particolari di pin usati o integrati usati. Non so se vengano usati la SPI sui pin 11-13 o sul connettore ICSP. Nel primo caso non funziona con Arduino MEGA perché l'interfacca SPI é sui pin 50-52.

Ciao Uwe

Grazie per l'interessamento Uefed.
Proverò a scrivere a Futura elettronica per vedere se mi sa dare qualche dritta, altrimenti dovrò cercare qualche soluzione alternativa (I2C eeprom, MUX shield, PCF8574 ...) per ovviare alla mancanza di porte e memoria.
Buona giornata!
Silvio

Basta che guardi la scheda se dai pin 11-13 partono delle piste oppure dai pin del ICSP. Al limite utilizzi il multimetro per misurare se c'é collegamento elettrico.

Ciao Uwe

Con lo shield montato su UNO R3 funziona, su Mega 2560 no.

Vedo che usi la DmxSimple, non è che hai una versione della libreria un pò vecchiotta ?
Le prime versioni non prevedevano la Mega 2560, nonostante nella pagina Web ci fosse scritto che è compatibile.
Qui trovi l'ultima versione Link

UWE, i PIN 11 e 12 sono passanti senza alcun collegamento con lo shield, vengono utilizzati i pin ICSP.

Brunello, la versione della libreria è già l'ultima ....

Sara', ma a me l'esempio che hai messo funziona anche sulla Mega2560

Eureka!!!! Ho provato la MEGA2560 nuova appena comperata e funziona. Era la mia vecchia MEGA 2560 difettosa. Infatti ho provato anche uno sketch per SD card e non riesce a inizializzare la SD.
Grazie a tutti per il supporto!