RE: Arduino für die Fahrstraßenschaltung

#26 von histor , 01.08.2017 10:15

Ja - schon gesehen - zweimal = statt ==. Aber das läßt sich ja leicht korrigieren. Ansonsten nimmt er aber die Funktionen jetzt. Kann sie aber natürlich auch vor Setup setzen. Auch da gefallen ihm die Definitionen. hier die neueste Version http://horstbu.de/forum/hampold6.ino


Version ist 10612. Eigentlich sollte die Version neu sein, denn das Ding kaufte ich ja erst vorigen Monat. Inzwischen hat er das nun kompiliert und braucht dafür 5865 Bytes - angesichts der möglichen 253 962 des Arduino Mega also an der unteren Grenze seiner Möglichkeiten. Nun kann erstmal das Schaltpult gebaut werden mit dem Display und dann testen wir doch erstmal mit den LED, bevor die Relais-Arie losgeht.

Danke dir noch einmal für die guten Tipps.


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#27 von histor , 02.08.2017 15:04

Hier dann mit http://www.horstbu.de/forum/fischhafen.ino das "kleine" Programm für den Bereich Fischhafen, den der Arduino Uno verwaltet. 3.312 Byte bei 32.256 möglichen nutzt auch hier das Potential des kleinen Rechners nur begrenzt aus. Letzlich ist dieses Programm für 4 Fahrstrassen, 3 Signale und 4 Weichen nur eine verkleinerte Version von "hampalt.ino"


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#28 von histor , 03.08.2017 12:51

Wie in diesem thread schon geschrieben wurde - mit dem Arduino-Programm allein ist es nicht getan. Betrachten wir zuerst den "kleinen" Arduino Uno. Von den beiden 1-0-1 -Schaltern für seinen Input ist er ungefähr 6 m entfernt. Da vertraue ich nicht unbedingt auf die Stromversorgung durch den Mikrocontroller selbst, sondern durch eine 12 Volt-Leitung betätigen die Schalter kleine Relais (einfach nur ein Schließer), die den Input-Strom örtlich freigeben. Ein Stück Installationskabel dürfte ja wohl für die Signalübertragung genügen.


Auf der Output-Seite werden 5 Relais für die Weichenstellung per Impuls betätigt (Pins 7 bis 11). Kompliziertrer wird es mit den Signallichtern und dem Fahrstrom. Hier sind weitere vier Relais im Spiel, davon zwei mit drei Wechslern. Jeweils der erste Kontakt wird für die Ansteuerung der Leuchtdioden der Lichtsignale K, L und M verwendet.

Nun könnte man ja die Relais "KF" und "KP" durchaus in eines zusammen fassen, wenn es nur darum ginge, den Fahrstrom zu regeln. Aber bei Geradeausfahrt von K zu L soll Signal K Hp1 zeigen und bei Fahrt von K zu M dann eben Hp2. Daher sind zwei Relais der einfachere Weg.

Bei der Betriebsstelle "Fischhafen", die der kleine Arduino regelt, endet die zweigleisige Strecke von Süden und nach Norden weiter gehen zwei eingleisige Strecken - die Güterzugstrecke zum Rangierbahnhof Hampstedt und die Strecke der Verbindungsbahn nach Hampstedt-Hauptbahnhof. Real enden aber beide eingleisigen Strecken blind, dort ist das Ende der Anlage.

Die Fahrstromabschnitte 9 und 18 werden nicht am Trafo geregelt, sondern je nach Fahrstraße den Abschnitten 7 oder 8 zugeordnet. Ruhestellung ist eine Zuordnung zu Fahrstrom 7. Erst dann, wenn eine Ausfahrt aus L oder M vorgesehen ist, schalten die Relais diese Fahrstromabschnitte auf 8 um.


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#29 von Bodo , 03.08.2017 12:57

Hallo,

auf der "Eingabe-Seite" wären Optokoppler vielleicht die preiswertere Alternative, wenn man Fehlauslösungen befürchtet. Ich hab´s nicht getestet, würde aber erst mal probieren, ob ein mit PULLUP definierter Eingang nicht auch über 12m Litze zuverlässig auf Masse zu ziehen ist ... Optokoppler-Einsatz siehe z.B. http://moba.noethlich.info/?page_id=684

Viele Grüße, Bodo


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


 
Bodo
InterCityExpress (ICE)
Beiträge: 2.471
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: Arduino für die Fahrstraßenschaltung

#30 von histor , 03.08.2017 13:25

Hallo Bodo,
habe mitr erst einmal deine interessante Webseite angesehen. Klar ist Oktokoppler auch eine Lösung und vielleicht sogar die direkte Betätigung der Arduino-INPUT-Pins. Die nächsten Tage geht es an den Bau des Schaltpultes und da wird "der Kleine" schon mal getestet. Dass es prinzipiell hinhaut, habe ich schon mal mit Leuchtdioden probiert.

Bis jetzt habe ich meine Platinen immer selbst geätzt (früher) bzw. mit dem Dremel gefräst (seit einiger Zeit) und gebohrt. Für Relais und so kleine Schaltungen langt das ja - aber um einen IC mit 8 oder 16 Beinchen in 2,54 mm Abstand sauber zu plazieren und zu löten ist diese Methode für mein Level der Feinmotorik etwas grob. Kann man Platinen auch bestellen und dort werden gleich die IC-Sockel eingelötet?


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#31 von Bodo , 04.08.2017 10:18

Hallo Horst,

so ganz ist mir die Fragestellung jetzt nicht klar ... ich benutze (seit über 20 Jahren) Lochrasterplatinen für normale Schaltungen - da sind alle Löcher im 2,54-Raster gebohrt. Gibt es mit Punkt- und Streifenkontakt und diversen speziellen Kontaktierungen. Was dann praktischer ist (Aufwand Verdrahtung gegen Aufwand des Leiterbahnen-Trennens), entscheidet der Schaltplan.

Bei eBay findet man auch teilweise günstige "Lochraster-Shields", die schon passend für den Arduino gebohrt sind, wie z.B. hier verwendet:


Wo die Ansprüche an Dichte und Verdrahtung höher sind, habe ich bisher mit http://fritzing.org/home/ gute Erfahrungen gemacht - mit der Software bin ich relativ schnell zurecht gekommen. Allerdings hat Platinenfertigung "made in Germany" seinen Preis (pro Quadratzentimeter) und das lohnt (für mich) nur bei kleinen Platinen oder aufwändigen Platinen in Kleinserie. Die Nano-Sockelplatine mit innenliegendem Optokoppler für DCC-Signaleinspeisung kommt da schon auf etwa 7,00 € - weshalb ich mit einer "Universal-DCC-Dekoder-Nano-Platine" bis heute nicht angefangen habe - die benötigte Fläche würde den Preis dann schnell über 20,00 € treiben und damit das Projekt für die meisten wohl uninteressant machen (und für mich alleine lohnt der Aufwand nicht).


Für Deine Baustelle lohnt sich eine Spezial-Platine wahrscheinlich auch nicht - ein "Lochraster-Shield" könnte aber vielleicht eine Option sein, auch wenn Du dann die schönen Gehäuse mit einem Fräser bearbeiten müsstest ...

Viele Grüße, Bodo


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


 
Bodo
InterCityExpress (ICE)
Beiträge: 2.471
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: Arduino für die Fahrstraßenschaltung

#32 von histor , 04.08.2017 14:07

Hallo Bodo,
na ja - bisher habe ich stets plattes Material verwendet - also eine einfache Kupferfläche und dann eben entweder früher die Platine ganz konventionell mit Eisen-III-chlorid geätzt oder seit einigen Jahren die Leiterbahnen dadurch hergestellt, dass ich die Grenzen der Leiterbereiche mit dem Dremel wegfräste. Inzwischen habe ich festgestellt, dass auch z.B. der große C fertige Platinen hat mit 16 Löchern, um die Grundplatte für den IC festzulöten. Vom IC führen dann einfach 16 Leiter nach außen und von dort aus kann man weiter anschließen. Das wäre z.B. etwas für den ULN2003 oder ähnliches, um die Relais vom Arduino aus anzusteuern oder für den NE555, der die Beleuchtung vom Leuchtturm regeln soll oder ein anderer die Beleuchtung der Freilichtbühne.


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#33 von Bodo , 04.08.2017 14:21

Hallo Horst,

hm ... ich meinte eher so was wie unter https://www.reichelt.de/Loch-Streifenras...PID=7784&SHOW=1

Klar - so eine "Adapterplatine" ist sicher auch schön, würde ich für SMD-Bauteile auch einsetzen, aber für ein 16-beiniges 2,54-Raster-IC dürfte ein Stück Streifenrasterplatine, bei dem ich in der Mitte einmal einen Trennstreifen "wegdremel", doch deutlich preiswerter und flexibler sein ?

Mit "Selber-Ätzen" habe ich mich leider nie beschäftigt, deshalb habe ich da keine Vergleichsvorstellung bezüglich des Aufwands ...

Viele Grüße, Bodo


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


 
Bodo
InterCityExpress (ICE)
Beiträge: 2.471
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: Arduino für die Fahrstraßenschaltung

#34 von histor , 04.08.2017 22:14

Ja - eine dieser Streifenplatinen hatte ich mitbestellt und sie ist heute angekommen. Das kann man durchaus so händeln, wie du vorschlägst. Man kann die Platine ja in mehrere Teilplatinen "zerdremeln" und hat dann die Sockelbasis für mehrere IC. Ich teste das mal.


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#35 von histor , 12.08.2017 16:47

Inzwischen ist der Embryo des Fahrpultes fertig. Die 8 kleinen Schalter auf der rechten Seite werden den Arduino Mega steuern und die beiden Schalter unten (der eine mit dem roten Hütchen) den Arduino Uno. Die anderen Tasten dienen der manuellen Steuerung der Zwischenstrecke - dabei die blauen Tasten für die Signale der Zwischenstationen "Margaretenhöhe" und "Vrumpke". Unter den Schgaltern ist der Platz für den Arduino Mega vorgesehen, so dass die Leitungen von den Schaltern zu den Input-pins kurz sind. Das Loch oben rechts ist für das Display mit 2*16 Zeichen vorgesehen.



Rechts daneben der Platz für die Sicherungen diverser Stromkreise und bei der roten Serviette der Platz für die beiden Trafos. Die beiden grünen Leuchtdioden stellen eine Anzeige der unterschiedichen Polarität beider Fahrstromkreise dar - wenn die aus einem Buch abgekupferte Schaltung nichts bringt, wird sie eleminiert.



Nebenbei wird der kleine Arduino schon mal getestet. Versorgt wird er für diesen Test mit einem kleinen 150 mA-Netzgerät, das auf 6 Volt eingestellt ist. Später bekommt er ein anständiges Netzgerät. Der scetch für ihn hat inzwischen die Version 3. - siehe http://www.horstbu.de/forum/fischhafen.ino

Wichtig ist ja jetzt die Auslegung der Schalter für den Input, der über die analogen Pins der Arduinos erfolgen soll. Die digitalen Pins sind ja für die Ausgänge vorgesehen. Man sieht beim Arduino Uno die vier Kabel von den Schaltern zu den analogen Eingängen A0 bis A3 und die digitalen Ausgänge, die erst einmal schlicht eine Leuchtdiode versorgen. Eingestellt sind die Fahrstraßen KF und M und tatsächlich geben die entsprechenden Ausgänge Strom aus. Weitere Test werden folgen, aber die Ergebnisse sind für das weitere Vorgehen schon wichtig.


Eigentlich sollte es ja eine triviale Angelegenheit sein, dass der Arduino mitbekommt, ob an einem Pin "0" oder "1" anliegt. Er benötigt aber offenbar an den analogen Pins eine Vergleichsmöglichkeit, so dass man ihm entweder einen pull-up oder einen pull-down Widerstand bieten muss.

* Pull-down = Wenn Schalter an, dann Signal HIGH an den Pin. Vorteil: so wird das Signal benötigzt für einen einfachen Programmablauf. Nachteil: Jeder Eingangskanal benötigt einen Pull-down Widerstand von 10 - 100 kOhm nach Ground.
* Pull-up = Wenn Schalter an, dann Signal LOW an den Pin. Vorteil: man kann den eingebauten Widerstand im Arduino nutzen durch Definition des Eingangs als pinMode (pin#, INPUT_PULLUP); - Nachteil: Das Signal muss umgekehrt werden, um vom Programm verwendet werden zu können (oder das Programm umschreiben!). In der Testversion läuft der Arduino Uno erst einmal in diesem zweiten Modus. Bei seinen vier Eingängen könnte man das mit den vier 100 kOhm Widerständen ja noch machen - aber bei den 16 Eingangsleitungen für den Arduino Mega möchte ich das vermeiden.


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#36 von MicroBahner , 13.08.2017 10:16

Hallo Horst,

Zitat

Nachteil: Das Signal muss umgekehrt werden, um vom Programm verwendet werden zu können (oder das Programm umschreiben!).

Diese Umkehr geht doch ganz einfach. Statt

1
2
3
4
5
6
7
8
9
10
 
     newfahrt[i]=digitalRead(askpin[i]);    // Abfrage SOLL-Status
if (newfahrt[i] == 0) // dann Schalter an und LOW
{
newfahrt[i] = 1; // Level-Umkehr
}
else
{
newfahrt[i] = 0; // also Schalter aus
}
 
 

schreibst Du:

1
 
     newfahrt[i]= ! digitalRead(askpin[i]);    // Abfrage SOLL-Status mit Logik-Umkehr
 


Das Ausfrufezeichen dreht den Logiklevel um ( ist logisches 'NOT' ).

P.S.:

Zitat
Er benötigt aber offenbar an den analogen Pins eine Vergleichsmöglichkeit, so dass man ihm entweder einen pull-up oder einen pull-down Widerstand bieten muss.

Das gilt grundsätzlich für alle digitalen Eingänge, nicht nur an den Analog-Pins. Nur durch den Widerstand bekommst Du bei offenem Schalter einen definierten Spannungspegel an den Eingängen. Die sind so extrem hochohmig, dass sich da sonst nahezu beliebige Spannungswerte zwischen 0 und 5V ergeben können.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduino für die Fahrstraßenschaltung

#37 von histor , 13.08.2017 22:44

Klar, die Idee mit dem "!" kam mir auch. Hatte mich nur nicht getraut. Ist aber inzwischen ohnehin obsolet, da ich mich heute zu lange Zeit mit den eingebauten Pull-up Widerständen herumgeärgert habe - sie geben kein klares Signal. Vielleicht, weil vier davon parallel arbeiten sollen und der kleine UNO damit überfordert ist?

Wie auch immer - jetzt ziehen vier 100 kOhm Widerstände down zum Ground und der Arduino erkennt jetzt, welcher der vier Schalter angestellt ist und läßt brav die Testdiode aufleuchten. Es ist schon frustrierend, wie eine so banale Sache wie ein Input durch Schalter diesen Aufwand erfordert. Eines beruhigt ich allerdings - offenbar funktioniert tatsächlich das Ersetzen der Bezeichnung A0, A1, A2 und A3 durch 14, 15, 16 und 17.


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#38 von MicroBahner , 14.08.2017 09:26

Hallo Horst,

Zitat

Ist aber inzwischen ohnehin obsolet, da ich mich heute zu lange Zeit mit den eingebauten Pull-up Widerständen herumgeärgert habe - sie geben kein klares Signal. Vielleicht, weil vier davon parallel arbeiten sollen und der kleine UNO damit überfordert ist?

?? Da ist der UNO sicher nicht überfordert. Solche Probleme hatte ich noch nie. Bei offenem Eingang geben die internen Pullup immer ein eindeutiges HIGH, und wenn der Eingang per Schalter nach Gnd kurzgeschlossen ist, kann das nur ein eindeutigs LOW geben. Da muss eine andere Ursache hinterstecken.
Aber wenn Du es jetzt mit externen pulldown Widerständen gemacht hast ist es ja auch OK


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduino für die Fahrstraßenschaltung

#39 von histor , 14.08.2017 10:14

Im Prinzip hast Du recht - es dürfte mit den internen Pull-ups kein Problem sein. Aber Erfahrungen sind dazu da, um gemacht zu werden. Ich bin weiterhin am Testen und zuerst mit dem UNO - ich hoffe die Erfahrungen dann auf den MEGA übertragen zu könnne. Offenbar ist nicht das C-Programm die Hürde, sondern die Verbindung mit der Aussenwelt. Auf der Output-Seite sollen das ULN2003er regeln.


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#40 von histor , 15.08.2017 00:34

"Grau, Freund, ist alle Theorie." sagt der Dichter im Faust. Dieses schöne C-Programm http://www.horstbu.de/forum/fischhafen5.ino kompiliert er klaglos und auch der Arduino läßt es sich geduldig hochladen. Dennoch führt er es nicht aus. Meine Testanordnung sah so aus


Kaputt ist der kleine Arduino nicht. Immerhin arbeitet er bei diesem Primitiv-Programm http://www.horstbu.de/forum/primitiv.ino zu 3/4 einwandfrei. Nur PIN A1 ("15") läßt sich von A0 beeinflussen und ziegt ein HIGH, auch wenn der Schalter aus ist. Die Lehre für das Leben? Offenbar sind Pulldown-Widerstände von 100 Kiloohm doch nicht das Wahre.

Wenn man sich - wie ich - in den letzten Tagen hunderte Arduino-Seiten durch gelesen hat, schwankt der empfohlene Wert von "mehreren Kiloohm" bis zu "100 Kiloohm oder mehr". So schätze ich jetzt, dass 47 Kiloohm vielleicht besser wären. Ich werden weitertesten.

Jedenfalls ist eins wirklich klar - man kann die Pins A0 bis A3 als 14 bis 17 ansprechen für digitalRead.


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#41 von schmiedi , 15.08.2017 10:07

Hallo Horst,

aus meinem eigenen - begrenzten - Erfahrungsschatz kann ich sagen, dass bei meinem Mega ein Pulldown-Widerstand von 10kOhm perfekt funktioniert. Vielleicht liegt bei Dir aber auch ein anderer Fehler vor, etwa ein defekter Widerstand oder ein Kontaktproblem (kalte Lötstelle, Steckkontakt am Arduino o.ä.)?

Vielleicht solltest Du noch über die Entprellung der Schalter bzw. Taster nachdenken, nach anfänglicher Benutzung der OneButton-Library (funktioniert sehr gut!) bin ich nun auf eine Hardware-Lösung mit IC (74HS14) umgestiegen, aus Gründen der Speicherplatzschonung.

Viele Grüße,
Dieter


Der Zug zur Besichtigungstour "Rund um Steinen":


 
schmiedi
InterRegioExpress (IRE)
Beiträge: 446
Registriert am: 07.07.2015
Homepage: Link
Spurweite H0
Steuerung Arduino, Eigenbau
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#42 von MicroBahner , 15.08.2017 15:58

Hallo Horst,

Zitat

Dennoch führt er es nicht aus.

Das glaube ich nicht - er führt es bestimmt aus. Es macht nur nicht das, was Du erwartest.
Für die Fehlersuche hat sich bewährt, an entsprechenden Stellen des Programms Ausgaben auf den seriellen Monitor einzufügen. Dann kann man verfolgen, wo das Programm längsläuft, und gegebenenfalls auch Variablenwerte ausgeben.

Hier

1
2
3
4
5
6
7
8
9
10
11
12
13
 
          else if (secur0==1)
if (i==1|| i==2)
{
beepy(); // Fahrstrasse Kp oder L jetzt nicht zulaessig
break;
}
/* ------------------------------------------------------------------------
* Fall B3 - Fahrstrasse kann eingestellt werden
* Abfolge = Weichen stellen, signal-Relais an, Secur-Klasse scharf stellen
------------------------------------------------------------------------*/
else
{
 
 

sehe ich auch noch ein Problem: zu welchem if soll denn das untere else gehören? So wie es eingerückt ist, soll es wohl zum 1. if gehören. Für den Compiler gehört es aber zum 2. if ( da Du hinter dem 1. if keinen Anweisungsblock {...} angelegt hast )

Das Entprellen ist grundsätzlich eine gute Idee und Du solltest das machen. Dazu reicht es aber aus, wenn dein loop() nicht zu schnell im Kreis läuft. Das 'delay(50)' beim letzten else solltest Du daher ganz ans Ende des loop() setzen und immer ausführen - wobei ein delay(20) reichen dürfte.

Zitat

Immerhin arbeitet er bei diesem Primitiv-Programm http://www.horstbu.de/forum/primitiv.ino zu 3/4 einwandfrei. Nur PIN A1 ("15") läßt sich von A0 beeinflussen und ziegt ein HIGH, auch wenn der Schalter aus ist.

Das riecht aber sehr nach einem HW-Problem


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduino für die Fahrstraßenschaltung

#43 von histor , 15.08.2017 23:28

Hallo Mitstreiter,
auf jeden Fall stört mich inzwischen die for-Schleife. Das Programm soll sie viermal durchlaufen und viermal Werte aus den Array oldfahrt[ii], SignalP[ii], Weiche1[ii] und Weiche2[ii] holen, wobei [ii] in Laufe der for-Schleife von 0 bis 3 ansteigt. Da sollte das Ende der Schleife doch eigentlich durch ">3" bedingt sein und nicht durch ">4". Ich vermute mal, er saust sofort los durch diese for-Schleife, bevor noch irgendein Schalter betätigt ist und macht beim 5. Umlauf einigen Unsinn. ((ii) ist eigentllch nur i, aber dann schreibt er alles kursiv.

Im Keller fand ich noch 47 KOhm Widerstände. Damit versuche ich es morgen einmal, bevor ich nach Lüneburg fahre und dort einen Elektronikbauteileladen suche - mein bisheriger hat seit einiger Zeit aufgegen und bei C' steht das Porto zu den Cent für die Widerstände ja in keinem Verhältnis.


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#44 von schmiedi , 16.08.2017 10:47

Hallo Horst,

zu dem Widerstands-Problem: Du kannst z.B. zwei 47k-Widerstände parallel schalten, dann kommst Du auf die Hälfte, vielleicht spart das schon einen teuren Ausflug.

Die for-Schleife sollte nur 4 mal durchlaufen werden, nicht 5 mal. Das Problem kann ich daher im Code nicht nachvollziehen. Vielleicht solltest Du den aktuellen Code noch einmal posten? Auch kann es hilfreich sein, die Variable i am Anfang oder Ende der for-Schleife mit Hilfe des seriellen Monitors auszugeben. Dann könntest Du besser nachvollziehen, was im Code passiert.

Viele Grüße,
Dieter


Der Zug zur Besichtigungstour "Rund um Steinen":


 
schmiedi
InterRegioExpress (IRE)
Beiträge: 446
Registriert am: 07.07.2015
Homepage: Link
Spurweite H0
Steuerung Arduino, Eigenbau
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#45 von MicroBahner , 16.08.2017 11:36

Hallo Horst,
bei der for-Schleife - so wie sie im geposteten Sketch steht - sehe ich keine Probleme. Du fragst auf i<4 ab, das ist in Ordnung, da wird die Schleife für die Werte 0,1,2,3 durchlaufen und bei 4 abgebrochen.
Und natürlcih startet die Schleife sofort. Das Abfragen der Schalter geschieht ja erst innerhalb der Schleife. Das ist doch OK so.
Ohne Debuggung mit Serial.print Ausgaben wirst Du dich schwer tun Fehler zu finden.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduino für die Fahrstraßenschaltung

#46 von histor , 16.08.2017 13:07

Das mit der Schleife verstehe ich so: Die Schleife beginnt mit i==0 und damit holt er den "nullten" Wert aus dem Array und arbeitet damit. Nun wird i auf 1 gesetzt. Dann läuft die Schleife mit i==1, dann mit i==2 und zuletzt mit i==3. Damit holt er den "dritten" Wert aus dem Array, nämlich den, der dort an vierter Stelle steht. Nachdem er dies abgearbeitet hat, setzt die Schleife auf "4". Einen weiteren Wert soll er nicht holen - also sollte doch die Schleife bei >3 abgebrochen werden. Mit der Version 6 habe ich festgestellt, dass er überhaupt Probleme hat, auf die Schleifenwerte zuzugreifen.

Ich werde mich mal einerseits um das Debugging kümmern und andererseits um eine Programmversion mit brutal force ohne Schleife.


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#47 von schmiedi , 16.08.2017 14:10

Hallo Horst,

Dein Verständnis ist vollkommen richtig - genau so sollte das funktionieren. Und nach den 4 Durchläufen der for-Schleife beginnt das Ganze wieder bei i = 0. loop() wird, wie der Name schon sagt, vom Arduino endlos ausgeführt, daher beginnt alles wieder bei 0.

Wie gesagt, ohne aktuellen Quellcode und Debug-Ausgaben kann ich nur mutmaßen...

Viele Grüße,
Dieter


Der Zug zur Besichtigungstour "Rund um Steinen":


 
schmiedi
InterRegioExpress (IRE)
Beiträge: 446
Registriert am: 07.07.2015
Homepage: Link
Spurweite H0
Steuerung Arduino, Eigenbau
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#48 von MicroBahner , 16.08.2017 15:03

Zitat

also sollte doch die Schleife bei >3 abgebrochen werden.

Zumindest in deiner Version 5 wird sie das auch.

Zitat

Mit der Version 6 habe ich festgestellt, dass er überhaupt Probleme hat, auf die Schleifenwerte zuzugreifen.

Gut, die Version hast Du uns noch nicht gezeigt. Aber wie hast Du das ohne Debugging festgestellt?

Zitat

Ich werde mich mal einerseits um das Debugging kümmern...

Das ist eine gute Idee.

Zitat

... und andererseits um eine Programmversion mit brutal force ohne Schleife.

Das macht keinen Sinn. Du musst systematisch die Fehler im Programm suchen und finden anstatt dauernd wieder ganz was Neues zu machen. Die for-Schleife ist schon der richtige Weg.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduino für die Fahrstraßenschaltung

#49 von histor , 16.08.2017 16:35

http://www.horstbu.de/forum/fischhafen6.ino

Er kompiliert das Programm vollständig, sagt aber "warning: invalid conversion from 'int*' to 'uint8_t {aka unsigned char}' [-fpermissive]"


Freundliche Grüße
Horst
viewtopic.php?f=64&t=50018


 
histor
Metropolitan (MET)
Beiträge: 3.646
Registriert am: 06.09.2010
Homepage: Link
Ort: Niedersachsen-Nordost
Spurweite H0
Stromart DC, Analog


RE: Arduino für die Fahrstraßenschaltung

#50 von schmiedi , 16.08.2017 16:54

Hallo Horst,

im Programm hast Du im digitalWrite-Aufruf das Array Weiche1 etc. übergeben, nicht aber einen Wert aus dem Array, also z.B. Weiche1 mit i in eckigen Klammern (Sorry, Ersatzdarstellung, das Forum interpretiert die eckigen Klammern und zeigt sie nicht an). Das solltest Du zuerst korrigieren...

Auch wenn eine Warnung nicht verhindert, dass ein Programm ausgeführt werden kann, so läßt sie in aller Regel darauf schließen, dass ein Fehler vorliegt.

Viele Grüße,
Dieter


Der Zug zur Besichtigungstour "Rund um Steinen":


 
schmiedi
InterRegioExpress (IRE)
Beiträge: 446
Registriert am: 07.07.2015
Homepage: Link
Spurweite H0
Steuerung Arduino, Eigenbau
Stromart DC, Analog


   


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