[RISOLTO] DMXSimple, OK su Arduino UNO, non mi funziona sulla MEGA

Ciao ragazzi,
ho costruito una scheda che tra le varie cose mi pilota un'uscita DMX.
Per la parte DMX il codice si basa sulla libreria DMXSimple.

Questo è il pezzo di sketch relativo:

IDE 1.0.6

#include <DmxSimple.h>
int pot1=analogRead(A2);
int ChDMX;
int DMXvalue;

void setup() {

  DmxSimple.usePin(1);
  DmxSimple.maxChannel(4);
}

void loop() {
 ChDMX=1;
 pot1=analogRead(A2);
 DMXvalue=map(pot1,0,1023,1,256);
 DmxSimple.write(ChDMX, DMXvalue);
 }

con Arduino UNO tutto ok, poi per ragioni di ing/out ho dovuto montare la Mega e... tutto funziona a parte il DMX.

Ho quindi testato solo la parte di codice che ho pubblicato qui sopra e... con Arduino UNO tutto OK, ma con la MEGA il relè della scheda ricevente non si attiva e lampeggia il led rosso di errore.
Di preciso come ricevente, via cavo, sto utilizzando la scheda di futura shop cod.:8220-VM138; https://www.futurashop.it/controllo-rele-con-dmx-8220-vm138?filter_name=dmx

Perché succede questo? E' un problema di librerie? o di IDE?

Vi ringrazio.

La libreria DMXSimple arrivata alla versione 3 gestisce sia la UNO che la MEGA.

Mi lascia perplesso l'utilizzo del pin 1 riservato alla Serial: prova a cambiare pin.

Inoltre la map dovrebbe fornire un valore massimo tra 0 e 255 e non tra 1 e 256.

Ciao cyberhs,
ho già provato con varie uscite, tra cui per ultimo con il pin 1, ma sempre con lo stesso risultato.

Faccio la variazione che mi hai consigliato con map e ti faccio sapere che succede.

Grazie

Sempre più complicato...

ho fatto le variazioni di map ma il risultato non è cambiato, quindi, ho cancellato la libreria in questione e l'ho riscaricata al che adesso ho i seguenti errori...

/Users/ISS/Documents/Arduino/libraries/DmxSimple/DmxSimple.cpp:11:20: error: wiring.h: No such file or directory
/Users/ISS/Documents/Arduino/libraries/DmxSimple/DmxSimple.cpp: In function 'void dmxBegin()':
/Users/ISS/Documents/Arduino/libraries/DmxSimple/DmxSimple.cpp:57: error: 'digitalPinToPort' was not declared in this scope
/Users/ISS/Documents/Arduino/libraries/DmxSimple/DmxSimple.cpp:57: error: 'portOutputRegister' was not declared in this scope
/Users/ISS/Documents/Arduino/libraries/DmxSimple/DmxSimple.cpp:58: error: 'digitalPinToBitMask' was not declared in this scope
/Users/ISS/Documents/Arduino/libraries/DmxSimple/DmxSimple.cpp:61: error: 'OUTPUT' was not declared in this scope
/Users/ISS/Documents/Arduino/libraries/DmxSimple/DmxSimple.cpp:61: error: 'pinMode' was not declared in this scope
/Users/ISS/Documents/Arduino/libraries/DmxSimple/DmxSimple.cpp: In function 'void dmxWrite(int, uint8_t)':
/Users/ISS/Documents/Arduino/libraries/DmxSimple/DmxSimple.cpp:183: error: 'max' was not declared in this scope
/Users/ISS/Documents/Arduino/libraries/DmxSimple/DmxSimple.cpp: In function 'void dmxMaxChannel(int)':
/Users/ISS/Documents/Arduino/libraries/DmxSimple/DmxSimple.cpp:194: error: 'min' was not declared in this scope

:frowning:

/Users/ISS/Documents/Arduino/libraries/DmxSimple/DmxSimple.cpp:11:20: error: wiring.h: No such file or directory

Se ancora richiama wiring.h è una vecchia libreria fatta per wiring e non aggiornata. Prova a modificare DmxSimple.cpp e sostituisci la #include <wiring.h> con #include <Arduino.h> ... e incrocia le dita ... :grin:

Guglielmo

Grazie Guglielmo,
Arduino.h ha funzionato e posso caricare il programma.
Rimane il fatto che il DMX con l'Arduino UNO funziona mentre non va con la MEGA...
Non riesco a capire...

forse è il caso che tu aggiorni la versione della libreria

FUNZIONA!!!

:slight_smile:

GRAZIE Brunello!