MobaLedLib: Beginn einer neuen Ära mit Windows Konfigurationstool. Programmieren war Gestern ... Stammtisch 27.11.

Bereich für alle Themen rund um Modellbahn-Software, sowie der nötigen Hardware (PCs, Bildschirme, etc.).

speedy200
EuroCity (EC)
Beiträge: 1372
Registriert: Fr 3. Feb 2006, 11:19
Wohnort: Ulm

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Hausanschl

#51

Beitrag von speedy200 » Sa 12. Jan 2019, 14:22

Hallo Hardi,

manche Platinenshops möchten ein geziptes GerberFile.
So könnten wir auch die PCB Shops hier teilen.

Grüße
speedy
Märklin, C-Gleis, Intellibox, Bastler...

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Hausanschl

#52

Beitrag von Hardi » Sa 12. Jan 2019, 14:43

Hallo Thomas,

freut mich, dass Du mal mit den Beispielen experimentiert hast. Ich vermute, dass die meisten Stummis noch auf die Teile aus China warten. Darum hab ich oben (#50) auch mal einen Link zu einer schnelleren Quelle angegeben.

Zu Deinen Fragen:
ThKaS hat geschrieben:
Sa 12. Jan 2019, 13:14
Wie könnte man weitere BlueLights dazufügen, die noch andere Timings haben?
Viele Teile der Bibliothek basieren auf Makros. Das hat den Vorteil, das nur dann Speicher benutzt wird wenn das entsprechende Makro benutzt wird.
Die beiden „BlueLight” Makros sehen so aus:

Code: Alles auswählen

#define  BlueLight1(LED,Cx,InCh)  PatternT4(LED,_NStru(Cx,   4,1),InCh,_Cx2LedCnt(Cx),0,   255, 0,0,  48 ms, 74 ms,  48 ms, 496 ms,_Cx2P_DBLFL(Cx))     // Blaulicht
#define  BlueLight2(LED,Cx,InCh)  PatternT4(LED,_NStru(Cx,   4,1),InCh,_Cx2LedCnt(Cx),0,   255, 0,0,  24 ms, 74 ms,  24 ms, 512 ms,_Cx2P_DBLFL(Cx))     // Blaulicht (Andere Periode damit nicht synchron)
Du findest sie in der Datei „MobaLedLib.h“ in der Bibliothek.
Wenn Du weitere Blinklichter definieren willst, dann kannst Du einfach so eine Zeile in Dein Programm kopieren und entsprechend modifizieren.
Beispiel:

Code: Alles auswählen

#define  BlueLight3(LED,Cx,InCh)  PatternT4(LED,_NStru(Cx,   4,1),InCh,_Cx2LedCnt(Cx),0,   255, 0,0,  30 ms, 74 ms,  30 ms, 500 ms,_Cx2P_DBLFL(Cx))     // Blaulicht 3
 
ThKaS hat geschrieben:
Sa 12. Jan 2019, 13:14
Wie könnte man neben den RearTurnIndicators auch noch Warnblinker dazufügen?
Das Blinken der hinteren Blinker habe ich in dem Beispiel mit dem „Blink2“ Makro gemacht. Bei unserem Feuerwehrauto sind beide hinteren Blinker in Reihe geschaltet. Es reicht also, wenn man nur ein Signal generiert.

Zum ansteuern mehrere LEDs welche über einzelne Kanäle angesteuert werden kann man die Blink2 Funktion einfach mehrfach benutzen.
Das RGB Beispiel würde dann so aussehen:

Code: Alles auswählen

  Blink2    (LED,   C_ALL, InCh, 500 ms, 500 ms, 15,  128) /* Vorderlicht Blinken Dunkel 15/ Hell 128 (Weis)        */ \
  BlueLight1(LED+1, C3,    InCh)                           /* Blaulicht rechts                                      */ \
  BlueLight2(LED+2, C3,    InCh)                           /* Blaulicht Links (Andere Periode damit nicht synchron) */ \
  Blink2    (LED+3, C12,   InCh, 500 ms, 500 ms,  0,  128) /* Blinker hinten rechts (Gelb)                          */ \
  Blink2    (LED+4, C12,   InCh, 500 ms, 500 ms,  0,  128) /* Blinker hinten links (Gelb)                           */ \
  Blink2    (LED+5, C12,   InCh, 500 ms, 500 ms,  0,  128) /* Blinker vorne rechts (Gelb)                           */ \
  Blink2    (LED+6, C12,   InCh, 500 ms, 500 ms,  0,  128) /* Blinker vorne links (Gelb)                            */ \
  Const     (LED+7, C1,    InCh,                  0,   25) /* Ruecklicht     (Rot)                                  */
Wenn man einzelne LEDs über WS2811 Module ansteuern will, dann können 3 LEDs mit einem Modul betrieben werden. In diesem Fall wird die Konstante C_ALL anstelle von C1 .. C3 benutzt.

Man könnte auch die Pattern Funktion dazu benutzen ein spezielles Makro zu generieren welches 4 Ausgänge gleichzeitig ansteuert. Die Pattern Funktion ist unglaublich mächtig. Damit kann man allesmögliche Anstellen. Ich muss mal eine ausführliche Dokumentation dazu erstellen. (Habe ich das „Ich muss mal“ nicht schon ein paarmal verwendet?)

=> Gibt viele verschiedene Möglichkeiten. Wenn Du eine konkrete Anwendung hast, dann kann ich Dir und natürlich auch den anderen Stummis gerne Tipps geben.

Noch Fragen? Her Damit...

P.S.:
Ich bin gerade dabei ein Video mit der Feuerwehr und einem brennenden Haus mit Sound und Rauch zu erstellen.
Hardi

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Hausanschl

#53

Beitrag von Hardi » Sa 12. Jan 2019, 14:52

Hallo Speedy,
speedy200 hat geschrieben:
Sa 12. Jan 2019, 14:22
manche Platinenshops möchten ein geziptes GerberFile.
So könnten wir auch die PCB Shops hier teilen.
sehr gut, das wollte ich auch schon mal anregen. Das habe ich bei Gerd gesehen.

Willst Du Dich darum kümmern?

Hardi


speedy200
EuroCity (EC)
Beiträge: 1372
Registriert: Fr 3. Feb 2006, 11:19
Wohnort: Ulm

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Hausanschl

#54

Beitrag von speedy200 » Sa 12. Jan 2019, 14:59

Hallo Hardi,

ich kann gerne bestellen.. aber leider habe ich keine Ahnung mit Gerber und CO....
Grüße
speedy
Märklin, C-Gleis, Intellibox, Bastler...

Benutzeravatar

ThKaS
EuroCity (EC)
Beiträge: 1382
Registriert: Do 28. Apr 2005, 08:37
Wohnort: München
Kontaktdaten:
Jamaika

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Hausanschl

#55

Beitrag von ThKaS » Sa 12. Jan 2019, 17:52

Hardi hat geschrieben:
Sa 12. Jan 2019, 14:43
.....
Du findest sie in der Datei „MobaLedLib.h“ in der Bibliothek.
Wenn Du weitere Blinklichter definieren willst, dann kannst Du einfach so eine Zeile in Dein Programm kopieren und entsprechend modifizieren.
Beispiel:

Code: Alles auswählen

#define  BlueLight3(LED,Cx,InCh)  PatternT4(LED,_NStru(Cx,   4,1),InCh,_Cx2LedCnt(Cx),0,   255, 0,0,  30 ms, 74 ms,  30 ms, 500 ms,_Cx2P_DBLFL(Cx))     // Blaulicht 3
 
....
Moin Hardi,

danke, das hat gut funktioniert.
Ich habe in der MobaLedLib.h eine 3.Blauchlicht konfiguriert und es blinkt. :D

Was passiert denn mit der MobaLedLib.h bei einem Update in der Bibliothek?
Wird die dann überschrieben?
Bräuchte ich dann immer eine Sicherung um meine "Modifikationen" nicht zu verlieren?
lieben Gruss von südlich des Weisswurst-Äquators
Thomas

guckst: www.thkas-moba.de ‹(•¿•)› www.mucis.de

Bild

Mä-K-Gleis, Tams MC, Multi-Kulti Decoder, WDP

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Hausanschl

#56

Beitrag von Hardi » Sa 12. Jan 2019, 19:15

Hallo Thomas,
ThKaS hat geschrieben:
Sa 12. Jan 2019, 17:52

Ich habe in der MobaLedLib.h eine 3.Blauchlicht konfiguriert und es blinkt. :D

Was passiert denn mit der MobaLedLib.h bei einem Update in der Bibliothek?
Wird die dann überschrieben?
Bräuchte ich dann immer eine Sicherung um meine "Modifikationen" nicht zu verlieren?
Ja, wenn Du etwas an der Bibliothek veränderst, dann wird es beim nächsten Update überschrieben ;-( Aber Du musst die Zeile nicht in die Bibliothek einfügen. Du kannst sie auch in Deiner .ino Datei oberhalb der Konfiguration einfügen so wie ich das auch in den Beispielen gemacht hab.

Auf der anderen Seite kann ich die Zeile auch gerne in die offizielle Bibliothek aufnehmen. Sie belegt ja nur dann Speicher im Arduino wenn man sie benutzt.
=> Nur her damit. Es ist toll, wenn wir (Alle) gemeinsam an dem Projekt weiterarbeiten.

Hardi

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Hausanschl

#57

Beitrag von Hardi » Sa 12. Jan 2019, 19:38

Hallo Speedy,

ich finde es ganz toll, dass Du mithelfen willst.
speedy200 hat geschrieben:
Sa 12. Jan 2019, 14:59
Hallo Hardi,

ich kann gerne bestellen.. aber leider habe ich keine Ahnung mit Gerber und CO....
Grüße
speedy
Details habe ich in einer PN an Dich geschickt.

Hardi

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Hausanschl

#58

Beitrag von Hardi » So 13. Jan 2019, 01:38

Hallo Pyromanen,

Feuer hat für mich etwas Faszinierendes. Geht es Euch auch so. Darum muss es natürlich auch auf einer Modelleisenbahn vorkommen. Das kann ein Lagerfeuer oder auch ein richtiges Feuer.

Mit der MobaLedLib kann man beides simulieren. Bei einem Lagerfeuer wird eine RGB LED verwendet. Für ein größeres Feuer wie in dem Video hier werden mehrere Leuchtdioden von der Bibliothek angesteuert. Zum Glück habe ich noch nie erleben müssen wie ein echtes Haus brennt. Ich hoffe, dass die Simulation des Programms so ähnlich aussieht wie in der Realität.

Haus und Feuerwehrfahrzeug soll auf unserer Anlage als weitere „Knopfdruck“ Aktion installiert werden.
Mit dem ersten Druck auf den Taster wird das Feuer „entzündet“. Der zweite Knopfdruck aktiviert den Rauchgenerator. Und mit dem dritten Druck auf den Taster kommt die Feuerwehr. Weil Kinder gerade an den Geräuschen Spaß haben kann man mit jedem weiteren Tastendruck eine andere MP3 Datei abrufen.

Im Video sieht man im Vordergrund das S3PO Modul welches die Geräusche erzeugt. Es ist genauso wie die LEDs über ein 4-poliges Kabel an die Verteilerplatine angeschlossen.

Die Platine auf der linken Seite liest die Taster ein. Sie kann bis zu 10 Taster abfragen und die darin enthaltenen LEDs ansteuern. Mehre dieser Schaltungen können über ein 8-poliges Kabel miteinander verbunden werden, wenn weitere Taster benötigt werden.

In der Mitte ist der Arduino Nano mit einem hier nicht benutzten CAN Modul. Er steuert die Lichter, den Sound und den Rauchgenerator und fragt die Tasten ab. Damit ist er aber keineswegs ausgelastet. Er kann problemlos noch weitere 200 LEDs versorgen.

Das Feuerwehrauto ist mit zwei WS2811 Modulen Bestückt welche die verschiedenen LEDs ansteuern. Die dazu verwendete Konfiguration wird in dem Beispiel „Macro_Fire_truck“ der Bibliothek vorgestellt.
Bild
Auf dem Bild sieht man drei der vier LEDs für Rücklicht und Blinker. Die Gehäuse der Leuchtdioden sind geschwärzt damit das Licht nur an den Lichtleiter abgegeben wird welcher über eine Bohrung in die LED gesteckt ist. Die dünnen Lackisolierten Drähte führen zu den Blaulichtern und den Frontscheinwerfern.
Ja, ich weiß man könnte das noch schöner machen…
Ich würde mich über Bilder von Euch freuen, die zeigen wie Ihr das gelöst habt. Gegenüber meiner Vorlage müsst Ihr euch sicher nicht schämen…


Die „Flammen“ und den Rauch erzeugt diese Konstruktion:
Bild

Bild

Mit den folgenden Makros wird all das generiert:

Code: Alles auswählen

#define Fire_truck(LED,    InCh)                                                                                       \
  Blink2    (LED+1, C2,    InCh, 500 ms, 500 ms, 50,  255) /* Vorderlicht Blinken Dunkel/Hell                       */ \
  BlueLight1(LED+1, C1,    InCh)                           /* Blaulicht rechts                                      */ \
  BlueLight2(LED+1, C3,    InCh)                           /* Blaulicht Links (Andere Periode damit nicht synchron) */ \
  Blink2    (LED,   C3,    InCh, 500 ms, 500 ms,  0,  255) /* Blinker hinten                                        */ \
  Const     (LED,   C1,    InCh,                  0,   25) /* Ruecklicht                                            */

#define Burning_House(LED0, B_LED, B_LED_Cx, InNr, TmpNr, Timeout)                                                     \
            PushButton_w_LED_0_3(B_LED, B_LED_Cx, InNr, TmpNr, 0, Timeout)                                             \
            Logic      (TmpNr+4,    TmpNr+3 AND InNr)        /* Sound is active when TmpNr+3 and the input = 1 */      \
            Logic      (TmpNr+2,    TmpNr+2 OR TmpNr+3)      /* TmpNr+2 is also active if TmpNr+3 is active */         \
            Logic      (TmpNr+1,    TmpNr+1 OR TmpNr+2)      /* TmpNr+1 is also active if TmpNr+2 is active */         \
            Fire       (LED0+1,     TmpNr+1, 5, 50)                                                                    \
            Const      (LED0+7, C1, TmpNr+2, 0,255) /* Rauch */                                                        \
            Const      (LED0+7, C3, TmpNr+2, 0,63)  /* Status LED Rauch */                                             \
            Fire_truck (LED0+8,     TmpNr+3)                                                                           \
            Sound_PlayRandom(LED0+0,TmpNr+4, 5)     /* Sound zufällig */                                               \
            Sound_Seq8(      LED0+0,TmpNr+0)        /* Sound aus (Stille.mp3) */
Das Programm dazu wird erst in der nächsten Version der Bibliothek enthalten sein.

Hardi

Benutzeravatar

ThKaS
EuroCity (EC)
Beiträge: 1382
Registriert: Do 28. Apr 2005, 08:37
Wohnort: München
Kontaktdaten:
Jamaika

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#59

Beitrag von ThKaS » So 13. Jan 2019, 08:21

Guten Morgen Hardi

:gfm:

Das Thema Push-Button finde ich toll, würde aber gerne dazu eine Erweiterung vorschlagen, sehen wollen.
Kann man in Deine Lösung irgendwie DCC integrieren. So dass die NANOs direkt über DCC ansteuerbar werden und ggfls parallel zu möglichen Push-Buttons auch in eine PC-Steuerung integriert werden können.
Bodo hatte den Nano als DCC-Decoder genutzt. http://moba.noethlich.info/?page_id=583

Ich bin leider ein Programmier-DAU, so dass ich das nicht selbst verküpfen kann und auch nicht weiss, ob die Speicher- und Rechenkapazität des Nano da ausreicht.
lieben Gruss von südlich des Weisswurst-Äquators
Thomas

guckst: www.thkas-moba.de ‹(•¿•)› www.mucis.de

Bild

Mä-K-Gleis, Tams MC, Multi-Kulti Decoder, WDP

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#60

Beitrag von Hardi » So 13. Jan 2019, 10:01

Hallo Thomas,

vielen Dank…
Die Integration von DCC währe sicherlich eine sehr schöne Sache. Ich habe mir auch schon Gedanken dazu gemacht.

Problematisch daran ist die Ansteuerung der LEDs. Die Datenleitung zu den WS281x Bausteinen muss mit einem sehr exakten Timing angesteuert werden. Damit dabei nichts schief geht müssen die Interrupts des Prozessors für eine gewisse Zeit (12ms bei 256 RGB LEDs) abgeschaltet werden. Wenn in dieser Zeit DCC Signale ankommen gehen diese verloren.

Ich habe mich noch gar nicht mit dem DCC Protokoll und der Arduino Bibliothek beschäftigt. Wenn die DCC Signale periodisch widerholt werden, dann ist es vielleicht nicht so schlimm, wenn man mal eine Botschaft verpasst solange sie innerhalb von kurzer Zeit wiederholt wird.
Beim einlesen der Signale einer Infrarot Fernbedienung hat man das gleiche Problem. Hier prüft das Programm, bevor es die LEDs mit neuen Daten versorgt, ob gerade Daten per Infrarot ankommen. Wenn ja, dann wird gewartet bis die IR Daten vollständig empfangen wurden. Hier funktioniert das ganz gut.

Wenn der Empfang der DCC Signale auf diese weise nicht möglich ist, dann muss man in den sauren Apfel beißen und einen weiteren Arduino einsetzen (Was für eine Verschwendung).
Aber vielleicht ist das auch die bessere Lösung. So können einfacher zwei Leute an dem Problem arbeiten.

Ich frag mal bei Bodo nach.

Hardi
Zuletzt geändert von Hardi am Fr 18. Jan 2019, 00:02, insgesamt 1-mal geändert.


TecnoWorld
InterRegioExpress (IRE)
Beiträge: 266
Registriert: Mi 11. Mär 2015, 15:49
Nenngröße: TT
Stromart: digital
Gleise: TT
Wohnort: Chiclana
Alter: 51
Kontaktdaten:
Spanien

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#61

Beitrag von TecnoWorld » So 13. Jan 2019, 11:41

Hardi hat geschrieben:
So 13. Jan 2019, 10:01
Problematisch daran ist die Ansteuerung der LEDs. Die Datenleitung zu den WS281x Bausteinen muss mit einem sehr exakten Timing angesteuert werden. Damit dabei nichts schief geht müssen die Interrupts des Prozessors für eine gewisse Zeit (12ms bei 256 RGB LEDs) abgeschaltet werden. Wenn in dieser Zeit DCC Signale ankommen gehen diese verloren.
Nun, dann programmiere es doch anders. Die LEDs macht man mit DMA und SPI, damit hat der Prozessor 0% Auslastung und steht zu 100% anderen Aufgaben zur Verfügung. Z.b. Protokollen.

Ich habe das ja in meinem System RailSolution so gemacht.

Damit kann man die Module ja mittels DCC, XpressNet, Lodi commander, iTrain oder RocRail ansteuern...

Also gehen tut das ;-)
__________________________
LG aus Andalusien.
RailSolution - das Lichtprojekt von Modellbahnern für die Modellbahn


Erich Müller
ICE-Sprinter
Beiträge: 6339
Registriert: Do 3. Dez 2015, 20:53
Nenngröße: H0
Stromart: digital
Gleise: Mittelleiter
Wohnort: jottweedee

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#62

Beitrag von Erich Müller » So 13. Jan 2019, 12:59

Hallo,

vergebt einem Ahnungslosen, dass er sich einmischt, aber dazu hätte ich dann doch einen Gedanken:

- die Feuerszenerie wird im aktuellen Zustand durch einen Momentkontakt gesteuert.
- Weichendecoder für Doppelspulenantriebe (WeichEi beispielsweise) geben Momentkontakt für Sekundenbruchteile und können über Digitalprotokoll angesprochen werden.

Kann man die zwei nicht verbinden, nötigenfalls mittels Optokoppler?

Klar, DCC in die Lichtelektronik implementieren ist eleganter, aber ginge es so nicht auch? Man muss ja nicht immer das Rad neu erfinden.
Freundliche Grüße
Erich

„Es hat nie einen Mann gegeben, der für die Behandlung von Einzelheiten so begabt gewesen wäre. Wenn er sich mit den kleinsten Dingen abgab, so tat er das in der Überzeugung, daß ihre Vielheit die großen zuwege bringt.“
Friedrich II. über Fr. Wilhelm I.


Railcar
InterRegio (IR)
Beiträge: 103
Registriert: Do 15. Nov 2018, 09:41
Alter: 67

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#63

Beitrag von Railcar » So 13. Jan 2019, 14:40

Hallo,
ich könnte mir gut vorstellen das Franz-Peters (Microbahner) Arduino Eigenbau Decoder dafür geeignet ist.
viewtopic.php?f=5&t=144916#p1635681

Da gibt es auch schon einige Platinenentwürfe für: https://www.stummiforum.de/viewtopic.ph ... 0#p1858079
Weichendecoder für Doppelspulenantriebe (WeichEi beispielsweise) geben Momentkontakt für Sekundenbruchteile und können über Digitalprotokoll angesprochen werden.
Das könnte doch jeder beliebige Ausgang sein der von High/Low, Low/High umschaltet. Wenn die Schaltzeit nicht reicht könnte man einen als Spulenantrieb definieren Ausgang nehmen, bei dem sich dann auch die Schaltzeit (im mSec Bereich) einstellen lässt.

Ein Eigenbaudecoder der auch noch Softwaremäßig angepasst werden kann erscheint mir günstiger als ein "Kaufdecoder".

Nur mal so angedacht.

Ulrich

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#64

Beitrag von Hardi » So 13. Jan 2019, 15:16

Hallo Ingolf,
TecnoWorld hat geschrieben:
So 13. Jan 2019, 11:41
Nun, dann programmiere es doch anders. Die LEDs macht man mit DMA und SPI, damit hat der Prozessor 0% Auslastung und steht zu 100% anderen Aufgaben zur Verfügung. Z.b. Protokollen.

Ich habe das ja in meinem System RailSolution so gemacht.

Damit kann man die Module ja mittels DCC, XpressNet, Lodi commander, iTrain oder RocRail ansteuern...

Also gehen tut das ;-)
Ich steure die LEDs nicht selber an. Dazu verwende ich die FastLED Bibliothek welche sehr schnell und umfangreich ist. Die Autoren haben unendlich viel Zeit und Herzblut in das Projekt gesteckt.

Aber Du hast Recht, es geht sicherlich noch besser. Aber ich traue mir das nicht zu.

Wenn Du Deine Lösung für den Arduino veröffentlichen willst, dann her damit. Es würde sicherlich vielen Projekten helfen.

Hardi

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#65

Beitrag von Hardi » So 13. Jan 2019, 15:41

Hallo Erich,
Erich Müller hat geschrieben:
So 13. Jan 2019, 12:59
Hallo,

vergebt einem Ahnungslosen, dass er sich einmischt, aber dazu hätte ich dann doch einen Gedanken:

- die Feuerszenerie wird im aktuellen Zustand durch einen Momentkontakt gesteuert.
- Weichendecoder für Doppelspulenantriebe (WeichEi beispielsweise) geben Momentkontakt für Sekundenbruchteile und können über Digitalprotokoll angesprochen werden.

Kann man die zwei nicht verbinden, nötigenfalls mittels Optokoppler?

Klar, DCC in die Lichtelektronik implementieren ist eleganter, aber ginge es so nicht auch? Man muss ja nicht immer das Rad neu erfinden.
Oftmals entstehen die besten Ideen, wenn man mal ganz anders an eine Sache herangeht.

Ja, es wäre möglich, einfach einen Optokoppler einzusetzen. Das währe kompatibel zu jeder beliebigen Steuerung und der entsprechenden Software. Wenn man nur wenige Funktionen steuern will ist das sicherlich die beste Lösung.

Bei den Sound Modulen mache ich das so ähnlich. Elegant währe es, wenn man das Protokoll der WS281x Module einlesen wurde und dann über einen Prozessor die Sound Module ansteuern würde. Das war mir aber zu aufwändig. Darum habe ich einfach ein WS2811 Modul, zwei Widerstände und Kondensatoren zur Filterung verwendet und rufe damit die Sounds ab. Ist nicht die Elegante Lösung, aber es geht…
Bild

Trotzdem reizt es mich die DCC Signale einzulesen. Insbesondere weil es öffentlich verfügbare Bibliotheken dafür gibt.

Es ist wohl auch möglich die WS281x Signale mit einem Arduino zu lesen. „mcmobby“ schreibt das hier: https://forum.arduino.cc/index.php?PHPS ... msg3686756 (#4 und 7) aber solange das nicht öffentlich zugänglich ist bringt uns das nicht weiter.

Hardi

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#66

Beitrag von Hardi » So 13. Jan 2019, 15:49

Hallo Ulrich,
Railcar hat geschrieben:
So 13. Jan 2019, 14:40
ich könnte mir gut vorstellen das Franz-Peters (Microbahner) Arduino Eigenbau Decoder dafür geeignet ist.
viewtopic.php?f=5&t=144916#p1635681
:
Ein Eigenbaudecoder der auch noch Softwaremäßig angepasst werden kann erscheint mir günstiger als ein "Kaufdecoder".
Da kann ich 100% zustimmen. Ich hab auch schon seit einiger Zeit den entsprechenden Optokoppler hier liegen. Aber die Zeit dazu Fehlt.

Gemeinsam kriegen wir das hin!!

Hardi


TecnoWorld
InterRegioExpress (IRE)
Beiträge: 266
Registriert: Mi 11. Mär 2015, 15:49
Nenngröße: TT
Stromart: digital
Gleise: TT
Wohnort: Chiclana
Alter: 51
Kontaktdaten:
Spanien

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#67

Beitrag von TecnoWorld » So 13. Jan 2019, 16:39

Hardi hat geschrieben:
So 13. Jan 2019, 15:16
Hallo Ingolf,
Wenn Du Deine Lösung für den Arduino veröffentlichen willst, dann her damit. Es würde sicherlich vielen Projekten helfen.
Nun, ich benutze keinerlei Frameworks. weder Arduino noch andere. Alles rein bare metal in Assembler und C++

Da ich arduino nicht kenne, kann ich nichts dazu sagen. Aber ich kann dir den Source geben. Ist für die ATSAMC21 Prozessoren.

LG,
Ingolf
__________________________
LG aus Andalusien.
RailSolution - das Lichtprojekt von Modellbahnern für die Modellbahn

Benutzeravatar

ThKaS
EuroCity (EC)
Beiträge: 1382
Registriert: Do 28. Apr 2005, 08:37
Wohnort: München
Kontaktdaten:
Jamaika

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Hausanschl

#68

Beitrag von ThKaS » So 13. Jan 2019, 16:53

Hardi hat geschrieben:
So 13. Jan 2019, 01:38
.......
Mit den folgenden Makros wird all das generiert:

Code: Alles auswählen

#define Fire_truck(LED,    InCh)                                                                                       \
  Blink2    (LED+1, C2,    InCh, 500 ms, 500 ms, 50,  255) /* Vorderlicht Blinken Dunkel/Hell                       */ \
  BlueLight1(LED+1, C1,    InCh)                           /* Blaulicht rechts                                      */ \
  BlueLight2(LED+1, C3,    InCh)                           /* Blaulicht Links (Andere Periode damit nicht synchron) */ \
  Blink2    (LED,   C3,    InCh, 500 ms, 500 ms,  0,  255) /* Blinker hinten                                        */ \
  Const     (LED,   C1,    InCh,                  0,   25) /* Ruecklicht                                            */

#define Burning_House(LED0, B_LED, B_LED_Cx, InNr, TmpNr, Timeout)                                                     \
            PushButton_w_LED_0_3(B_LED, B_LED_Cx, InNr, TmpNr, 0, Timeout)                                             \
            Logic      (TmpNr+4,    TmpNr+3 AND InNr)        /* Sound is active when TmpNr+3 and the input = 1 */      \
            Logic      (TmpNr+2,    TmpNr+2 OR TmpNr+3)      /* TmpNr+2 is also active if TmpNr+3 is active */         \
            Logic      (TmpNr+1,    TmpNr+1 OR TmpNr+2)      /* TmpNr+1 is also active if TmpNr+2 is active */         \
            Fire       (LED0+1,     TmpNr+1, 5, 50)                                                                    \
            Const      (LED0+7, C1, TmpNr+2, 0,255) /* Rauch */                                                        \
            Const      (LED0+7, C3, TmpNr+2, 0,63)  /* Status LED Rauch */                                             \
            Fire_truck (LED0+8,     TmpNr+3)                                                                           \
            Sound_PlayRandom(LED0+0,TmpNr+4, 5)     /* Sound zufällig */                                               \
            Sound_Seq8(      LED0+0,TmpNr+0)        /* Sound aus (Stille.mp3) */
.....
Moin Hardi,
jetzt dachte ich, ich kann einfach ´mal das Feuer (Fire) simulieren .... aber bei dem Regen hier bei uns geht das einfach nicht an.

Was muss ich denn machen, damit ich nur die 5 RGB-LEDs zum Feuerchen erwecken kann? Die TmpNr ist ja ein Auslesen aus der push-button-aktion, oder?
lieben Gruss von südlich des Weisswurst-Äquators
Thomas

guckst: www.thkas-moba.de ‹(•¿•)› www.mucis.de

Bild

Mä-K-Gleis, Tams MC, Multi-Kulti Decoder, WDP

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#69

Beitrag von Hardi » So 13. Jan 2019, 18:25

Hallo Ingolf,
TecnoWorld hat geschrieben:
So 13. Jan 2019, 16:39
Nun, ich benutze keinerlei Frameworks. weder Arduino noch andere. Alles rein bare metal in Assembler und C++

Da ich arduino nicht kenne, kann ich nichts dazu sagen. Aber ich kann dir den Source geben. Ist für die ATSAMC21 Prozessoren.
Ich habe es befürchte. Die Assembler Sourcen helfen uns nicht weiter. Schade, trotzdem Danke für das Angebot.
Die ATSAMC21 Prozessoren spielen aber auch in einer ganz anderen Liga (Hab gerade mal Googeln müssen was das für Teile sind). Ich vermute das sie trotzdem nicht Teurer sind als ein Arduino.

Mir gefällt an der Arduino Programmierung, dass sie so unendlich wenig Ressourcen haben. 32 KByte FLASH und nur 2 KByte RAM. Das zweite Tolle ist die aktive Community.

Schaue Dir mal den Arduino an. Mir macht es richtig Spaß damit zu basteln. Anfangs Dachte ich die IDE ist schrecklich primitiv, aber auch das ist gut durchdacht und auf das absolut nötige reduziert. Die Arduino Programmierung ist so einfach, dass wirklich jeder der einen Texteditor bedienen kann und sich im Internet zurecht findet damit schnell zum Ziel kommt. Dazu kommen die einfach zu benutzenden Beispiele.
Ich denke das der Arduino gerade für die Stummis genau das richtige ist.

Die Programmierung ist auch für Fortgeschrittene interessant. Das Arduino Projekt verwendet den gcc Compiler. Damit kann man auch Anspruchsvolle Dinge machen und diese anderen zur Verfügung stellen.

Hardi

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Hausanschl

#70

Beitrag von Hardi » So 13. Jan 2019, 18:50

Hallo Thomas,

ich hoffe Du bist inzwischen nicht erfroren…
ThKaS hat geschrieben:
So 13. Jan 2019, 16:53
jetzt dachte ich, ich kann einfach ´mal das Feuer (Fire) simulieren .... aber bei dem Regen hier bei uns geht das einfach nicht an.

Was muss ich denn machen, damit ich nur die 5 RGB-LEDs zum Feuerchen erwecken kann? Die TmpNr ist ja ein Auslesen aus der push-button-aktion, oder?
Du hast Recht. Die TmpNr beschreibt eine Temporäre Variable welche von der „Push Button“ Aktion eingeschaltet wird. Aber Du kannst anstelle der Temporären Variable die eine Spezial Variable „SI_1“ benutzen. Diese Variable ist immer 1.
Das sieht dann so aus:

Code: Alles auswählen

 
MobaLedLib_Configuration()
  {
  Fire(0, SI_1, 9, 100)
  EndCfg // End of the configuration
  };
Gerade habe ich festgestellt, das die Fire() Funktion mit mehr als 7 LEDs ein Problem hat. Das schaue ich mir gleich mal an.

Hardi


speedy200
EuroCity (EC)
Beiträge: 1372
Registriert: Fr 3. Feb 2006, 11:19
Wohnort: Ulm

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#71

Beitrag von speedy200 » So 13. Jan 2019, 18:55

Hallo Hardi,

kann man nicht die Ausgänge des Arduino DCC auf die Tasteingänge Deiner MobaLed setzen?

Würde man zwei Arduinos benötigen, ist ja aber kein Kostenfaktor mehr.

Die Taster parallel zum DCC Arduino, dann kann man von beiden Seiten steuern. Tasten und DCC

Grüße
speedy
Märklin, C-Gleis, Intellibox, Bastler...

Benutzeravatar

Bodo
InterCityExpress (ICE)
Beiträge: 2286
Registriert: Do 28. Apr 2005, 08:59
Nenngröße: H0
Stromart: digital
Steuerung: IB1 & CS2
Gleise: C-Gleis
Kontaktdaten:
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#72

Beitrag von Bodo » So 13. Jan 2019, 19:03

Hallo zusammen,

habe den Eintrag jetzt erst nach Hardis PN gesehen ...
Hardi hat geschrieben:
So 13. Jan 2019, 10:01
Hallo Thomas,

vielen Dank…
Die Integration von DCC währe sicherlich eine sehr schöne Sache. Ich habe mir auch schon Gedanken dazu gemacht.

Problematisch daran ist die Ansteuerung der LEDs. Die Datenleitung zu den WS281x Bausteinen muss mit einem sehr exakten Timing angesteuert werden. Damit dabei nichts schief geht müssen die Interrupts des Prozessors für eine gewisse Zeit (12ms bei 256 RGB LEDs) abgeschaltet werden. Wenn in dieser Zeit DCC Signale ankommen gehen diese verloren.
jetzt habe ich noch mal etwas gegoogelt und rumprobiert und bin mir nicht mehr sicher, ob die Wiederholungen wirklich genormt sind. Als Zentrale habe ich eine Märklin MS2 (Weichenformat auf DCC) benutzt und auf Grundlage der Beispiel-Sketches mal einen "bösen" Weichen-Dekoder gebaut.

Code: Alles auswählen

if (  wAddr == weichenAdr[0] ) {
    if ( OutputAddr & 0x1 ) {
      digitalWrite(13, HIGH);
      delay(100);                      // Blockiert den Prozessor !        
      digitalWrite(13, LOW);
    }
    else {
      digitalWrite(13, LOW);
    }
  }
Wenn ich delay(>200) setze, blinkt die LED beim Schaltbefehl einmal, setze ich delay(100), blinkt sie zuverlässig zweimal - irgendwo dazwischen ist der Bereich, wo der wiederholte Schaltbefehl verloren geht. Vielleicht sind es ja auch mehr Wiederholungen - aber wenn man den delay noch viel kleiner macht, sieht man ja irgendwann auch nix mehr blinken.

In die Diskussion werfe ich neben der Frage nach dem Timing auch noch mal die Frage nach den Timern des Prozessors - Franz-Peter (microbahner) hatte ja mit seinen MoBaTools anfangs genau das Problem, dass sie den gleichen Timer wie die NMRADCC-Library verwendeten.

Wenn ich noch irgendwas unabhängig von den LED-Modulen testen kann, tue ich das gerne …

Viele Grüße, Bodo

PS: Die Ausgänge eines zweiten (DCC-)Arduinos über Optokoppler auf die Tastereingänge des ersten (LED-)Arduinos zu legen, wäre natürlich eine triviale Lösung und dürfte problemlos funktionieren … wäre dann ein "DDC-Eingabe-Modul" für das MoBaLED-System.
Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#73

Beitrag von Hardi » So 13. Jan 2019, 20:48

Hallo Speedy,
speedy200 hat geschrieben:
So 13. Jan 2019, 18:55
kann man nicht die Ausgänge des Arduino DCC auf die Tasteingänge Deiner MobaLed setzen?

Würde man zwei Arduinos benötigen, ist ja aber kein Kostenfaktor mehr.
Ja, das ginge sicherlich. Aber es geht noch viel einfacher. Die beiden Arduinos können z.B. über eine serielle Verbindung miteinander reden. Dazu benötigt man nur zwei Leitungen zwischen den Arduinos und ein paar Zeilen Programmkode. Auf diese Weise können dann beliebig viele verschiedene Signale ausgetauscht werden.

Im Internet findet man dazu viele Beispiele. Das gefällt mir so an dem Arduino. Für alles gibt es eine Lösung…
Hier einfach mal eine Möglichkeit:
https://robotic-controls.com/learn/ardu ... munication

Hardi

Benutzeravatar

ThKaS
EuroCity (EC)
Beiträge: 1382
Registriert: Do 28. Apr 2005, 08:37
Wohnort: München
Kontaktdaten:
Jamaika

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Hausanschl

#74

Beitrag von ThKaS » So 13. Jan 2019, 20:57

Hardi hat geschrieben:
So 13. Jan 2019, 18:50
Hallo Thomas,

ich hoffe Du bist inzwischen nicht erfroren…
...... Das sieht dann so aus:

Code: Alles auswählen

 
MobaLedLib_Configuration()
  {
  Fire(0, SI_1, 9, 100)
  EndCfg // End of the configuration
  };
Gerade habe ich festgestellt, das die Fire() Funktion mit mehr als 7 LEDs ein Problem hat....
MoinHardi
hat geklappt. Mir ist jetzt warm :)

Mit 6 RGB-Leds geht es schon ganz gut. Allerdings wäre mir der Weiss-Anteil zu groß und das ganze Feuer etwas zu hektisch.
Wie und wo kann man denn am Timing (auf-abblenden und der Farbe z.B. mehr orange-gelb) spielen?
lieben Gruss von südlich des Weisswurst-Äquators
Thomas

guckst: www.thkas-moba.de ‹(•¿•)› www.mucis.de

Bild

Mä-K-Gleis, Tams MC, Multi-Kulti Decoder, WDP

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 353
Registriert: Mo 28. Dez 2015, 13:07
Nenngröße: H0
Stromart: digital
Steuerung: MS2 + IR, Eigenbau
Gleise: Märklin C-Gleis
Wohnort: Mainz
Alter: 56
Deutschland

Re: MobaLedLib: Arduino Bibliothek zum Ansteuern von LEDs und anderen Komponenten über eine Signalleitung New:Feuer u. S

#75

Beitrag von Hardi » So 13. Jan 2019, 21:03

Hallo Bodo,

vielen Dank für den Test. Ich denke, dass die Lösung mit zwei Arduinos am schnellsten zum Ziel führt, auch wenn es mich ärgert, wenn dadurch zusätzliche Kosten von 1.77€ für den zweiten Nano entstehen.

Wenn Du Zeit hast, dann könntest Du ja mal ein Programm schreiben welches erkannte DCC Zubehörbefehle auf der seriellen Schnittstelle Ausgibt. Das könnte man zunächst am PC auswerten und dann direkt mit dem LED Arduino verbinden.

Wenn Du zusätzlich noch den Empfangszeitpunkt ausgibst „millis()“, dann sieht man auch gleich ob und mit welcher Periode die Befehle wiederholt werden.

Ich schau gleich mal wo meine Optokoppler sind. Der Tag hat noch drei Stunden…

Hardi

Antworten

Zurück zu „Software und Hardware“