LED - Stripes - Serial will nicht funktionieren

Hallo Zusammen

Leider bin ich ziemlich unerfahren beim Thema Ardino, doch würde ich mich freuen wenn ihr mir helfen könnt.
Kurze Erklärung, gebaut von einen Freund ,leider verstoben, System defekt.
Nun möchte ich es neu aufbauen, dazu habe ich einen Arduino MEGA 2560 und eine RGB Shield zur Verfügung aus diesem alten System.
Ein Netzwerkmodul das zuvor aufgesteckt war wurde aber entfernt und das RGB Shield aufgesteckt. RGB Shield

Folgender Code wurde eingespielt:

/**************************************************************
**ProppFrexx LED Steuerung auf Arduino Mega 2560 mit RGB Shield
***************************************************************/

const int RED = 3;
const int GREEN = 5;
const int BLUE = 6;

void setup() {

  pinMode      (RED, OUTPUT);
  pinMode    (GREEN, OUTPUT);
  pinMode     (BLUE, OUTPUT);
  Serial.begin        (9600);
}

void loop() {

  if (Serial.available() > 0) {
      char inData = char(Serial.read());

    if  (inData == 'R') {
      Serial.println("LED ROT wurde eingeschalten");
       analogWrite(RED,   255);
       analogWrite(GREEN,   0);
       analogWrite(BLUE,    0);
    }
    if  (inData == 'G' ) {
      Serial.println("LED GRÜN wurde eingeschalten");
      analogWrite(RED,      0);
      analogWrite(GREEN,  255);
      analogWrite(BLUE,     0);
    }
    if  (inData == 'B') {
      Serial.println("LED BLAU wurde eingeschalten");
      analogWrite(RED,      0);
      analogWrite(GREEN,    0);
      analogWrite(BLUE,   255);
    }
    if  (inData == 'O') {
      Serial.println("Alle LEDs wurden eingeschalten");
      analogWrite(RED,    255);
      analogWrite(GREEN,  255);
      analogWrite(BLUE,   255);
    }
    if  (inData == 'X') {
      Serial.println("Alle LEDs wurden abgeschalten");
      analogWrite(RED,      0);
      analogWrite(GREEN,    0);
      analogWrite(BLUE,     0);
    }
  }
}

Funktioniert alles über Serial Monitor mit den Eingaben.

Das Problem:
Ich verwende eine Radio Sendesoftware (ProppFrexx) die Trigger Kommandos senden kann.(Talkover ON/OFF)
Hierfür wurden die COM Ports auf die des Arduinos geändert. (RX/TX) Senden/Empfangen


Als Test habe ich zuvor das Rote LED aufgedreht mit Arduino IDE dann beendet, und dann die SW gestartet, im Monitor ist die Antwort angekommen.
("LED ROT wurde eingeschalten - Scrollt durch")
Zum Senden wird/wurde dieser Befehl ausgeführt.

(Dieses hat funktioniert mit dem alten System)

Zur Info: Im alten System war der Arduino mit einen USB Serial Adapter angeschlossen, denke aber das dass keinen Unterschied macht.

Nur für mein Verständnis:
Wenn ich das Arduino IDE offen habe und im Serial Monitor R für Rot ausführe funktioniert es, warum bzw. wieso schaltet es mit dem EXEC_SEND_SERIAL_WRITE (R) nicht?
Das sollte ja das gleiche bewirken, oder muss ein besonderer String geschickt werden damit der Arduino dieses versteht und ausführt.
Oder habe ich überhaupt ganz was vergessen im Code damit dieses überhaupt funktioniert?

Um einen besseren Überblick zu haben, wie das früher aufgebaut war habe ich den alten Sketch für euch hochgeladen.
V11.ino (72,5 KB)
Vielleicht sieht ihr anhand des Sketches wieso hier die Anbindung mit dem EXEC_SEND_SERIAL_WRITE Befehl funktioniert hat!!!!

Ich würde mich freuen wenn ihr Ideen bzw. Vorschläge habt die mir bei meinen Unterfangen weiterhelfen.

Danke Tom

Mit der Beschreibung fange ich überhaupt nix an.
Du müsstest haarklein posten was da für Bytes über die serielle Schnittstelle gehen.

Und zwar sowohl vom dieser komischen ProppFrexx-Software als auch die Bytefolge die du per Serial Monitor sendest

Ich werde versuchen die Daten in den nächsten Tagen zu besorgen :+1:

Ich hab mal rauf geschaut.
Der alte Sketch hat alles, was gebraucht wird.
Allerdings ist es ein Sammelsorium aus Codeduplikaten und um das aufzulösen braucht es etwas Zeit.

Ich empfehle damit zu beginnen, dass Du erklärst auf welchem Serial.Port am Mega die Daten eingelesen werdn.
Dann wird das auflösen einer Zeichenkette gelöst, sodas die auf dem Seriellen Monitor angezeigt wird.
Wenn das funktioniert werden Funktionen dazu passend gebaut.

Nix, was unmöglich ist.

Das macht schon einen Unterschied, da du in deiner Beschreibung du Pins D0 und D1 verwendest, die für die serielle Schnittstelle mit USB verbunden ist.
Da seriell kein Bus ist kannst du nicht zusätzlich noch ein weiteres Gerät (deine unbekannte Software) anschließen.
Das wurde vermutlich über den zusätzlichen USB-Serial-Adapter erledigt.

Am Mega gibt es allerdings noch weitere serielle Schnittstellen, die du dafür problemlos nutzen kannst.

Guten Morgen

Danke für eure Antworten, diese
Wie von @StefanL38 erwähnt, sollte einmal rausgefunden werden wie
wer kommuniziert denke ich.

@HotSystems, @my_xy_projekt
Nach längerem überlegen ist mir eingefallen das es wirklich so war das am USB (FIX) (COM6)
Programmiert wurde (10 Jahre her) und am anderen angesteckten externen USB Konverter (war COM2) die Daten gesendet wurden zum Programm. (Ich habe es auch früher so geupdatet).

Den Adapter habe ebenfalls noch, kann mir einer von euch einen guten Anschlussplan
zukommen lassen damit ich diesen richtig anschließen kann.
Ich habe zwar mehrere gefunden die beziehen sich aber nur auf den UNO.
Sind die in dieser Sache Ident? VCC,GND,RX,TX.

Ich habe mir schon gedacht, das es nur so gehen kann, sonst könnte ich
den Traffic nicht Sniffen was die verschiedenen SWs hier schicken.
Sonst wird ein Einklang wie die Suche nach der Nadel im Heuhaufen.

Wichtig meiner Meinung ist das der andere externe USB Konverter mal richtig angeschlossen ist, damit hier einmal Fehler ausgeschlossen sind.

Anhand des alten Sketches habe ich es dann auch gesehen.

 Serial.begin(19200);       // for debugging
 Serial1.begin(9600); 

Noch was möchte ich erwähnen ob es wichtig ist weiß ich nicht, in den Einstellungen
von ProppFrexx wurde der COM senden (OUTPUT) nur eingestellt. (kein Empfangen).

LG Tom

Da du schon mal am umbauen bist,
kannst du bitte mal die Gesamtanwendung beschreiben.

Für mich hört es sich mit den wenigen Infos die du bis jetzt gegeben hast so an als ob das ProppFexx-Programm dazu benutzt wird manuell Befehle an den Arduino zu senden.
Ist das so?

Oder wird in ProppFexx eine hunderte Befehle lange Sequenz programmiert die dann von ProppFexx abgearbeitet wird?

Bei manuell einstellen könte man auch gleich auf einen ESP32 umsteigen und ein Webinterface programmieren.

Du benutzt einen Arduino Mega. Da kannste im Pinout nachschauen an welchen Anschlüssen Serial1 liegt

Ganz kurz gehalten, die LEDs waren für verschiedene Zustände programmiert im Studio.
Ziemlich einfach.

Ablauf:
Der MIC Fader wird gezogen, im Pult sind Hall Sensoren die senden den Zustand ein oder aus an PF um den Talkover ON/OFF auszuführen, EXEC_Serial_write mic1* wird ebenfalls gesendet um das Studio Rot zu schalten.
Beim Player.1 und Player.2 geht es einfach dann nur mit einen Triggerevent.

MIC an = ROT (Parameter) war mic1* =im Screenshot sieht man es
MIC AUS = aus*

PLAYER.1 Playing = BLAU war b1-b9* / 1-9 gab die Lichtstärke an.
PLAYER.1 STOP = aus*
PLAYER.2 Playing = GRÜN war r1-r9* / 1-9 gab die Lichtstärke an.
PLAYER 2 Playing = aus*

PFL (Vorhören) = Violett war pfl*
PFL (Schließen) = aus*

Alle diese Zustände lassen sich im PF (Proppfrexx) beim Ausführen oder schließen
als Triggerevent senden, dieses sendete PF über den Befehl EXEC_Serial_write mit Parameter (mic*,b1* usw.) an den Arduino der dann die LED Zustände Farben schaltete.

Meiner Meinung sendete PF nur die nackte Eingabe (Daten) mic* an das externe USB Interface und der Arduino führe das Programm aus und schaltete Rot.

Es war ziemlich einfach aufgebaut am Anfang, doch Willi hat dann das ganze über ein Netzwerkinterface machen wollen, weil er ebenfalls ein WEB GUI schreiben wollte.
Dann ist es anscheinend extrem eskaliert mit dem Code, deswegen will ich das ganze Netzwerkteil im Code raushaben und sehr einfach und klein halten.

Ich bin gerade in der Arbeit, und kann erst dann später (Nachmittag) wieder antworten.
LG Tom

Also das heißt die PropFrexx-Software hängt an irgendwelcher anderer Hardware Mischpult, Payer1 / Player2 dran und deswegen wird auch weiterhin mit PropFrexx seriell gesendet.

Und der Ardiuno soll jetzt die Befehle vom PropFrexx empfangen und die LEDs ansteuern.

Kannst du die Befehle in der ProppFrexx-Software anpassen oder sind die fix?

Ja genau richtig so ist es.
Die Befehle kann man ändern (was gesendet wird) (EXEC_Serial_write)
der Parameter ist die Angabe was gesendet wird an COM zum Arduino.

Im Screenshot sieht man das noch andere alte Befehle hinterlegt sind,
die ich noch nicht rausgelöscht habe.

Hallo Tom,

wenn du im alten System einen USB Serial Adapter verwendet hast, dann hat der doch den Pegel von TTL auf RS 232 (z.B. +- 10V) gewandelt. Der Mega ohne Wandler macht die TxD und RxD nur als TTL Pegel. Könnte das die Ursache sein?

Gruß Bepo

Hallo @anon53914765

Ich wäre schon froh wenn ich einen Anschlussplan finden würde.
Leider sagt jeder im Internet was anderes wie der FTDI USB Converter angesteckt wird.
Wenn ich zuhause bin muss ich mir das mal genauer ansehen und dann testen ob der überhaupt wenn er angesteckt ist was empfängt!!

Wenn mir beim abmontieren des Systems nicht gleich viele Pin Stecker rausgefallen wären unter dem Tisch (hing alles überkopf) wäre dieses Problem nie entstanden.

Es war so das der Arduino USB Port für das Debuggen genutzt wurde, und der USB Serial Adapter für das eigentliche COM Sendesignal von PF zum Arduino.

Ich werde mir ebenfalls mal mit com2com anschauen was von PF an das verbaute USB Serial Interface rein kommt oder auch nicht. :thinking:

Ich mache euch dann Bilder von dem Adapter wenn ich zuhause bin.
(öffne das Gehäuse um die Pin Belegungen zu sehen).

Hallo Tom,

verstehe ich das richtig, dass der Arduino mit deinem Radio über RS 232 kommuniziert und es mit USB Serial Wandler funktioniert und ohne ihn nicht?

Gruß Bepo

Leider bin ich noch nicht zuhause.
Aber es ist so das selbst die Kommunikation mit dem fixen USB Probleme macht.
Im Monitoring des Programmes sieht man das der Arduino Daten ins PF sendet.
(LED ist ROT geschalten wird angezeigt) - (zuvor habe ich es in Arduino IDE Aktiviert) das zeigt mal das dass senden funktioniert, was mich aber wenig interessiert.

Wichtig wäre es rauszufinden ob PF überhaupt zum Arduino sendet und dann wie das Kommando aussieht, vielleicht passt die Einstellung nicht (IBM852) ich werde mir das mit com2Com am Nachmittag zur Gemüte führen.

LG Tom

Gute Neuigkeiten das Problem wurde von einem guten Freund gelöst.
Ich danke allen für die Hilfe.

1 Like

Verrätst du uns die Lösung?

Guten Abend,

hier ist der besagte Mann.

Also in Proppfrexx wurde die Codierung auf UTF-8 gestellt.
Trotzdem bestand noch immer das Problem das er keine Aktion ausführte.
Nach lesen der Bedienungsanleitung von dem Programm hab ich gesehen, dass beim senden von Cormans er immer /n oder /r dahinter setzt. also musste ich den code ein wenig abwandeln. Somit läuft nun wieder alles.

Vielen dank für eure Hilfe!
Mfg Quentin

1 Like

Das ist aber keine Vorstellung der Lösung.

Gruß Tommy

Es waren insgesamt 3 Fehler:

Der erste wegen diesen String den PF immer gesetzt hat beim abschicken und das ebenfalls ein alter Event in ProppFrexx das Blaue LED beim Start eingeschalten hat.
(Dauer Aktualisierung des Blauen LEDs - weiß der Teufel was für ein Event das ausgelöst hat). Jahrzehnte lang lief alles am Schnürchen mit dem alten Sketch.

Wie dann die Anbindung funktioniert hat und ich den Command Exec_Serial_Write mit Parameter R für Rot abgeschickt hatte ging das Licht immer kurz an aber Blau überschrieb das statische Rot.

Nachdem wir alle alten unnötigen Events in PF gelöscht hatten ging es.
Also eine Kombination von Code, Events, und Serial Sendecodierung hat alles ausgelöst.
Wie bei Mayday - Alarm im Cockpit :grin:

LG Tom

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.