RE: Arduino ( Schalt- ) Decoder Sketch ?

#1 von Instandsetzung , 17.03.2015 22:02

Hallo zusammen,

in diesem Forum fand ich in der Rubrik "Tams Open Source Decoder" folgenden Fred:

Arduino OpenSource-Deccoder?

Und da ich der Meinung bin, dass diese Frage eher hier hingehört wollte ich sie noch mal Stellen und noch gleich ein paar weitere Fragen und Wünsche mit anfügen.

Vorab sei mir noch der Hinweis gestattet, daß ich natürlich weiß, daß es eine Anbindung an das Digitalsystem geben muss. Diesen Eingang via Opto-Koppler habe ich mir schon gebastelt.
War sogar eines meiner ersten Projekte, da ich den passenden Opto-Koppler 6N 137 gerade zur Hand hatte. Allerdings habe ich als Sperrdiode keine 1N4148 genommen sondern eine BAT 43. ( Ich dachte mir, die Servodecoder von MB-Tronic haben auch die Kombi aus 6N 137 und BAT 43 , da nehme ich die auch mal / Ich musste aber feststellen, daß inzwischen auch dort eine 1N4148 genutzt wird )

Nun der DCC-Monitor Scheint auch irgendwie zu funktionieren.
Zumindest werden da irgendwelche Zahlenkolonnen angezeigt. Nur was die jetzt bedeuten :

Um noch mal auf die Eingangsfrage zurück zu kommen:
Dazu gab es ja schon auch schon an den verschiedensten Stellen Antworten.
Auch wurde dort schon auf das Decoder Projekt von RudyB hingewiesen.
Natürlich habe ich mir die entsprechende Datei schon runter geladen.
Natürlich komme ich damit nicht ganz zurecht.
Natürlich ( jetzt kommt ein Wortspiel ) verstehe ich da nur Bahnhof.
( Kann aber auch sein, dass ich den Wald vor lauter Bäumen nicht sehe )

Nun ist es nicht so, daß ich rein gar nichts verstehen würde,
ein paar Sketche habe ich schon hinbekommen, zwar oftmals mit der Kopieren und Einfügen – Methode, aber ich denke das machen auch viele andere so.
Auch bin ich ( der auf die 50 zugeht ) mit Basic groß geworden und da ist C+ schon “etwas anders“.

Ich denke Rudys Decoder kann da schon zu viel – aber wahrscheinlich auch zu wenig für das was man sich da selber basteln will. Ich möchte diesen verquerten Satz noch ein bisschen mehr aufdröseln:
In den meisten Fällen möchte man ein bestimmtes Problem lösen und eine bestimmte Abfolge von Ereignissen programmieren. Z.B. Servobewegungen als auch Lichteffekte , die aufeinander abgestimmt sind. Nun möchte man diesen Effekt mit Hilfe eine DCC Befehls auslösen.
Für die Servobewegungen samt der Lichteffekte hat man schnell einen Sketch geschrieben.
Aber nun braucht man den Auslöser.

Nun wäre es schön, wenn es einen Beispielsketch gäbe, der nur einen Programmteil via DCC Befehl startet / beendet bzw. durch einen zweiten Programmteil den Ersten wieder rückgängig macht.

Was ich mir auch wünschen würde wäre, wenn es dazu dann Anleitungen auf Deutsch geben würde, da man das dann doch besser verstehen könnte. Es ist nicht so, dass ich kein Englisch könnte, aber manche Zusammenhänge erschließen sich einem damit dann doch besser.

Mit freundlichen Grüßen

Oliver


Instandsetzung  
Instandsetzung
EuroCity (EC)
Beiträge: 1.360
Registriert am: 27.02.2009
Ort: Revier


RE: Arduino ( Schalt- ) Decoder Sketch ?

#2 von 99651 ( gelöscht ) , 18.03.2015 10:30

Hallo Oliver,

ich weiß jetzt nicht auf welches Projekt von RudyB du verweist. Wenn du willst kannst du mal einen Blick auf http://www.mrrwa.org werfen. Ist zwar englisch, sollte aber zu verstehen sein.

Schau dir mal das Beispiel NmraDccexamplesNmraDccExample_1 an. Im Loop wird regelmäßig Dcc.process() aufgerufen. Diese wiederum ruft eine Funktion notifyDccAccState() auf, wenn ein Weichenschaltbefehl empfangen wird.
Diese Funktion musst du nun in deinem Sketch anlegen. Im Beispiel wird hier nur Text auf die serielle Schnittstelle ausgegeben, du würdest hier vermutlich eine Abfrage auf eine Adresse machen und je nach State (rot/grün) deine Aktion starten oder stoppen.

1
2
3
4
5
6
7
8
9
10
11
12
 
// This function is called whenever a normal DCC Turnout Packet is received
void notifyDccAccState( uint16_t Addr, uint16_t BoardAddr, uint8_t OutputAddr, uint8_t State)
{
Serial.print("notifyDccAccState: ") ;
Serial.print(Addr,DEC) ;
Serial.print(',');
Serial.print(BoardAddr,DEC) ;
Serial.print(',');
Serial.print(OutputAddr,DEC) ;
Serial.print(',');
Serial.println(State, HEX) ;
}
 



Hoffe das hilft dir weiter.

Gruß
Michael


99651

RE: Arduino ( Schalt- ) Decoder Sketch ?

#3 von garti62 , 19.03.2015 20:31

Hallo Oliver,

Zitat
Auch bin ich ( der auf die 50 zugeht ) mit Basic groß geworden und da ist C+ schon “etwas anders“.



Kennst Du BASCOM? Ist ein sehr leistungsfähiger Basic-Compiler und bis 4kbyte Cache gratis. Reicht für unsere typischen Hobbyanwendungen meist völlig aus. Und es gibt auch jede Menge deutsche Tutorials, Literatur und auch ein deutschsprachiges Forum. Man muß einen Arduino ja nicht zwingend mit der Arduino-Software programmieren, das geht mit jedem anderen Compiler auch. Und für mich um ein vielfaches leichter zu erlernen als C+.

Schöne Grüße

Ulli


erste Versuche: Weichenbau


 
garti62
InterCity (IC)
Beiträge: 645
Registriert am: 08.11.2011


RE: Arduino ( Schalt- ) Decoder Sketch ?

#4 von PaSchu ( gelöscht ) , 20.03.2015 13:04

Hallo,

Du musst die Arduino Software von Rudy lediglich etwas erweitern, um auf dem Arduino ein Unterprogramm zustarten. Dort kannst Du dann all das programmieren was der Arduino hergibt.


PaSchu

RE: Arduino ( Schalt- ) Decoder Sketch ?

#5 von Instandsetzung , 22.03.2015 17:41

Hallo zusammen
und Danke nochmal für Eure Rückmeldungen.

@ Hase
Leider verstehe ich nicht, was diese Zeilen bedeuten und wo sie eingesetzt werden müssten und was sie dann bewirken. ( siehe weiter unten )

@ Ulli:
Danke für diesen Hinweis. Das werde ich mir merken und sobald ich etwas Zeit dafür habe
mir das mal anschauen. Momentan sind die Sketche zum Glück noch nicht soo aufwändig, so
daß ich sie so eben auch noch mit meinen bescheidenen Bordmitteln zum laufen bekomme.

@ Michael
Ich habe mir das mal “angesehen“ bzw. mal gleich auf den Arduino geschoben.
Klappt irgendwie aber trotzdem überhaupt nicht. Ich bekomme nur Hieroglyphen zu sehen,
die auch keine irgendwelchen Regelmäßigkeiten erkennen lassen.

Klar da muss ich irgendetwas falsch gemacht haben. Ich weiß halt nur nicht was.

Zum “irgendetwas falsch gemacht haben“:
In einer Zeile des Sketches steht:

1
2
3
4
 

const int DccAckPin = 3 ;
 

 


Da habe ich den DccAckPin von 3 auf 2 geändert, weil bei meinem Shield, welches ich als Lochrasterplatine
ausgeführt hatte, das schon so angelötet war, da dafür im Sketch für den DCC-Monitor der Pin 2
vorgesehen war und dich mich damals akribisch an die Anleitungen gehalten habe. Heute
weiß ich, dass man solche Ein- und Ausgänge ja auch zuweisen kann.

Ich kann jetzt nur hoffen, daß mit "DccAckPin" der Eingangspin gemeint ist

Dann gibt es da noch die Zeile:

1
2
3
4
5
6
7
8
9
10
11
 

uint8_t FactoryDefaultCVIndex = 0;
 
void notifyCVResetFactoryDefault()
{
// Make FactoryDefaultCVIndex non-zero and equal to num CV's to be reset
// to flag to the loop() function that a reset to Factory Defaults needs to be done
FactoryDefaultCVIndex = sizeof(FactoryDefaultCVs)/sizeof(CVPair);
};
 

 


Das verstehe ich momentan nicht so wirklich.
Ich habe es ungefähr so übersetzt:
Mache den FactoryDefaultCVIndex von Null verschieden und gleich zu der CV-Nummer die resettet werden soll

Nur habe ich da keine Zahl eingetragen. Muss ich das wirklich?
Warum eine CV Zahl eintragen?
Ich will doch nur die Weichenbefehle lesen.

Alles in Allem also noch ein langer, weiter und beschwerlicher Weg für mich.

Hat denn schon einer aus dieser Runde hier genau diesen Sketch zum laufen gebracht ?
Und kann sagen: Genau so funktioniert das alles bei mir !

Nun ja eine Unwägbarkeit gibt es da noch:

Ich habe das – weil gerade zur Hand – mit einer IB2 ausprobiert.
Natürlich habe ich Lok- und Weichendatenformat auf DCC gestellt und auch die
Sonderoptionen so eingestellt, dass da eigentlich nur DCC raus kommen müsste.
Aber “Weißmanns“.

Ich werde noch mal Anfang der Woche eine Multimaus ausgraben und es damit mal
ausprobieren, da man mit einem LH 200 ( den ich auch noch in der Ecke rumfliegen habe )
keine Weichen stellen kann.

Mit freundlichen Grüßen
Oliver


Instandsetzung  
Instandsetzung
EuroCity (EC)
Beiträge: 1.360
Registriert am: 27.02.2009
Ort: Revier


RE: Arduino ( Schalt- ) Decoder Sketch ?

#6 von PaSchu ( gelöscht ) , 23.03.2015 09:06

Hallo,

genau das was Du im Eingangsbeitrag geschrieben hast habe ich mit der Software von Rudy umgesetzt.
Funktioniert einwandfrei.


PaSchu

RE: Arduino ( Schalt- ) Decoder Sketch ?

#7 von Instandsetzung , 26.03.2015 19:58

Hallo zusammen,

noch eine kurze Nachmeldung:
Auch die Lokmaus brachte keine Besserung.
Ich hatte ja erst die IB in Verdacht kein reines DCC Signal zu produzieren.

Außerdem habe ich den Verdacht, dass mit dem Sketch, der Installation den Libraray oder ihm selber was nicht stimmt, denn im Sketch gibt es einen Zeilenumbruch da der Befehl Serial.println auftaucht und auf dem Serial Monitor gibt es immer nur eine endlose Zeile.

Die MRWA Geschichte werde ich nun erst mal nicht weiter verfolgen.

Da der DCC-Monitor ja ohne Probleme funktioniert, werde ich erst einmal Rudys Ansatz folgen, da ja sein Decoder und der DCC-Monitor mit derselben Library arbeiten.

Ein kurzer Versuch den Beispieldecoder zum laufen zu bringen funktioniert allerdings auch nicht. Ich hatte allerdings nichts weiter dran. Es sollte eigentlich nur LED 13 ein- und ausgeschaltet werden. Ich finde allerdings auch keinen Hinweis auf einen potentiellen Eingang des Optokopplers und ging mal davon aus, daß mit den Adressen, die man eintragen soll, auch sofort die entsprechenden DCC- Weichenadressen gemeint sind.

Am Wochenende wenn ich mehr Zeit habe, werde ich da noch mal nachhaken und hier entweder berichten oder weiter stöhnen und hier weiter auf Mithilfe hoffen.

Mit freundlichen Grüßen
Oliver


Instandsetzung  
Instandsetzung
EuroCity (EC)
Beiträge: 1.360
Registriert am: 27.02.2009
Ort: Revier


RE: Arduino ( Schalt- ) Decoder Sketch ?

#8 von PaSchu ( gelöscht ) , 27.03.2015 11:42

Schau Dir die folgende(n) Seite(n) an und geh Schritt für Schritt vor.

Zitat
http://www.mynabay.com/dcc-monitor



Vom Optokoppler musst Du auf Pin 2 des Arduino.

Wenn Du das erledigt hast und auf dem Monitor Daten siehst, wenn Du an der IB eine Taste betätigst oder den Regler drehst, läuft alles.

Danach lade Dir von https://app.box.com/s/9lz8vzxbq2db43enqiaeq5tavx0lu6yj die Software runter.

Jetzt lädst Du folgende Datei DCC_Basic_Acc_Decoder.pde auf den Arduino.

Schließe dann an die Pins 5 und 6 des Arduino eine LED an. Über die Adressen 714 und 715 kannst Du dann die LED´s schalten.

Folgendes Beispiel zeigt Dir den Code...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
   gAddresses[0].address = 714;
gAddresses[0].output = 0;
gAddresses[0].outputPin = 5;
gAddresses[0].isDigital = false;
gAddresses[0].isFlasher = false;
gAddresses[0].analogValue = 250;
gAddresses[0].durationMilli = 500;

gAddresses[1].address = 715;
gAddresses[1].output = 0;
gAddresses[1].outputPin = 6;
gAddresses[1].isDigital = true;
gAddresses[1].isFlasher = false;
gAddresses[1].analogValue = 0;
gAddresses[1].durationMilli = 500;
 


PaSchu

RE: Arduino ( Schalt- ) Decoder Sketch ?

#9 von Instandsetzung , 02.04.2015 02:09

Hallo zusammen,
bzw. momentan Hallo alleine,

Irgendwie scheint momentan der Wurm drin zu sein.
Nix geht – dachte ich.

Dann fiel mir ein:
Ich hab ja noch die Roco Mulimaus dran und dann erinnerte ich mich, daß es da doch eine Adressverschiebung um 4 gab.
Also mal die Adressen 718 und 719 in der MM eingestellt und siehe da, da tut sich was.
Zumindest auf dem Serial Monitor kamen die ersten Ausgaben
Und LED6 geht kurz an.

Dann mal wieder die IB dran. Und da ich mir keinen abbrechen wollte die Weichenadressen 714 und weiter folgende einzustellen, habe ich kurzerhand den Sketch geändert. Auch danach soweit alles in Ordnung.

Jetzt muss ich nur noch die Zusammenhänge dieses Sketches erkennen.
Nun ja aller Anfang ist schwer.
Ob’s nun für mich leichter wird ?
Und dann muss ich schauen wie ich mein Gewurschtel in diesen Sketch integrieren kann.

Da ich in den Osterferien kaum Zeit habe ( es stehen viele Loks zur Instandsetzung an ) kann es gut sein, daß ich irgendwann nach den Ferien hier wieder fragend da stehen werde.

Mit freundlichen Grüßen
Oliver


Instandsetzung  
Instandsetzung
EuroCity (EC)
Beiträge: 1.360
Registriert am: 27.02.2009
Ort: Revier


   


  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz