poche righe di istruzioni...

Ciao a tutti, da pochissimo ho acquistato un Arduino 2009, ho costruito un semplicissimo Shield DMX
e ho caricato le librerie dmx simple,che ho prelevato da qua... http://tinkerit.googlecode.com/files/DmxSimple_v3.zip
purtroppo sono riuscito a fare poco, caricando l'esempio proposto, ma poco attinente con quanto a me servirebbe...
in breve :

ho un faro RGB a led che adotta 7 canali, il canale 1 deve stare sempre a valore 255 , il 2 a 0, il 3 a 0, il 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

Chi mi da un aiutino??

Se riuscissi a creare queste istruzioni, poi potrei espandere il gioco a piu fari su canali diversi che facciano dissolvenze incrociate su piu basi colore in contemporanea...(mi sto occupando di illuminazione architetturale)
Grazie a tutti,
Fabio

ciao
buttando giu un codice veloce, be per i 30 secondi fissi

analogWrite(pin1, 255);
delay(30000);

mentre per la diffusione incrociata

for(i=0,i<=255,i++)
{val1=255-i;
analogWrite(pin1, val);
analogWrite(pin2, i);
delayMicroseconds(19608);};

naturalmente devi dichiarare le varie variabili (val1,i,pin1,pin2) e per i pin1 pin2 ecc. devi associare le diverse uscite per i led :slight_smile:

ps. 19608 sarebbe 5sec diviso 255 in microsecondi in modo da far avvenire il tutto in circa 5 secondi

Ciao, grazie per la celerissima risposta...
sto cercando di capire le righe del codice...
pin1 corrisponderebbe al canale dmx1... ??? pin2, pin3...etc?
scusa queste mie domande banali, ma mi sto addentrando alla materia solo da qualche giorno... :frowning:

si esatto dovresti ripetere 3 volte i 2 pezzi di codice la prima volta con pin1 e pin2 poi pin2 e pin3 e infine pin3 e pin1 in modo da ottenere quello che volevi :slight_smile:
comunque si pin1 sarebbe dmx1 che se ad esempio e collegato sul pin 6 devi dichiararlo cosi

int pin1=6;

:slight_smile:

scusami, forse sto facendo un po di confusione....
dunque... non si tratta di un uscita rgb dalla scheda di arduino...
bensì di uscita dmx da un shield dmx con un chip 75176bp...
l'unica connessione tra lo shied dmx e arduino è il Pin 11...
Gli altri pin di uscita digitale non sono collegati....
mi sarebbe chiaro il discorso se adottassi un pin per ogni canale analogico...
ovvero pin 1= canale 6, ed otterrei un uscita rgb lineare, ovvero un valore di tensione
proporzionale all'intensità luminosa voluta ( a patto di utilizzate poi a valle un circuito attuatore, quale
un mosfet, un transistor npn o che altro)
in questo caso però, l'unico pin fisicamente utilizzato su arduino è esclusivamente il pin 11....

Nulla di fatto... è due giorni che sto lottando con righe di codice... ma senza ottenere alcun risultato...
il codice di esempio che mi hai proposto tu, l'ho manipolato in tutte le salse... ma forse prima di tale codice dovrei dare istruzioni per
il break, lo start bit, e il byte 0... che costruiscono il segnale dmx... :frowning: terribile... aiutooooooo!