MobaLedLib: Beginn einer neuen Ära mit Windows Konfigurationstool. Programmieren war Gestern ... 3D-Druck für LEDs

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

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 344
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: Diskussion DC

#101

Beitrag von Hardi » Fr 18. Jan 2019, 07:56

Hallo Thomas,

Schön, dass es Dir gefällt. Und Dir auch ein Dankeschön. Du hast mich auf die Idee gebracht das Auszuprobieren. Der Dank geht auch an Bodo und Franz-Peter, die mich in die richtige Richtung geschubst haben.

Der DCC-Arduino leitet alle DCC Zubehör- und Signal-Befehle einfach per serieller Schnittstelle an den LED-Arduino weiter. Dadurch muss die DCC-Software nie angepasst werden. Auf dem LED-Arduino bestimmt man mit der Bibliothek welche „Signale“ für die Steuerung benutzt werden.
Das wird genauso wie bei dem CAN Signal Beispiel gemacht. Ich musste die Daten nur anstelle vom CAN-Bus von der seriellen Schnittstelle lesen.

Vielleicht schaffe ich es Heute nacht das ganze so zu Dokumentieren, dass ich es veröffentlichen kann.

Hardi

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 344
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: Diskussion DC

#102

Beitrag von Hardi » Fr 18. Jan 2019, 08:17

Hallo Ingo,

danke für den hundertsten Beitrag hier.
Ingolf hat geschrieben:
Fr 18. Jan 2019, 07:24
Wir hatten mal über die Ansteuerung der LED´s über den Wemos D1 mini gesprochen, es geht, aber die 1. LED muß "geopfert" werden zur
Pegelanpassung.
Ich weiß nicht ob das ein Opfer oder ein Feature ist. Ich baue immer mindestens eine LED als Heartbeat auf meine Platinen. Dazu bietet sich eine RGB-LED an:
- verschiedene Farben
- Überprüfung der LED Kommunikation
- kein zusätzlicher Prozessor Pin
- Pegelanpassung
- Schutz des „teuren“ Arduinos
Ich habe mir bereits notiert, das ich das bei einer „richtigen“ Platine einbauen will. Dazu würde ich einen WS2811 im DIL8 Gehäuse mit einer IC-Fassung verwenden. Diesen kann man gegebenen Falls einfach tauschen. Zusätzlich will ich das Ende der Kette auf einen weiteren WS2811 legen der ebenfalls auf der Platine sitzt. Damit kann geprüft werden ob die Kette unterbrochen ist oder falsche Daten übertragen werden.
Ingolf hat geschrieben:
Fr 18. Jan 2019, 07:24
Auf der Moba möchte ich zum probieren mein Bahnhofsgebäude mit deinem System beleuchten, die LED´s sollen zufallsgesteuert an und aus
gehen, einzelne LED´s ständig leuchten. Mal sehen, ob ich so was Sketch - mäßig hinbekomme.
Das bekommst Du sicher hin, wenn nicht, das frag einfach nach...

Ich würde mich sehr über Bilder und Videos hier freuen.

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: Diskussion DC

#103

Beitrag von TecnoWorld » Fr 18. Jan 2019, 15:20

Hardi hat geschrieben:
Fr 18. Jan 2019, 08:17
Ende der Kette auf einen weiteren WS2811 legen der ebenfalls auf der Platine sitzt. Damit kann geprüft werden ob die Kette unterbrochen ist oder falsche Daten übertragen werden.
Die Idee, das Signal zu checken, ist gar nicht mal so abwegig. Man müsste allerdings die Kette wieder rückführen, wäre etwas Kabelaufwand mehr.
Aber man könnte als 1. Bytegruppe z.B. 0x55AA55 aussenden und das Signal per SPI wieder einlesen zum Vergleichen. So könnte man Fehler in der Verkabelung finden und vor allem: man kann damit eine Auto-Konfiguration machen, weil man weiß, wie viele LEDs am Strang angeschlossen sind. Und man muss dann auch nicht mehr updaten, als wirklich physikalisch vorhanden sind.
__________________________
LG aus Andalusien.
RailSolution - das Lichtprojekt von Modellbahnern für die Modellbahn

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 344
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: Diskussion DC

#104

Beitrag von Hardi » Fr 18. Jan 2019, 21:07

Hallo Ingolf,

bei der 4-poligen Verkabelung wird das Ende der Kette automatisch wieder zurück geführt.
Bild
Ich hatte dieses Signal auch schon mit dem Arduino verbunden. Da ich es aber bisher nicht ausgewertet hab wurde der Pin für eine andere Funktionalität verwendet.

Zur Bestimmung der Länge benötigt man keine SPI-Lese Routine. Es reicht wenn man überprüft ob ein Signal ankommt. Zur Ermittlung der LED Anzahl benötigt man auch kein spezielles Muster. Es reicht wenn man an X LEDs eine Null schickt. Wenn ein Signal zurück kommt, dann sind weniger als X LEDs vorhanden. Durch geschickte Veränderung von X kann man so ganz schnell die Anzahl der LEDs ermitteln ohne das die LED leuchten.
Auf diese Weise kann man auch im Betrieb Unterbrechungen erkennen.

Ich hatte allerdings letztens eine LED welche bei einem bestimmten Eingangswert zufällige Zahlen an ihrem Ausgang ausgegeben hat. Das sah lustig aus. Alle Folgenden LEDs haben verrückt gespielt. Ich zeig Euch mal das Video. So einen Fehler kann man nur erkennen wenn man das Signal am Ende der Kette auswertet.

Hardi

Benutzeravatar

ThKaS
EuroCity (EC)
Beiträge: 1378
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: Diskussion DC

#105

Beitrag von ThKaS » Sa 19. Jan 2019, 07:23

Hardi hat geschrieben:
Fr 18. Jan 2019, 07:56
....
Der DCC-Arduino leitet alle DCC Zubehör- und Signal-Befehle einfach per serieller Schnittstelle an den LED-Arduino weiter. Dadurch muss die DCC-Software nie angepasst werden. Auf dem LED-Arduino bestimmt man mit der Bibliothek welche „Signale“ für die Steuerung benutzt werden. .....
Moin Hardi,
heisst das, eigentlich kann ich hinter den seriellen DCC-Arduino in einer Art Bus-/Parallel-Verkabelung meherer „LED-Arduinos“ klemmen, die sich alle am selben Sender nähren, da der LED-Arduino ja selbst definiert, welche DCC-Adresse ihn interessiert?
Reicht dazu die Stärke des Signals, und wenn ja, wieviele LED-Arduinos könnte der versorgen?
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: 344
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: Diskussion DC

#106

Beitrag von Hardi » Sa 19. Jan 2019, 10:47

Hallo Thomas,

theoretisch währe das möglich. Falls die Ausgangsleistung des DCC-Arduinos nicht reicht könnte man auch noch ein 33 Cent IC (CD 4001) dazwischen schalten. Ich würde das nicht unbedingt empfehlen. Wenn viele LEDs angesteuert werden sollen, dann ist eine galvanische Trennung der Stromkreise nicht schlecht. Vor allem ist bei mehr als 256 RGB LEDs eine Räumliche Trennung wahrscheinlich und da man das DCC Signal überall auf der Anlage hat wird die Verkabelung einfacher mit getrennten Systemen.

Hardi

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 344
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: Diskussion DC

#107

Beitrag von Hardi » So 20. Jan 2019, 11:01

Hallo Stummiland,

Die Version 0.7.5 der MobaLedLib ist verfügbar.

Sie enthält folgende Änderungen:
  • Zusätzliche Beispiele:
    • Brennendes Haus: “Druck Knopf” Aktion mit Feuer, Rauch, Sound und Feuerwehrauto wie in dem
      Video in Post #58 gezeigt (https://vimeo.com/311006857)
    • DCC (Digital Command Control) Decoder Beispiel mit zwei Arduinos. Gezeigt im Post #98 (https://vimeo.com/311996452). Damit können jetzt auch DCC Zubehörkommandos zur Steuerung der LEDs verwendet werden. Das ist z.B. für Lichtsignale sinnvoll.
  • Zusätzliche Funktionen: Bin_InCh_to_TmpVar() und RGB_Heartbeat2()
  • Zip Dateien der Verteilerplatinen für die RGB LEDs hinzugefügt. Diese gibt es jetzt einzeln ohne das S3PO Modul mit zwei verschiedenen Steckern. Die erste Version verwendet Pfostenstecker so wie ich das bisher gezeigt hab. Die zweite nutzt die billigeren RJ10 Stecker. Beide Platinen können mit einem Eingangsstecker des jeweils anderen Typs bestückt werden so dass man beide Varianten gemischt einsetzen kann.
  • Verbesserter Feuer Algorithmus
  • Korrigierter “binary mode” des Zählers (CF_BINARY)
  • Korrigierte Initialisierung der Pattern Funktion bei der Verwendung des „Goto“ Modes.
  • Englische Dokumentation auf denselben Stand gebracht wie die Deutsche.
  • Neue version des Pattern_Configurator.xlsb
Seit Heute morgen (21.01.19) kann die Version 0.7.5 der Bibliothek komfortabel über die Bibliotheksverwaltung der Arduino IDE aktualisiert werden (siehe: viewtopic.php?p=1913636#p1913636)


Man kann die Bibliothek auch „von Hand“ installieren:
- Download von https://github.com/Hardi-St/MobaLedLib über “Clone or Download” button
- Löschen der alten Bibliothek im Verzeichnis: C:\Users\<User>\Documents\Arduino\libraries (<User> anpassen)
- Installation über „Sketch/Bibliothek einbinden/.ZIP Bibliothek hinzufügen“

Viel Spaß damit…


Und weil ich schon lange keine Bilder mehr gezeigt hab hier die beiden Varianten der LED Verteiler:
Bild

Bild

Alf hat die ersten 24 Platinen der ersten Version am Freitag bekommen. => Bald kann es los gehen…

Hardi
Zuletzt geändert von Hardi am Mo 21. Jan 2019, 08:20, insgesamt 1-mal geändert.

Benutzeravatar

ThKaS
EuroCity (EC)
Beiträge: 1378
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: Diskussion DC

#108

Beitrag von ThKaS » So 20. Jan 2019, 14:44

Hardi hat geschrieben:
So 20. Jan 2019, 11:01
...
Die Version 0.7.5 der MobaLedLib ist verfügbar.
....
Moin Hardi,
habe gerade versucht das BurningHouse-Beispiel zu testen.

Da kommt beim kompilieren die Fehlermeldung:

Code: Alles auswählen

In file included from C:\Users\thkas\Documents\Arduino\libraries\MobaLedLib-master\examples\22.Burning_House\22.Burning_House.ino:150:0:

C:\Users\thkas\Documents\Arduino\libraries\MobaLedLib-master\src/Keys_4017.h:59:160: fatal error: TimerOne.h: No such file or directory

compilation terminated.


TimerOne.h gibt es nicht. Vllt kannst Du das prüfen. Danke
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: 344
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 Ver 0.7.5

#109

Beitrag von Hardi » So 20. Jan 2019, 15:10

Hallo Thomas,

Freut mich, dass Du das Beispiel gleich probiert hast.
Das Beispiel benötigt noch zwei weitere Bibliotheken:
  • TimerOne
  • DIO2
Beide kannst Du über die Bibliotheksverwaltung installieren. Ich hab das für die MobaLedLib mal hier (#14) beschrieben: https://www.stummiforum.de/viewtopic.ph ... a#p1913636
Eine Offizielle anleitung zum installieren von Bibliotheken habe ich hier gefunden: https://www.arduino.cc/en/Guide/Libraries#toc3

In jedem Fall muss ich das noch mal in das Beispiel schreiben. Ich dachte eigentlich, dass die Fehlermeldung die ganze Codezeile zeigt. Dort habe ich schon mal einen Hinweis eingebaut (Ganz Rechts):

Code: Alles auswählen

#include <TimerOne.h> // The TimerOne library must be installed in addition if you got the error message "..fatal error: TimerOne.h: No such file or directory"
#include <DIO2.h>     // The library for I/O 2 functions must be installed also
Aber wenn man nicht alles zweimal prüft…

Danke für den Hinweis

Wenn Du das Beispiel ohne die Tastaturplatine testen willst, dann musst Du einen Taster an einen Arduino Pin anschließen und diesen einlesen. Dummerweise scheint gerade draußen die Sonne. => Ich kann erst wieder in den Keller wen es dunkel wird. Jetzt muss ich erst mal Vitamin B produzieren (Oder was war das Zeug wozu man die Sonne braucht?).

Hardi

Benutzeravatar

ThKaS
EuroCity (EC)
Beiträge: 1378
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 Ver 0.7.5

#110

Beitrag von ThKaS » So 20. Jan 2019, 15:33

Hardi hat geschrieben:
So 20. Jan 2019, 15:10
...muss ich erst mal Vitamin.... D ....produzieren (Oder was war das Zeug wozu man die Sonne braucht?)....
Danke, und Nein, da kommt nicht die Code-Zeile, nur der Fehler.
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: 344
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 Ver 0.7.5

#111

Beitrag von Hardi » So 20. Jan 2019, 17:08

Hallo Thomas,

D? Ach so und ich wundere mich, dass ich nichts gespürt hab von dem B…

Ich teste den Code meistens ohne ihn als Bibliothek zu verpacken. Dann kommen andere Fehlermeldungen.
=> Es ist gut wenn Ihr mich darauf hin weist.

Danke
Hardi

Benutzeravatar

ThKaS
EuroCity (EC)
Beiträge: 1378
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 Ver 0.7.5

#112

Beitrag von ThKaS » So 20. Jan 2019, 20:10

Hardi hat geschrieben:
So 20. Jan 2019, 15:10
.... Wenn Du das Beispiel ohne die Tastaturplatine testen willst, dann musst Du einen Taster an einen Arduino Pin anschließen und diesen einlesen. ....
Moin Hardi,

das müsste doch dann gehen, wenn ich ein Kabel von GND auf A0 nutze, kurz stecke und wieder ziehe, oder habe ich den Sketch noch nicht verstanden?
Über A0 liest er doch die Taster ein, oder?
Problem: Da tut sich nichts, Taster habe ich keine da.

Ergänzung: Während des Essens hat das Teilchen gelegen, jetzt flimmert es :shock: . GND war mit A0 verbunden ....
Gibt es da noch irgendeinen Timer, der nur ab und zu ein Einschalten zulässt?
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: 344
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 Ver 0.7.6

#113

Beitrag von Hardi » Mo 21. Jan 2019, 01:09

Hallo Thomas,
ThKaS hat geschrieben:
So 20. Jan 2019, 20:10
das müsste doch dann gehen, wenn ich ein Kabel von GND auf A0 nutze, kurz stecke und wieder ziehe, oder habe ich den Sketch noch nicht verstanden?
Über A0 liest er doch die Taster ein, oder?
Problem: Da tut sich nichts, Taster habe ich keine da.
Ja, der Pin A0 wird als Eingang verwendet. Aber er muss in diesem Beispiel mit 5V verbunden werden. In den anderen Beispielen habe ich die Schalter mit GND verbunden, weil man sich dann den Pull-up Widerstand sparen kann indem man den Pull-Up im Prozessor aktiviert. Das macht man mit der folgenden Zeile:

Code: Alles auswählen

  pinMode(SWITCH0_PIN, INPUT_PULLUP); // Activate an internal pullup resistor for the input pin
Die Eingänge eines IC‘s müssen immer auf einem definierten Pegel liegen sonst driften sie undefiniert zwischen 5V und GND was komische Effekte erzeugen würde. Dazu müsste man einen Schalter verwenden der ganz schnell zwischen 5V und GND wechselt. Das ist aber umständlich deswegen verwendet man einen Widerstand der den Eingang auf den „Ausschalt“ Pegel zieht wenn der Schalter nicht betätigt wird.

Das Beispiel ist aber für die „PushButtonAction_4017“ Schaltung geschrieben. Hier schaltet ein Zähler (CD 4017) abwechselnd 5V auf einen der 10 Taster. Wenn der Taster in dem Moment gedrückt wird, dann kommen die 5V am Arduino an. Anhand des Zeitpunkts kann das Programm bestimmen welcher Taster gedrückt wurde.
Bei dieser Anwendung muss ein Pull-Down Widerstand verwendet werden. Dummerweise hat der Arduino nur schaltbare Pull-Up Widerstände. Darum ist in der Schaltung der Widerstand R5 unten Links eingebaut:
Bild
Dieser sorgt dafür, das am Eingang A0 des Arduinos 0V anliegen, wenn kein Taster betätigt wird.
Mit diesem Widerstand und einem einfachen Taster gegen 5V sollte das Beispiel auch funktionieren. Der Arduino würde sich vielleicht „wundern“ warum immer alle 10 Taster gleichzeitig gedrückt werden, aber er würde sich nicht weiter darum kümmern, weil er laut Programm nur auf den Taster 3 achten soll.

Falls Dir die Erklärung zu ausführlich war, dann bitte ich das zu entschuldigen, aber vielleicht hilft sie einem anderen Stummi weiter. Und wenn ich mich nicht klar genug ausgedrückt hab, dann frag einfach noch mal nach. Auch darüber freuen sich die Anderen die sich nicht zu fragen trauen…

Ich habe das Beispiel so angepasst, dass man es ohne die Schalterplatine verwenden kann. Der Taster (Oder in Kabel) wird an D7 angeschlossen und mit GND verbunden. Mit einem Compiler Schalter kann man die verwendung der Tasterplatiene wieder aktivieren.
Das geänderte Beispielist auf GitHub verfügbar (Link siehe ersten Beitrag).

ThKaS hat geschrieben:
So 20. Jan 2019, 20:10
Ergänzung: Während des Essens hat das Teilchen gelegen, jetzt flimmert es :shock: . GND war mit A0 verbunden ....
Gibt es da noch irgendeinen Timer, der nur ab und zu ein Einschalten zulässt?
Nein, die Push Button Aktion kann sofort wieder aktiviert werden. Und wenn A0 mit GND verbunden war, dann entspricht das dem nicht betätigten Taster. Es sollte also gar nichts passieren. Wenn A0 offen gewesen wäre, dann würde der Eingang sich irgendwo zwischen 5V und GND herum driften. Dann hätte die Aktion gestartet und gleich darauf wieder beendet werden können.

Wenn Du Pech hast, dann liegt das an einer kaputten RGB LED. Ich hatte das letztens auch mal. Das sieht dann so aus:

Ich habe ewig gebraucht den Bösewicht zu finden. Hab die Dächer von allen Häusern noch mal abgerissen… Wenn ich das Video vorher gemacht hätte, dann währe mir vielleicht aufgefallen, dass der Fehler erst im zweiten Haus von links aufgetreten ist. Die Fehlerhafte LED war im ersten Haus auf der Rückseite. Die Häuser sind immer noch nicht wieder richtig zusammen gebaut ;-(
Das gemeine an dem Fehler war, dass er erst nach einer bestimmten Zeit und vermutlich bei einem bestimmten Muster aufgetreten ist.
Zum Glück ist das bis jetzt der erste Fehler dieser Art. Bei einer zweiten LED braucht eine der Grundfarben eine Zeit bis sie richtig leuchtet. Sie beeinflusst aber nicht die folgenden LEDs.
Insgesamt habe ich etwas mehr als 200 LEDs verbaut und erst 2 Fehler.

Hat das flackern bei Dir ähnlich ausgesehen?

Oder vielleicht war der Pin A0 nicht richtig mit GND verbunden und das was Du gesehen hast war das Feuer? Es sieht bei den LEDs ohne Haus tatsächlich aus wie ein wildes Flimmern fällt mir gerade auf. Und die Blinkenden Lichter des Feuerwehrautos sind nicht besser. Hier werden die Einzelnen LEDs mit falschen Farben angezeigt und sie überlagern sich Teilweise.

Je länger ich darüber nachdenke bin ich davon überzeugt, dass Du mein „Feuer“ gesehen hast. Das wirkt erst mit dem darüber gestülpten Haus und LEDs welche in die verschiedenen Richtungen scheinen und sich dabei überlagern gut.

Erst wenn man viele LEDs verwendet und diese nicht direkt sieht (Blatt Papier), dann wirkt es ein bisschen wie ein Feuer. Es ist aber noch sehr verbesserungsfähig.
Im Video stimmen die Farben nicht und es ist außerdem überstrahlt.


Ich finde das der Effekt in dem „brennenden“ Haus ganz gut rüberkommt, und ein größeres Feuer will ich gar nicht auf der Anlage haben.

Die Simulation eines Lagerfeuers sieht auch ganz gut aus. Ich muss auch davon mal ein Video machen.

Hardi
Zuletzt geändert von Hardi am Mo 21. Jan 2019, 01:28, insgesamt 1-mal geändert.

Benutzeravatar

ThKaS
EuroCity (EC)
Beiträge: 1378
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 Ver 0.7.6

#114

Beitrag von ThKaS » Mo 21. Jan 2019, 09:00

Moin moin Hardi,
Hardi hat geschrieben:
Mo 21. Jan 2019, 01:09
....Falls Dir die Erklärung zu ausführlich war, dann bitte ich das zu entschuldigen, aber vielleicht hilft sie einem anderen Stummi weiter....
Danke für die Erklärung. Das war super hilfreich fürs Verständnis.
Hardi hat geschrieben:
Mo 21. Jan 2019, 01:09
....sonst driften sie undefiniert zwischen 5V und GND was komische Effekte ....
Vllt. war es ja eine Zufallseinschaltung auf Grund des Drifts. Hat ja ne Stunde rumgelegen.
Hardi hat geschrieben:
Mo 21. Jan 2019, 01:09
....Ich habe das Beispiel so angepasst, dass man es ohne die Schalterplatine verwenden kann. ........Wenn Du Pech hast, dann liegt das an einer kaputten RGB LED......
Danke! Schaun wir mal.
Hardi hat geschrieben:
Mo 21. Jan 2019, 01:09
....Je länger ich darüber nachdenke bin ich davon überzeugt, dass Du mein „Feuer“ gesehen hast. Das wirkt erst mit dem darüber gestülpten Haus und LEDs welche in die verschiedenen Richtungen scheinen und sich dabei überlagern gut. ......Ich finde das der Effekt in dem „brennenden“ Haus ganz gut rüberkommt......
Ja, es kann sein, dass es das Feuer war. Zum Effekt hatte ich im Post #74 schon das geschrieben:
ThKaS hat geschrieben:...
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?...
Das war dann in der DCC-Entwicklung untergegangen, macht aber nichts.

Habe dann im FastLED-Beispiel "Fire2012 with Palette" eine eigene Palette mit mehr Orange-anteilen erstellt. Hat funktioniert auf der Basis der in http://www.farb-tabelle.de/en/table-of-color.htm dargestellten RGB-Werte für die Farben und meiner MIschung.
Allerdings wirkt das in Deinem Video schon recht gut mit Deiner Einstellung.

Jetzt aber wieder ´mal eine ergänzende Frage:
Über das Beispiel "FireTruck" hatten wir schon ´mal gesprochen. Was muss ich machen, um auch auf die Vorderlichter "weiss" den Stroboskop-Effekt zu bringen (wäre ein bisserl amerikanisch oder sehr modern). Die RGB-LED bringt mit C_ALL bei ein undefiniertes Licht, wenn ich eine BlueLight-Variable einsetze.
Wie kann ich ein Cx definieren, dass näherungsweise weiß wäre und den Stroboeffekt darstellen kann.
Sowas in der Art:

define C_W GhostWhite
??? uint32_t GhostWhite = strip.Color(248, 248, 255);
??? strip.setPixelColor(n, GhostWhite);
Wobei n dann aus dem FireTruck die LED ist.
Beispielidee kommt von dort: https://learn.adafruit.com/adafruit-neo ... ibrary-use
Wie schon gesagt, ich kann den einen oder anderen Programmierprozess verstehen, aber nicht selbst umsetzen.
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


Ingolf
InterRegio (IR)
Beiträge: 248
Registriert: So 30. Aug 2015, 10:15
Nenngröße: H0
Stromart: digital
Steuerung: Z21
Gleise: Piko A
Wohnort: 39629 Bismark
Alter: 64
Deutschland

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

#115

Beitrag von Ingolf » Mo 21. Jan 2019, 11:15

Hallo Hardi,

ich habe am WE ein wenig mit den LED´s herumgespielt.
Erst mit dem Wemos D1 mini und ESP Easy. Zum Ansteuern der LED´s habe ich eine kleine Batch-Datei zum Testen.
Man könnte noch Pausen einfügen, LED´s ein- und ausschalten, man müßte sich weiter mit dem Syntax des Plugins beschäftigen.

Bild

Wie man sieht, arbeitet die erste LED brav mit.

Nach kurzer Zeit ging jedoch nix mehr.

Lange gesucht..., der LED-Streifen hatte irgendwo den Geist aufgegeben. Man, sind die Dinger sensibel !
Aber ich habe ja vorgesorgt...

Dann habe ich den Nano mit einem neuen LED-Streifen angeschlossen und ein paar Sketche ausprobiert.
Dabei bin ich sehr schnell an meine Grenzen gestoßen.

Ein paar Fragen:
Ist das CAN-Modul notwendig ? Ich hätte nichts, womit ich das Teil steuern könnte.
Wie müßte die Minimal-Beschaltung für den Nano sein ? Ich habe jetzt nur den Nano über 470 Ohm mit dem Din verbunden.
Den Sketch "House" auf den Nano geflasht, tja... irgendwas passiert da, also die min- und max-Zeit runter, neu geflasht, hmmm…

Kurz gesagt, ich sehe nicht durch.
Muß ich das Configurations-Arrey noch meinen Bedürfnissen anpassen ????
In der "House.ino" oder gar in der "MobaLedLib.h" ???

Bitte verzeihe die unqualifizierten Fragen eines alten Mannes :| :| :|

Grüße Ingo

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 344
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 Ver 0.7.6

#116

Beitrag von Hardi » Mo 21. Jan 2019, 21:29

Hallo Ingolf,
Ingolf hat geschrieben:
Mo 21. Jan 2019, 11:15
Lange gesucht..., der LED-Streifen hatte irgendwo den Geist aufgegeben. Man, sind die Dinger sensibel !
Aber ich habe ja vorgesorgt...
Was ist denn kaputt gegangen? Mechanisch? Meißtens betrifft es nur die vorderen LEDs...

Ingolf hat geschrieben:
Mo 21. Jan 2019, 11:15
Ein paar Fragen:
Ist das CAN-Modul notwendig ? Ich hätte nichts, womit ich das Teil steuern könnte.
Wie müßte die Minimal-Beschaltung für den Nano sein ? Ich habe jetzt nur den Nano über 470 Ohm mit dem Din verbunden.
Den Sketch "House" auf den Nano geflasht, tja... irgendwas passiert da, also die min- und max-Zeit runter, neu geflasht, hmmm…

Kurz gesagt, ich sehe nicht durch.
Muß ich das Configurations-Arrey noch meinen Bedürfnissen anpassen ????
In der "House.ino" oder gar in der "MobaLedLib.h" ???
Nein, das CAN Modul wird nur dann benötigt, wenn Du was vom CAN lesen willst.
Als minimal Beschaltung reicht ein Kabel zum DIN der ersten LED und die Verbindungen von GND und 5V. Ich habe bisher auch nie einen Widerstand in die Datenleitung eingebaut. Jede LED hat ja schon einen Widerstand am Eingang.

Bei dem House Beispiel passiert sehr wenig. Das soll ja auch so sein. Die Preiserleins kommen ja nicht alle gleichzeitig heim... Zu Testzwecken kannst Du Zeiten ändern:

Code: Alles auswählen

#define HOUSE_MIN_T   2  // Minimal time [s] to the next event (1..255)
#define HOUSE_MAX_T 5  // Maximal random time [s]              "

In der „MobaLedLib.h“ muss nichts geändert werden(Kann aber, dann währe es gut wenn Du mir das mitteilst damit es in die nächste Version kommt).
Zur Anpassung an Deine Bedürfnisse veränderst Du zunächst das Konfigurationsarray. Am besten in kleinen Schritten damit Du evtl. auftretende Fehler schneller findest. Zunächst mal kannst Du weitere Zimmer hinzu fügen. Dann kannst Du mit den verschiedenen Beleuchtungstypen spielen (TV, Hell, Dunkel, Neon,...)

Vielleicht kombinierst Du dann mal zwei Beispiele. Zum Beispiel die Ampel und das Haus.
Taste dich einfach Stück für Stück an die Möglichkeiten heran. Immer in kleinen Schritten.

Und scheue Dich nicht zu Fragen wenn Du nicht weiter kommst. Ich freue mich darüber wenn sich jemand mit der Bibliothek beschäftigt.

@Thomas: Ich hab Deine Beitrag nicht übersehen, es wird aber eine ziemlich lange Antwort werden. Gib mir ein bißchen Zeit...

Hardi
Zuletzt geändert von Hardi am Di 22. Jan 2019, 18:24, insgesamt 1-mal geändert.

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 344
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 Ver 0.7.6

#117

Beitrag von Hardi » Mo 21. Jan 2019, 23:34

Hallo Thomas,
ThKaS hat geschrieben:
Mo 21. Jan 2019, 09:00
Ja, es kann sein, dass es das Feuer war. Zum Effekt hatte ich im Post #74 schon das geschrieben:
ThKaS hat geschrieben:...
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?...
Das war dann in der DCC-Entwicklung untergegangen, macht aber nichts.

Habe dann im FastLED-Beispiel "Fire2012 with Palette" eine eigene Palette mit mehr Orange-anteilen erstellt. Hat funktioniert auf der Basis der in http://www.farb-tabelle.de/en/table-of-color.htm dargestellten RGB-Werte für die Farben und meiner MIschung.
Allerdings wirkt das in Deinem Video schon recht gut mit Deiner Einstellung.
Es tut mir Leid, wenn ich darauf nicht weiter eingegangen bin. Aber ich sehe schon, dass Du deutlich mehr verstehst als Du behauptest. Das mit der Palette ist eine sehr gute Idee. Ich nehme an, dass Du dazu die Bibliothek verändert hast. Soll ich eine Funktion einbauen mit der man eine eigene Palette verwenden kann?
Nein, warum ich? Das könntest Du eigentlich machen. Ich würde es dann in die nächste Version aufnehmen. Was hältst Du davon.
Ich kann Dir natürlich auch dabei helfen…
Zeig doch mal was Du verändert hast.



ThKaS hat geschrieben:
Mo 21. Jan 2019, 09:00
Jetzt aber wieder ´mal eine ergänzende Frage:
Über das Beispiel "FireTruck" hatten wir schon ´mal gesprochen. Was muss ich machen, um auch auf die Vorderlichter "weiss" den Stroboskop-Effekt zu bringen (wäre ein bisserl amerikanisch oder sehr modern). Die RGB-LED bringt mit C_ALL bei ein undefiniertes Licht, wenn ich eine BlueLight-Variable einsetze.
Wie kann ich ein Cx definieren, dass näherungsweise weiß wäre und den Stroboeffekt darstellen kann.
Sowas in der Art:

define C_W GhostWhite
??? uint32_t GhostWhite = strip.Color(248, 248, 255);
??? strip.setPixelColor(n, GhostWhite);
Wobei n dann aus dem FireTruck die LED ist.
Beispielidee kommt von dort: https://learn.adafruit.com/adafruit-neo ... ibrary-use
Deine „ergänzenden Fragen“ sind fatal. Wenn ich daran Denke was Du mit dieser Frage losgetreten hast:
ThKaS hat geschrieben:
So 13. Jan 2019, 08:21
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.


Aber nur zu… Deine Fragen bringen allen was…


Das ist ein Thema welches ich unbedingt dokumentieren muss! Allerdings fürchte ich dass ich damit 40 Seiten füllen werde. Darum jetzt nur mal auf die Schnelle eine Erklärung:

Die mächtigste Funktion der Bibliothek ist die Pattern Funktion. Mit Ihr können die verschiedensten Effekte erzeugt werden. Fast alles außer den Häusern beruht auf dieser Funktion. Einige Beispiele tagen das „Pattern_Funktion“ im Namen: „08.Constr.Warn.Light_Pattern_Func“, „09.TrafficLight_Pattern_Func“, „10.RailwaySignal_Pattern_Func“.

Aber auch das Blitzen des Blaulichts wird über die Pattern Funktion erzeugt.

Die Pattern Funktion erzeugt LED Muster welche über Tabellen konfiguriert werden. In diesen Tabellen steht wann welche LED mit welcher Helligkeit an- und ausgeschaltet werden soll.

In dem Ampel Beispiel „09.TrafficLight_Pattern_Func“ habe ich versucht das zu erklären. Hier noch mal in Farbe:

Die Ampel soll zunächst Rot, dann Rot + Gelb und danach Grün zeigen. Das Grün bleibt einige Zeit an damit die Preiserleins über die Kreuzung fahren können. Dann wird die Ampel Gelb und anschließend wieder Rot. Jetzt beginnt das gleiche für die andere Richtung der Kreuzung.
Diese Abfolge sieht in der Tabelle (Pattern_Configurator.xlsm) so aus:

Bild

In der Tabelle unten ist immer dann ein „x“ gesetzt wenn die entsprechende Lampe leuchten soll.
Die „Dauer“ Zeile darüber bestimmt wie lange die einzelnen Phasen dauern sollen.
Das Excel Programm berechnet daraus eine „Pattern“ Zeile:

Code: Alles auswählen

 PatternT4(0,0,SI_1,6,0,255,0,PF_NO_SWITCH_OFF,2 Sec,1 Sec,10 Sec,3 Sec,73,163,48,73,26,133)
Diese Zeile kann man dann in das Konfigurationsarray des eigenen Programms einbauen:

Code: Alles auswählen

//*******************************************************************
// *** Configuration array which defines the behavior of the sound module which is addressed like a LED ***
MobaLedLib_Configuration()
  {
  PatternT4(0,0,SI_1,6,0,255,0,PF_NO_SWITCH_OFF,2 Sec,1 Sec,10 Sec,3 Sec,73,163,48,73,26,133)
  EndCfg // End of the configuration
  };
//*******************************************************************
Das Konfigurationsarray ist eigentlich ein Array aus verschiedenen Bytes. Das Array der obenstehenden Konfiguration sieht so aus:

Code: Alles auswählen

const PROGMEM unsigned char Config[] = {
13, 0, 0, 255, 255, 6, 0, 255, 0, 16, 208, 7, 232, 3, 16, 39, 184, 11, 6, 0, 73, 163, 48, 73, 26, 133, 0
};
Es enthält alle Informationen zur Darstellung der Ampel in möglichst kompakter Form. Für das Beispiel werden nur 27 Byte benötigt.

Doch jetzt zu Deinem Problem:
Wenn ich Dich richtig verstanden hab willst Du ein ähnliches Blitzen wie das Bluelight(). Dazu willst Du RGB LEDs verwenden bei denen die Farbe frei konfigurierbar sein soll.
Dazu verwenden wir wieder die Excel Tabelle:
Bild
Anstelle der „X“e werden jetzt die Helligkeitswerte eingetragen. Hier habe ich besondere Zahlen benutzt damit man diese später in der Konfigurationszeile besser findet. Damit das möglich ist wird der Parameter „Bits pro Wert“ im oberen Bereich auf 8 gesetzt. Damit kann man für die Helligkeit der LEDs 256 Werte angeben.
Für unser Programm verwenden wir dieses Mal die Grüne Makro Zeile:

Code: Alles auswählen

#define Wechselblinker(LED,InNr) PatternT4(LED,28,InNr,3,0,128,0,0,48 ms,74 ms,48 ms,496 ms,33,44,55,0,0,0,33,44,55,0,0,0)
Sie beschreibt ein Makro welches wir in der Konfiguration mit unterschiedlichen Parametern benutzen können. Dazu ersetzen wir die „besonderen Zahlen“ durch Parameter Namen und fügen diese in dem Makroaufruf ein. Bei der Gelegenheit ersetzen wir auch noch den Makronamen. Das hätte ich auch im Excel Sheet machen können, hab es aber erst gesehen nachdem ich das Bild hochgeladen hab:

Code: Alles auswählen

#define Color_Flash(LED,InNr, Red, Green, Blue) PatternT4(LED,28,InNr,3,0,128,0,0,48 ms,74 ms,48 ms,496 ms,Red,Green,Blue,0,0,0,Red,Green,Blue,0,0,0)
Dieses Makro können wir jetzt in unser Programm kopieren und mehrfach mit verschiedenen Farben benutzen:

Code: Alles auswählen

#define Color_Flash(LED,InNr, Red, Green, Blue) PatternT4(LED,28,InNr,3,0,128,0,0,48 ms,74 ms,48 ms,496 ms,Red,Green,Blue,0,0,0,Red,Green,Blue,0,0,0)

//*******************************************************************
// *** Configuration array which defines the behavior of the sound module which is addressed like a LED ***
MobaLedLib_Configuration()
  {
  //          LED,InNr, Red, Green, Blue
  Color_Flash(0,  SI_1, 248, 248,   255 )// GhostWhite
  Color_Flash(1,  SI_1, 148, 148,   155 )// Dark White
  EndCfg // End of the configuration
  };
//*******************************************************************
Bei dem Makro hätte man auch noch die Zeiten als Parameter vorgeben können.

Achtung: Ich habe das Beispiel nicht getestet damit Ihr die Chance habt meine Schreibfehler zu finden… Der erste Fehlerfinder bekommt eine Belohnung.

Ein interessantes Makro wäre ein sich scheinbar drehendes Blaulicht. Dazu könnte man ein Blaulicht mit drei LEDs (über Lichtleiter) beleuchten. Die LEDs würden dann so angesteuert, dass es aussieht als würde sich das Licht drehen. Dazu könnte man die „Analoges Überblenden“ Funktion nutzen auf die ich jetzt aber nicht weiter eingehen werde. Das gibt es vielleicht demnächst hier…

Auf diese Weise kann man sich die verschiedensten Makros erstellen und bei Bedarf einsetzen. Das Gute an einem Makro ist, das es erst dann Speicher belegt, wenn es eingesetzt wird.

@Stummiland: Es würde mich freuen, wenn Ihr eure Makros hier vorstellen würdet (Wenn möglich mit einem Video)

@Thomas: Ich hoffe ich habe dieses Mal nichts übersehen.

Hardi

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 344
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 Ver 0.7.6

#118

Beitrag von Hardi » Di 22. Jan 2019, 13:23

Erster!

Tut mir Leid, Ihr wart zu langsam. Ich habe schon einen Fehler gefunden. In dem Excel Sheet steht bei „Wert Max“ 128. Das führt dazu, dass der Maximalwert entsprechend begrenzt wird. Damit sind nur noch Helligkeitswerte bis 128 möglich.
Die 128 muss im Excel sheet und im Makro durch 255 ersetzt werden:

Code: Alles auswählen

#define Color_Flash(LED,InNr, Red, Green, Blue) PatternT4(LED,28,InNr,3,0,255,0,0,48 ms,74 ms,48 ms,496 ms,Red,Green,Blue,0,0,0,Red,Green,Blue,0,0,0)
Hardi


Ingolf
InterRegio (IR)
Beiträge: 248
Registriert: So 30. Aug 2015, 10:15
Nenngröße: H0
Stromart: digital
Steuerung: Z21
Gleise: Piko A
Wohnort: 39629 Bismark
Alter: 64
Deutschland

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

#119

Beitrag von Ingolf » Di 22. Jan 2019, 17:38

Hallo Hardi,
Was ist denn kaputt gegangen? Mechanisch? Meißtens betrifft es nur die vorderen LEDs...
es hat ein paar mal unkontrolliert geblinkt, dann gingen alle 10 LED´s nicht mehr....
Ich muß die Dinger wahrscheinlich einzeln testen....

Zumindest beim "House" ist der Groschen gefallen, sehr schöne Effekte. Zeiten hatte ich schon runtergesetzt, jetzt bin ich erst mal durch den
Syntax in der Zeile für "House" durchgestiegen. Fast.
House(0, SI_1, 2, 8, ROOM_DARK, ROOM_BRIGHT, ROOM_WARM_W, ROOM_TV0, NEON_LIGHT, ROOM_D_RED, ROOM_COL2, ROOM_WARM_W, ROOM_COL3, FIREB) // House with 10 rooms
Warum steht hier für LED eine 0 ? Wäre die letzte dann 9 ?
D.h., wenn ich erweitern will, fange ich dann mit 10 an ?
Den Sinn von InCh habe ich auch noch nicht geschnallt, aber wenn es funktioniert, muß ich das ja auch nicht :P

Ich habe jetzt mal ausprobiert:
// *** Configuration array which defines the behavior of the LEDs ***
MobaLedLib_Configuration()
{// LED: First LED number in the stripe
// | InCh: Input channel. Here the special input 1 is used which is always on
// | | On_Min: Minimal number of active rooms. At least two rooms are illuminated.
// | | | On_Max: Number of maximal active lights.
// | | | | rooms: List of room types (see documentation for possible types).
// | | | | |
House(0, SI_1, 2, 3, ROOM_DARK, ROOM_BRIGHT, ROOM_WARM_W, ROOM_TV0) // House with 4 rooms
RandWelding(4,SI_1, 201, 1 Min, 3 Min, 50 Sec, 2 Min)
EndCfg // End of the configuration
};
//*******************************************************************
Funktioniert auch. Kann ich so in diesem Sinne weitere Zeilen anfügen mit z.B. Blinken, Sound usw. ??

Soll erst mal reichen. Es fängt an, Spaß zu machen !!!

Grüße Ingo

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 344
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 Ver 0.7.6

#120

Beitrag von Hardi » Di 22. Jan 2019, 22:34

Hallo Ingolf,
Ingolf hat geschrieben:
Di 22. Jan 2019, 17:38
House(0, SI_1, 2, 8, ROOM_DARK, ROOM_BRIGHT, ROOM_WARM_W, ROOM_TV0, NEON_LIGHT, ROOM_D_RED, ROOM_COL2, ROOM_WARM_W, ROOM_COL3, FIREB) // House with 10 rooms
Warum steht hier für LED eine 0 ? Wäre die letzte dann 9 ?
D.h., wenn ich erweitern will, fange ich dann mit 10 an ?
Den Sinn von InCh habe ich auch noch nicht geschnallt, aber wenn es funktioniert, muß ich das ja auch nicht :P
Die 0 ist die Nummer der ersten LED des Hauses. Entsprechend hat die letzte LED die Nummer 9. Wenn Du ein weiteres Haus ansprechen willst dann beginnt dieses mit der Nummer 10. Das hast Du ganz richtig verstanden.
Die LED Nummern sind eine unschöne Geschichte bei dem Konzept. Wenn man ein Haus dazwischen schalten will, dann müssen die Nummern aller darauf folgenden angepasst werden. Darum verwende ich in dem Beispiel „03.Schwitches_Houses“ symbolische Namen. Dort wird mit

Code: Alles auswählen

#define HOUSE_A      0
die Nummer der ersten LED des Hauses A definiert. Im Konfigurationsarray wird dann anstelle der 0 der Name „HOUSE_A“ verwendet. Die Definition des Hauses A enthält auch die anderen Zimmer eines Hauses. Die Zeilen sind aber nur Kommentar. Man könnte dort auch noch eine Beschreibung der Zimmer eintragen (z.B. „Erdgeschoss Zimmer links vorne“). Wichtig ist aber die Nummer. Hier muss man nur darauf achten dass alle Nummern in aufsteigender Reihenfolge sind. Diese Liste könnte man auch in Excel verwalten. Dann kann man die Nummerierung ganz schnell aktualisieren wenn sich etwas ändert.
In dem Beispiel „03.Schwitches_Houses“ wird auch der „InCh“ verwendet. Mit ihm kann man Steuern wann die Lichter in einem Haus An- oder Ausgehen sollen. Das kann man über einen Schalter, einen Helligkeitssensor oder was auch immer machen. Wenn man den Parameter „InCh“ nicht benutzen will und das Haus immer angeschaltet sein soll, dann trägt man hier „SI_1“ ein. Das ist eine besondere Eingangsvariable welche immer an ist. Später kann man diese noch durch eine andere Eingangsvariable ersetzen.

Ingolf hat geschrieben:
Di 22. Jan 2019, 17:38
:
Funktioniert auch. Kann ich so in diesem Sinne weitere Zeilen anfügen mit z.B. Blinken, Sound usw. ??

Soll erst mal reichen. Es fängt an, Spaß zu machen !!!
Das finde ich Super!

Ja, genau so werden die Effekte kombiniert. Es wird einfach alles in den Konfigurationsblock eingetragen. Dazwischen kann man beliebige Kommentare einfügen. Man muss nur darauf achten, dass die Nummerierung der LEDs stimmt so dass es nicht zu Überlappungen kommt. Aber keine Angst, bei einer Überlappung passiert nichts. Die entsprechenden LEDs werden dann von zwei verschiedenen Zeilen angesprochen was ziemlich verwirrend wird. Bei dem Schweißlicht könnte dann in den Pausen das TV Programm erscheinen. Darum ist es gut, wenn man bei einem „Richtigen“ Programm Symbolische Namen verwendet.

Es freut mich ganz besonders, dass es anfängt Spaß zu machen. Aber Vorsicht. Das kann schnell zur Sucht werden. Wenn das passiert können ja dann eine Selbsthilfegruppe gründen…

Hardi


Ingolf
InterRegio (IR)
Beiträge: 248
Registriert: So 30. Aug 2015, 10:15
Nenngröße: H0
Stromart: digital
Steuerung: Z21
Gleise: Piko A
Wohnort: 39629 Bismark
Alter: 64
Deutschland

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

#121

Beitrag von Ingolf » Mi 23. Jan 2019, 07:15

Moin, Moin,

"Selbsthilfegruppe" - selten so gelacht ! :D :D :D

Grüße Ingo

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 344
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

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

#122

Beitrag von Hardi » Mi 23. Jan 2019, 23:22

Hallo Kontraktfreudige,

die RGB LED Verteiler Platinen sind fertig und getestet!


Jetzt könnt Ihr loslegen!

Bild

Bild

Mit dieser Platine können 13 Häuser, Straßenlaterne, Soundmodule, Feuerwehrfahrzeuge, Ampeln, Lichtsignale, Motoren, Rauchgeneratoren, Andreaskreuze, Telefonzellen, Lagerfeuer, Dönerbuden und natürlich weitere Verteilerplatinen angeschlossen werden.

Diese Verteiler werden an verschiedenen Stellen unter der Anlage montiert so dass die Verbraucher mit kurzen Kabeln angeschlossen werden können. An die Ausgänge eines Verteilers können auch weitere Verteiler angeschlossen werden. Auf diese Weise kann man alle möglichen Verbraucher sehr einfach Anstecken. Ein Verbraucher kann aus einer oder aus vielen LEDs oder WS2811 Modulen bestehen.
Die Adresse einer LED ergibt sich automatisch aus der Position innerhalb der Kette.

Wenn man an einer Stelle weniger Konsumenten hat, dann kann man die Platine auch mit weniger Steckern bestücken. Der erste unbestückte Stecker muss dann auf der Unterseite der Platine über einen Lötjumper überbrückt werden damit die Daten richtig weitergeleitet werden. Das gilt auch für unbenutzte Anschlüsse. Jeder unbenutzte Anschluss muss mit einem Jumper überbrückt werden. Hier ein Bild der Jumper mit der ersten Verteilerplatine welche mit dem Soundmodul hergestellt wird:
Bild

Ein- und Ausgänge:
Die Platine hat auf der linken Seite eine Eingangsbuchse. Diese wird mit dem Arduino oder der vorangegangenen Verteilerplatine verbunden. Auf der Platine ist er mit „INP“ bezeichnet. Bei diesem Anschluss sind die ein und Ausgangspins vertauscht. Alle anderen Stecker sind Ausgänge. Anhand der Nummerierung kann man die Position innerhalb der Kette bestimmen. Hier nochmal das Bild mit den LED Nummern:
Bild
Man kann die Eingangsbuchse auch als RJ10 Stecker ausführen. Damit kann man beide Steckervarianten kombinieren. Auf dem RJ10 Verteiler ist ebenso ein Pfostenstecker vogesehen:
Bild

Stromverbrauch:
Die Stecker werden über Flachkabel miteinander verbunden. Diese haben einen sehr kleinen Querschnitt. Für 10-20 LEDs ist das noch kein Problem. Insbesondere weil die Leds nicht gleichzeitig und nicht mit voller Helligkeit leuchten. Aber man muss bedenken das 20 LEDs bis zu 1.1 A verbrauchen können! Das ist Brandgefährlich: viewtopic.php?f=21&t=165906
Darum ist es wichtig, dass man den Strom zwischen den Verteilerplatinen zusätzlich über dickere Leitungen führt. Das kann man über die gleichen Flachstecker machen:
Bild
Dazu löte ich einfach das dicke Kabel an die Schneid-Klemm Anschlüsse des Steckers an (+5V an Pin 1, GND an Pin 3). Achtung: Pin 2 und 4 müssen verbunden werden damit das Datensignal durchgeschleift wird.
Bild
Aus dem Befestigungsbügel habe ich etwas herausgefeilt so das man diesen wieder schließen kann:
Bild
Achtung: Darauf achten, dass sich die Versorgungsspannungskabel nicht die Datenanschlüsse berühren.

Generell solle man nicht ein zu starkes Netzteil verwenden. Theoretisch benötigen 256 RGB LEDs 14A. Das kann im Fehlerfall sehr schnell zu einem Brand führen! Ich denke, dass man mit 4A ziemlich weit kommt, wenn nicht alle LEDs gleichzeitig mit voller Helligkeit leuchten. In der Software kann man einstellen wieviel Strom die LEDs verbrauchen dürfen (Siehe Beispiel "20.Huge_Configuration"). Das Programm regelt dann die Helligkeit automatisch so ab, dass der Maximalstrom nicht überschritten wird. Auf diese Weise kann man ohne weiteres ein kleineres Netzteil einsetzen ohne dass man sich Gedanken über die gleichzeitig eingeschalteten LEDs machen muss.

Code: Alles auswählen

FastLED.setMaxPowerInVoltsAndMilliamps(5, 1500);       // limit the power used by the LEDs to 1.5A at 5V
Auf den Verteilerplatinen ist auch eine Möglichkeit zur Trennung der Stromkreise vorgesehen (J_POWER). Damit kann man verschiedene Stromkreise mit kleineren Spannungsquellen aufbauen. Allerdings gibt es „Berichte“ im Internet, dass es zu Ausfällen der LEDs kommen kann, wenn diese Daten aber keine Versorgungsspannung bekommen. Ich muss das mal untersuchen.

Kaufen:
Alf hat freundlicherweise 24 der roten Platinen für Euch bestellt und wird demnächst ausrechnen was die Platinen mit Verpackung und Versand kosten. Sagt Bescheid! Die ersten 4 Platinen sind schon weg.
Natürlich könnt Ihr Euch die Platinen auch selber bestellen. Alf, kannst Du den entsprechenden Link einstellen.

Stecker Bestellen:
Vielleicht kümmert sich auch jemand darum die Stecker und Buchsen zu bestellen. Dazu brauchen wir aber verbindliche Bestellungen. Für die 24 Platinen benötigt man bei Vollbestückung schon 336 Buchsen und mindestens so viele Stecker (ich würde 10% mehr bestellen, weil man schnell mal ein Kabel zu kurz gemacht hat oder es falsch gequetscht hat).


Habe ich noch was vergessen? Sicherlich, aber Ihr wisst ja wo Ihr mich findet…

Hardi


Ingolf
InterRegio (IR)
Beiträge: 248
Registriert: So 30. Aug 2015, 10:15
Nenngröße: H0
Stromart: digital
Steuerung: Z21
Gleise: Piko A
Wohnort: 39629 Bismark
Alter: 64
Deutschland

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

#123

Beitrag von Ingolf » Fr 25. Jan 2019, 18:04

Hallo Hardi,

Ich habe mir meine Häuschen, die noch nicht auf der Anlage installiert sind vorgesucht und mir Gedanken gemacht, wie befestige ich die LED´s.
Die Variante mit Pappe einkleben erschien mir zu aufwendig, warum nicht die LED´s hinter den Fenstern befestigen ?
Aber wie "abdichten" ?

Bild

Bild

Sollte für die meisten H0-Fenster passen, ansonsten gibt es ja auch breitere Tasten.
Die weiße Knete ist UHU patafix, um die LED etwas zu fixieren.
Vielleicht gefällt es ja jemandem so.

Hardi, eine große Bitte.
Ich sehe durch den Sketch 23b (Receiver) nicht durch.
Wie muss was wo eingetragen werden, wenn ich z.B. mit Adresse 30 Haus 1 mit 4 LED´s ein- ausschalten will, mit Adresse 31 Haus 2 mit 6 LED´s.
Mit Adresse 40 das Schweißlicht.
Könntest du mir das bitte erläutern ?

Schon mal Danke.

Grüße und schönes Wochenende

Ingo

Benutzeravatar

Threadersteller
Hardi
InterRegioExpress (IRE)
Beiträge: 344
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 Platinen

#124

Beitrag von Hardi » Sa 26. Jan 2019, 02:45

Hallo Ingo,

Deine Fensterkästen gefallen mir außerordentlich gut. Dafür solltest Du den Goldenen Recycling Preis bekommen. Jetzt müsste man nur noch die Elektronik der Tastatur zum einlesen der Taster in einem Weichenstellpult verwenden.

Ich persönlich finde die Verkabelung mit Flachkabeln sehr praktisch. Das könnte man auch bei Deiner Lösung anwenden. Dazu könntest Du ein 7mm Loch in die Taste bohren und die LED von außen an die Taste kleben. Der Vorteil bei der Lösung ist, dass man die Kabel von einer LED zur nächsten führen kann. Man braucht keine Verbinder zwischen den LEDs.

Die RGB LEDs sind ziemlich Hell. Ich kann mir vorstellen, dass die momentan implementierten Zimmertypen zu hell sind, wenn die LES direkt nach außen zeigt. Aber dass kann man ja schnell ändern. Dazu gibt es den Befehl „Set_ColTab()“ mit dem man eigene Farben und Helligkeiten definieren kann. Im Beispiel „03.Switched_Houses“ wird das verwendet.
Wenn Dir die TV Simulation oder das Kammin Feuer zu hell ist, dann kann man das auch noch anpassen. Dazu ist Software ja da.

Der Kleber gefällt mir auch. Hab gleich mal eine Packung bestellt.


Doch jetzt zu Deiner RIESEN Bitte, aber sehr gut, dass Du fragst. Das ist noch nicht richtig (eigentlich gar nicht) erklärt und ziemlich kompliziert. Ich habe 4 Stunden gebraucht das nur halbwegs zu dokumentieren.

Generell gilt, dass die DCC Signale in die Eingangsvariablen der MobaLedLib eingelesen werden. Dort können sie von den verschiedensten Funktionen genutzt werden. Dazu haben fast alle Makros einen Parameter „InCh“ über den man die Eingangsvariable angibt.

Die DCC Kommandos können auf zwei verschiedene Arten ausgewertet werden. Vermutlich gibt es noch weitere Varianten, aber ich habe ja erst vor ein paar Tagen gelesen was die Abkürzung DCC überhaupt bedeutet (Muss aber schon wieder nachschauen „Digital Command Control“).

1. Momentan Funktion
Bei dieser Methode werden von einer DCC Adresse zwei Eingangsvariablen der Bibliothek gesteuert. Solange die Rote Taste gedrückt wird ist die erste Eingangsvariable aktiv. Wenn die Grüne Taste betätigt wird die zweite Variable. Beim Loslassen der Taste ist auch die Eingangsvariable wieder 0.
Diese Methode wird zur Ansteuerung der Licht Signale benutzt. Dazu wird zusätzlich die Funktion „InCh_to_TmpVar()“ benötigt welche mehrere Eingänge in eine Zahl umwandelt. Aber das ist eine Doktorarbeit für sich…

2. Umschalt Funktion

Hier steuert eine DCC Adresse nur eine Eingangsvariable der Bibliothek. Das ist die Funktion mit der man die Häuser ein und ausschalten kann. Hier wird die Grüne Taste zum Einschalten der Variable und die Rote Taste zum Ausschalten benutzt.

Das ist hoffentlich noch verständlich. Wenn nicht: Fragen …

Verwirrend wird es durch die verschiedenen Nummern. Bei DCC beginnt die Zählung mit 1. In einem C-Programm startet man üblicherweise mit der 0. Dann kommt noch dazu, dass eine DCC Adresse im ersten Fall zwei Eingangskanäle, im zweiten Fall nur einen Kanal belegt. Die Grenze zwischen den beiden Fällen kann man frei definieren. Außerdem könnte man noch Offsets verwenden. Dann wird nicht mit dem ersten DCC Kanal begonnen, sondern z.B. mit dem dreißigsten. So einen Offset gibt es auch noch für die Eingangsvariablen. Aber das habe ich zunächst einmal weggelassen.
Zum leichteren Verständnis habe ich eine ganze Menge Test LEDs in das Beispiel eingebaut. Sie Zeigen den Zustand der Eingangsvariablen. Für die „Momentan Funktion“ habe ich Rote und Grüne LEDs verwendet. Die „Umschalt Funktionen“ werden mit Blauer Farbe signalisiert. Die Test LEDs belegen die LED Nummer 24 bis 63.

Hier erst mal eine Zuordnungstabelle:

Code: Alles auswählen

  DCC  Button      InpCh           Debug LED
  ~~~~ ~~~~~~~~~   ~~~~~           ~~~~~~~~~
  1    Red         0               24 Red
  1    Green       1               25 Green
  2    Red         2               26 Red
  2    Green       3               27 Green
  :    :            :              :
  10   Red         18              42 Red
  10   Green       19              43 Green

  11   Red/Green   20 off/on       44 Blue
  12   Red/Green   21 off/on       45 Blue
  :    :                           :
  30   Red/Green   36 off/on       63 Blue
Die eigentlichen LEDs für Signale, Häuser und Schweißlicht liegen im Bereich 0 bis 23. So kann man das Beispiel auch mit einem kürzeren LED Stripe testen.

Hier die Zuordnung der DCC Adressen zu den Funktionen:

Code: Alles auswählen

DCC           Output
 ~~~~~~~~      ~~~~~~~~~~~~~~~~
 1 Red:        Entry signal Hp0
 1 Green:      Entry signal Hp1
 2 Red:        Entry signal Hp2
 2 Green:      not used

 3 Red:        Departure signal Hp0
 3 Green:      Departure signal Hp1
 4 Red:        Departure signal Hp2
 4 Green:      Departure signal Hp0+Sh1

 11 Red/Green: House with 3 rooms starting with LED 17. When it's turned on (Green) one random room is activated directly, the others are following later
 12 Red/Green: Office building with 3 rooms with neon lights starting with LED 20.
 13 Red/Green: Welding simulation LED 23
Mit dem DCC Kanal 11 schaltet man das erste Haus an. Hier wird sofort zufällig eine der drei Zimmer beleuchtet. Dann dauert es einige Zeit (Zwischen 50 und 150 Sekunden) bis das Licht ein einem Weiteren Zimmer an geht. Dieses Haus wird von zwei sparsamen Preisern bewohnt. Es sind nicht mehr als 2 Zimmer beleuchtet. Wenn sie zusammen vor der Flimmerkiste sitzen (Dritter Raum) dann sind die anderen Zimmer Dunkel. Natürlich kommt es auch vor das beide Bewohner in unterschiedlichen Zimmern sind.
Wenn das DCC Kommando „Rot“ kommt dann wird sofort ein Licht gelöscht damit man ein Feedback sieht. Falls eine zweite Lampe brennt, wird diese wieder nach 50 bis 150 Sekunden abgeschaltet. Die Zeiten kann man mit den Konstanten

Code: Alles auswählen

#define HOUSE_MIN_T  50  // Minimal time [s] to the next event (1..255)
#define HOUSE_MAX_T 150  // Maximal random time [s]              "
beeinflussen. Achtung sie müssen vor der #include "MobaLedLib.h" Zeile im Programm stehen.

Das zweite Haus wird entsprechend mit dem DCC Befehl 12 geschaltet. Dieses Gebäude beherbergt Büros mit mehreren Leuchtstofflampen welche nacheinander angehen. Es flackert einmal, wenn die ersten Röhren an gehen und dann ein weiteres Mal wen die „älteren“ Röhren zünden. Die Ersten Lampen erhellen den Raum nicht so sehr wie alle zusammen. Aber das ist ein Detail, das keinem auffällt.

Mit der DCC Adresse 13 kann das Schweißlicht aktiviert werden. Es Flackert aber nicht durchgängig, weil der Arbeiter ab und Zu das Werkstück wechselt oder die Schweißnaht überprüfen muss.

Das Beispiel habe ich mich nicht ganz an Deine Vorgaben gehalten (Damit Du zeigen kannst das Du verstanden hast wie es geht und das Programm entsprechend anpassen kannst.).
Nein, weil es mit meinen 64 LEDs einfacher zu Testen war… Ich wollte Lichtsignale und Häuser in Einem Beispiel zeigen. Wenn man nur eine der Funktionen nutzen will, dann kann man die Andere entsprechend auskommentieren oder löschen.
Die Konstante DCC_FIRST_TOGGLE_ID wird dann so gewählt, das der unbenutzte Bereich leer ist.

Ich hoffe ich konnte ein bisschen zeigen wie man DCC Signale in die Bibliothek einliest. Es ist zunächst einmal fürchterlich kompliziert, aber wenn man in kleinen Schritten vorgeht, dann klappt das schon. Und wenn nicht: Einfach fragen…

DCC_Rail_Decoder_Example.zip

Gute N8…

Hardi
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Ingolf
InterRegio (IR)
Beiträge: 248
Registriert: So 30. Aug 2015, 10:15
Nenngröße: H0
Stromart: digital
Steuerung: Z21
Gleise: Piko A
Wohnort: 39629 Bismark
Alter: 64
Deutschland

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

#125

Beitrag von Ingolf » Mi 30. Jan 2019, 08:52

Hallo Hardy,

sorry, ich hatte aus gesundheitlichen Gründen eine "Schaffenspause".

Ich kann nur sagen "Uffff", da hast du dir aber viel Arbeit gemacht, Danke dafür.
Nach mehrmaligem Durchlesen glaube ich, den Faden gefunden zu haben...

Du verwendest, wenn ich es richtig verstanden habe, momentan nur die DCC-Adressen 1 bis 30 ?
Die nächsten Tage kommen weitere Nano´s, dann werde ich probieren.

Grüße Ingo

Antworten

Zurück zu „Software und Hardware“