14#include "WeichenControl.h"
15#include "ZugtastenControl.h"
16#include "BesetztmeldungControl.h"
17#include "HauptsignalControl.h"
22#define anzahlWeichen 3
50#define weichentimeout 500
64#define ftueMelderLed 124
65#define ftueMelderWut 19
69#define hauptsignalanzahl 4
70#define signalsperrtaste 16
71#define Signalentsperrtaste 17
78#define sperrmelder1 126
79#define signaltaste1 zta3
85#define sperrmelder2 49
86#define signaltaste2 zta4
92#define sperrmelder3 127
93#define signaltaste3 zta7
99#define sperrmelder4 48
100#define signaltaste4 zta8
103int schieberegisterPins[4] = {4, 8, 9, 10};
106#define besetztmelderAnzahl 19
108Melder ftueMelder(
"FTÜ-Melder", ftueMelderLed, weckerPin, ftueMelderWut, schieberegisterPins);
111#define zugtastenanzahl 9
112int zugtastenPins[zugtastenanzahl] = {zta1, zta2, zta3, zta4, zta5, zta6, zta7, zta8, zta9};
113boolean zugtastenRichtung[zugtastenanzahl] = {1, 0, 1, 0, 1, 0, 1, 0, 1};
114ZugtastenControl zugtastenC(zugtastenanzahl, zugtastenPins, zugtastenRichtung);
117int zugtastenspeicher[2];
120Graph *graph =
nullptr;
126 int allgSignaltasten[3] = {signalsperrtaste, Signalentsperrtaste, shgt};
127 int rot[hauptsignalanzahl] = {rot1, rot2, rot3, rot4};
128 int gelb[hauptsignalanzahl] = {gelb1, gelb2, gelb3, gelb4};
129 int gruen[hauptsignalanzahl] = {gruen1, gruen2, gruen3, gruen4};
130 int signaltasten[hauptsignalanzahl] = {signaltaste1, signaltaste2, signaltaste3, signaltaste4};
131 int sperrmelder[hauptsignalanzahl] = {sperrmelder1, sperrmelder2, sperrmelder3, sperrmelder4};
132 boolean richtung[hauptsignalanzahl] = {
true,
false,
true,
false};
133 HauptsignalControl hauptsignale(hauptsignalanzahl, rot, gelb, gruen, signaltasten, sperrmelder, allgSignaltasten, schieberegisterPins, richtung);
138 int weichenbesetztmelder[besetztmelderAnzahl] = {0, 0,
139 0, 0, 0, 0, 1, 0, 2, 0, 0,
140 0, 0, 0, 0, 3, 0, 0, 0};
141 int besetztmelderEingaenge[besetztmelderAnzahl] = {69, 69, 59, 59, 63, 65, 65, 68, 68, 67, 67, 60, 60, 64, 64, 62, 62, 61, 61};
142 int besetztmelderLedsGelb[besetztmelderAnzahl] = {33, 45, 130, 116, 117, 114, 0, 102, 0, 31, 43, 121, 128, 133, 112, 0, 37, 35, 41};
143 int besetztmelderLedsRot[besetztmelderAnzahl] = {32, 44, 58, 0, 118, 115, 0, 103, 0, 30, 42, 132, 129, 120, 113, 0, 36, 34, 40};
144 BesetztmeldungControl besetztmeldung(besetztmelderEingaenge, besetztmelderLedsGelb, besetztmelderLedsRot, weichenbesetztmelder, besetztmelderAnzahl, schieberegisterPins);
147 int weichenPinsGerade[anzahlWeichen] = {w1g, w2g, w3g};
148 int weichenPinsKurve[anzahlWeichen] = {w1k, w2k, w3k};
149 int weichenLedPinsGerade[anzahlWeichen] = {ledw1g, ledw2g, ledw3g};
150 int weichenLedPinsGeradeRot[anzahlWeichen] = {ledw1gRot, ledw2gRot, ledw3gRot};
151 int weichenLedPinsKurve[anzahlWeichen] = {ledw1k, ledw2k, ledw3k};
152 int weichenLedPinsKurveRot[anzahlWeichen] = {ledw1kRot, ledw2kRot, ledw3kRot};
153 int adressWeichenpositionen[anzahlWeichen] = {1, 5, 9};
154 int weichentasten[anzahlWeichen] = {wt1, wt2, wt3};
155 WeichenControl weichen(anzahlWeichen, weichenPinsGerade, weichenPinsKurve, weichenLedPinsGerade, weichenLedPinsGeradeRot, weichenLedPinsKurve, weichenLedPinsKurveRot, adressWeichenpositionen, weichentimeout, weichentasten, wgt, schieberegisterPins);
157 int nachbarn[besetztmelderAnzahl][3] = {
177 char gleissymboltyp[besetztmelderAnzahl] = {
'-',
'+',
178 '+',
's',
'-',
'-',
'<',
'-',
'<',
's',
'+',
179 '+',
's',
'-',
'-',
'<',
'-',
's',
'+'};
181 weichen.weichenRelaisHIGH();
190 for (
int i = 0; i < besetztmelderAnzahl; i++)
192 if (gleissymboltyp[i] ==
'-')
193 knoten[i] =
Gleissymbol(besetztmeldung.getBesetztmelder(i));
194 else if (gleissymboltyp[i] ==
'+')
196 knoten[i] =
Gleissymbol(besetztmeldung.getBesetztmelder(i));
200 else if (gleissymboltyp[i] ==
's')
202 knoten[i] =
Gleissymbol(besetztmeldung.getBesetztmelder(i),
nullptr, hauptsignale.getHauptsignal(signal));
207 else if (gleissymboltyp[i] ==
'<')
209 knoten[i] =
Gleissymbol(besetztmeldung.getBesetztmelder(i), weichen.getWeiche(weiche));
215 graph =
new Graph(besetztmelderAnzahl, knoten, nachbarn);
220 zugtastenspeicher[0] = 0;
221 zugtastenspeicher[1] = 0;
227 zugtastenspeicher[anzahl] = j;
Ist ein Knoten für den in Graph erstellten Graphen Speichert alle Objekte, die dem Entsprechenden Kno...
boolean fahrstrasseEinstellen(Zugtaste *taste1, Zugtaste *taste2)
void tueMelder(ZugtastenControl ZugtastenControl)
void setGleissymbol(int zugtastenNr, Gleissymbol *symbol)
Zugtaste * getZugtaste(int zugtastenNr)
boolean getZugtastenstatus(int zugtastenNr)