Go Down

Topic: Licht auf bestimmte Musik !!! (Read 7543 times) previous topic - next topic

lgrube96


Da das Programm ja kostenlos zu haben ist, könnte jemand auch mal deine Testdatei ausprobieren, um das Protokoll zu entziffern. Gibt hier bestimmt Leute, die (mindestens) zwei FTDIs rumliegen haben. ;)


Ja da hast du allerdings recht, aber ich weiß nicht ob da jemand interesse hat das mal auszuprbieren....verschwendet ein bischen zeit so ca. 10 dann läuft das eig.
Mal schauen wer das für mich testet !? ;)

lgrube96



Softwareseitig wirst du das vermutlich nicht herausfinden können, was da übern Äther geschickt wird. Eine zweite serielle Schnitstelle ist erforderlich, daher auch die Idee mit dem Adapter.
Die andere Möglichkeit wurde schon angefragt: hast du ein LCD, auf dem man die empangenen Daten anzeigen kann?

Ich denke schon, das es funktioniert, das legt ja auch der Forenpost nahe. Aber wie kann ich nicht sagen, denn als MAC User kann ich das auch nicht testen, ebensowenig wie das Programm Vixen.
Der Trick wird vermutlich sein was man in welcher Reihenfolge startet. Ich könnte mir auch vorstellen, das das Monitoring Programm eine virtuelle serielle Schnittstelle zur Verfügung stellt, mit der man das Vixen verbindet und sich dann selbst mit der tatsächlichen Schnittstelle koppelt und damit dann in der Mitte sitzt. Aber das ist nur eine Vermutung.


Ja das wär schön wenn man damit es lösen könnte, ich warte erstmal ob es einer für mich ausprobiert ansonsten würd ich mir so ein adapter dann auch kaufen...
Also mit dem programm geht leider gar nicht hab das auch so gemach twie das da in der anleitung stand aber es hat nicht geklappt -_-

sth77

Stell doch mal die benötigten Informationen zusammen:

  • Link zum Programm

  • Link zu evtl. erforderlichen Plugins

  • Link zu deiner Testdatei mit 5 Kanälen (die funktioniert)

  • Link zu deiner Testdatei mit 7 Kanälen (die nicht funktioniert)

  • Code für die Ansteuerung von 5 Kanälen

  • Code für die Ansteuerung von 7 Kanälen


Also ich würde mir das auch gern mal anschauen.
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

lgrube96




Link zum Porgramm: http://www.vixenlights.com/downloads.html
Plugins: sind alle normalerweise dabei
Testdatei für Vixen mit 5 Kanälen: Im Anhang Testdatei5Kanäle.vix
Testdatei für Vixen mit 7 Kanälen: Im Anhang Testdatei7Kanäle.vix
Code für die Ansteuerung von 5 Kanälen:
Code: [Select]
/*
The purpose of this code is to allow the Arduino to use the
generic serial output of vixen lights to control 5 channels of LEDs.
Author: Matthew Strange
Created: 14 October 2010

*/

// Output
int Channel1 = 48;  // red LED,   connected to digital pin 5
int Channel2 = 46;  // green LED, connected to digital pin 6
int Channel3 = 44;  // red LED,  connected to digital pin 9
int Channel4 = 42;  // green LED,  connected to digital pin 10
int Channel5 = 40; // red LED,  connected to digital pin 11



int i = 0;     // Loop counter
int incomingByte[5];   // array to store the 7 values from the serial port

//setup the pins/ inputs & outputs
void setup()
{
  Serial.begin(9600);        // set up Serial at 9600 bps

  pinMode(Channel1, OUTPUT);   // sets the pins as output
  pinMode(Channel2, OUTPUT);
  pinMode(Channel3, OUTPUT);
  pinMode(Channel4, OUTPUT);
  pinMode(Channel5, OUTPUT);
 

}

void loop()
{  // 7 channels are coming in to the Arduino
   if (Serial.available() >= 5) {
    // read the oldest byte in the serial buffer:
    for (int i=0; i<6; i++) {
      // read each byte
      incomingByte[i] = Serial.read();
    }
   
    digitalWrite(Channel1, incomingByte[0]);   // Write current values to LED pins
    digitalWrite(Channel2, incomingByte[1]);   // Write current values to LED pins
    digitalWrite(Channel3, incomingByte[2]);   // Write current values to LED pins
    digitalWrite(Channel4, incomingByte[3]);   // Write current values to LED pins
    digitalWrite(Channel5, incomingByte[4]);
                   
   }
}

Code für die Ansteuerung von 7 Kanälen:
Code: [Select]
/*
The purpose of this code is to allow the Arduino to use the
generic serial output of vixen lights to control 5 channels of LEDs.
Author: Matthew Strange
Created: 14 October 2010

*/

// Output
int Channel1 = 48;  // red LED,   connected to digital pin 5
int Channel2 = 46;  // green LED, connected to digital pin 6
int Channel3 = 44;  // red LED,  connected to digital pin 9
int Channel4 = 42;  // green LED,  connected to digital pin 10
int Channel5 = 40; // red LED,  connected to digital pin 11
int Channel6 = 38;  // green LED,  connected to digital pin 10
int Channel7 = 36;

int i = 0;     // Loop counter
int incomingByte[7];   // array to store the 7 values from the serial port

//setup the pins/ inputs & outputs
void setup()
{
  Serial.begin(9600);        // set up Serial at 9600 bps

  pinMode(Channel1, OUTPUT);   // sets the pins as output
  pinMode(Channel2, OUTPUT);
  pinMode(Channel3, OUTPUT);
  pinMode(Channel4, OUTPUT);
  pinMode(Channel5, OUTPUT);
  pinMode(Channel6, OUTPUT);
  pinMode(Channel7, OUTPUT);
}

void loop()
{  // 7 channels are coming in to the Arduino
   if (Serial.available() >= 7) {
    // read the oldest byte in the serial buffer:
    for (int i=0; i<8; i++) {
      // read each byte
      incomingByte[i] = Serial.read();
    }
   
    digitalWrite(Channel1, incomingByte[0]);   // Write current values to LED pins
    digitalWrite(Channel2, incomingByte[1]);   // Write current values to LED pins
    digitalWrite(Channel3, incomingByte[2]);   // Write current values to LED pins
    digitalWrite(Channel4, incomingByte[3]);   // Write current values to LED pins
    digitalWrite(Channel5, incomingByte[4]);
    digitalWrite(Channel6, incomingByte[5]);   // Write current values to LED pins
    digitalWrite(Channel7, incomingByte[6]);   // Write current values to LED pins
   }
}


So ich hoffe das ich jetzt alles habe....
Ich hoffe ihr probiert das für mich aus ! ;)

mkl0815

Der Code für die Schleife ist ja immer noch falsch und zwar in beiden Programmen.

Code: [Select]

//diese schleife zählt von 0 bis 7, also 8 nicht 7 Werte!!!
for (int i=0; i<8; i++) {
      // read each byte
      incomingByte[i] = Serial.read();
    }

//diese schleife zählt von 0 bis 5, also 6 nicht 5 Werte!!!
for (int i=0; i<6; i++) {
      // read each byte
      incomingByte[i] = Serial.read();
    }

Entweder hast Du einen zusätzlichen Channel definiert, der mit ausgegeben wird, dann passt das evtl. oder es funktionieren beide Programme nicht richtig.
Mario.

lgrube96

#50
Apr 24, 2012, 09:28 pm Last Edit: Apr 25, 2012, 06:41 am by lgrube96 Reason: 1

Der Code für die Schleife ist ja immer noch falsch und zwar in beiden Programmen.

Code: [Select]

//diese schleife zählt von 0 bis 7, also 8 nicht 7 Werte!!!
for (int i=0; i<8; i++) {
     // read each byte
     incomingByte[i] = Serial.read();
   }

//diese schleife zählt von 0 bis 5, also 6 nicht 5 Werte!!!
for (int i=0; i<6; i++) {
     // read each byte
     incomingByte[i] = Serial.read();
   }

Entweder hast Du einen zusätzlichen Channel definiert, der mit ausgegeben wird, dann passt das evtl. oder es funktionieren beide Programme nicht richtig.
Mario.


Den code hab ich ja von dieser seite, und da war das auch immer so das die zahl um einen höher war...
Ich hab die beiden zahlen einfach mal gerade gleich gemacht, aber es hat sich nichts verändert auch bei 7 kanälen kommt es immer durcheinander

lgrube96

Hat hier wirklich niemand lust und zeit das mal auszuprobieren ???

sth77


Hat hier wirklich niemand lust und zeit das mal auszuprobieren ???

Immer mit der Ruhe, dafür muss man sich schon etwas Zeit nehmen...

Ich verstehe noch nicht ganz, was passiert, wenn man eingehende Bytes an die digitalen Ausgänge weiterleitet. Was willst du damit bewirken?
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

lgrube96



Hat hier wirklich niemand lust und zeit das mal auszuprobieren ???

Immer mit der Ruhe, dafür muss man sich schon etwas Zeit nehmen...

Ich verstehe noch nicht ganz, was passiert, wenn man eingehende Bytes an die digitalen Ausgänge weiterleitet. Was willst du damit bewirken?


Ja stimmt auch wieder...

Wo werden denn da bitteschön bytes zu den pins gesendet ?
Nebenbei...also den code habe ich ja jetzt nicht selber geschrieben(von daher kann ich nicht immer genau sagen wie das jetzt geht), aber ich weiß zum mindest so den ungefähren ablauf.

mkl0815

Quote
Wo werden denn da bitteschön bytes zu den pins gesendet ?

Genau da:
Code: [Select]
digitalWrite(Channel4, incomingByte[3]);
Dazu hatte ich aber auch schon was geschrieben. Das ist kein schöner Stil, funktioniert aber, da alles was nicht 0 ist asl HIGH gewertet wird.

lgrube96


Quote
Wo werden denn da bitteschön bytes zu den pins gesendet ?

Genau da:
Code: [Select]
digitalWrite(Channel4, incomingByte[3]);
Dazu hatte ich aber auch schon was geschrieben. Das ist kein schöner Stil, funktioniert aber, da alles was nicht 0 ist asl HIGH gewertet wird.



Habe es jetzt nicht wirklich gefunden hier....aber solange das kein fehler code entstehen lässt, könnte man das ja auch lassen.
Wie müsste das denn dann aussehen ??? Weil ich hab wie gesagt nicht den genauen post dazu gefunden ?!

mkl0815

Im Code, den Du im Vixen-Forum gefunden hast, geht es ja eigentlich um die Ausgabe auf PWM-Pins. Dort wird ja auch analogWrite() verwendet und es macht Sinn, ein komplettes Byte zu schreiben.
Da Du digitale Pins verwendest, solltest Du ein HIGH oder LOW mittelst digitalWrite() schreiben. Wie gesagt, das digitalWrite() nimmt Dir die Arbeit ab, daher ist das OK. Um es übersichtlicher zu machen, kannst Du auch ein
Code: [Select]

if(incomingByte[i] != 0) {
    digitalWrite(pin,HIGH);
} else {
    digitalWrite(pin,LOW);
}

verwenden. Aber wie gesagt, das hat keinen Einfluss auf das Ergebnis, da digitalWrite() im Prinzip das Gleiche macht.
Jetzt wäre es gut zu wissen, ob Vixen tatsächlich immer korrekterweise Nullen und "nicht Nullen" schickt, wenn ein Channel geändert wird.
Mario.

lgrube96


Im Code, den Du im Vixen-Forum gefunden hast, geht es ja eigentlich um die Ausgabe auf PWM-Pins. Dort wird ja auch analogWrite() verwendet und es macht Sinn, ein komplettes Byte zu schreiben.
Da Du digitale Pins verwendest, solltest Du ein HIGH oder LOW mittelst digitalWrite() schreiben. Wie gesagt, das digitalWrite() nimmt Dir die Arbeit ab, daher ist das OK. Um es übersichtlicher zu machen, kannst Du auch ein
Code: [Select]

if(incomingByte[i] != 0) {
    digitalWrite(pin,HIGH);
} else {
    digitalWrite(pin,LOW);
}

verwenden. Aber wie gesagt, das hat keinen Einfluss auf das Ergebnis, da digitalWrite() im Prinzip das Gleiche macht.
Jetzt wäre es gut zu wissen, ob Vixen tatsächlich immer korrekterweise Nullen und "nicht Nullen" schickt, wenn ein Channel geändert wird.
Mario.


Achso das meinst du damit ! Ich dachte die ganze zeit was anderes...
Naja...solange es nichts wirklich verändert...

lgrube96

Tach alle zusammen nach einer langen zeit !

Also ich hab nochmal ein bischen im internet gesucht und auch was gefunden...zwar ist der code keineswegs wirklich anders aber es funktioniert ;)
Genaueres schreib ich morgen noch...habe jetzt leider nur zeit für eine kurze benachrichtigung !

Und noch mal an alle !
Vielen vielen dank das ihr mir hilfreiche infOrmationen geliefert habt ! ;) finde dieses forum einfach super !

Lorenz

Go Up