Hallo, ich versuche meinen Vater ein wenig bei seiner Modelleisenbahn zu
unterstützen. Gesteuert werden sollen gewisse Sachen wie
Straßenbeleuchtung, besondere Gebäude einzeln, Hausbeleuchtung,
Bahnübergänge etc.
Dafür hatte ich an einen "Haupt-µC" gedacht, der jede simulierte Stunde
(3 Minuten) einen anderen Pin auf HIGH schaltet.
Dafür dann den Mega16 und folgender Code, könnt ihr dort mal rüber
schauen ob er so richtig ist.
Es sollen dann noch ein paar kleinere µCs kommen, Attiny2313 z.B.. Dort
ist dann ein Pin der Eingang und an den passenden Pin an der "Uhr"
angeschlossen. Wenn es also 19 Uhr ist, bekommt dann der µC für die
Straßenbeleuchtung ein Signal und schaltet über ein Relais die
Straßenbeleuchtung für 2160 Sekunden (12 simulierte Stunden = 36
Minuten) an.
1 | $regfile = "M16def.dat"
|
2 | $crystal = 1000000
|
3 | $hwstack = 100
|
4 | $swstack = 100
|
5 | $framesize = 100
|
6 |
|
7 |
|
8 | 'Stunde1 an PA0
|
9 | Stunde1 Alias Porta.0
|
10 | Config Stunde1 = Output
|
11 |
|
12 | 'Stunde2 an PA1
|
13 | Stunde2 Alias Porta.1
|
14 | Config Stunde2 = Output
|
15 |
|
16 | 'Stunde3 an PA2
|
17 | Stunde3 Alias Porta.2
|
18 | Config Stunde3 = Output
|
19 |
|
20 | 'Stunde4 an PA3
|
21 | Stunde4 Alias Porta.3
|
22 | Config Stunde4 = Output
|
23 |
|
24 | 'Stunde5 an PA4
|
25 | Stunde5 Alias Porta.4
|
26 | Config Stunde5 = Output
|
27 |
|
28 | 'Stunde6 an PA5
|
29 | Stunde6 Alias Porta.5
|
30 | Config Stunde6 = Output
|
31 |
|
32 | 'Stunde7 an PA6
|
33 | Stunde7 Alias Porta.6
|
34 | Config Stunde7 = Output
|
35 |
|
36 | 'Stunde8 an PA7
|
37 | Stunde8 Alias Porta.7
|
38 | Config Stunde8 = Output
|
39 |
|
40 | 'Stunde9 an PB0
|
41 | Stunde9 Alias Portb.0
|
42 | Config Stunde9 = Output
|
43 |
|
44 | 'Stunde10 an PB1
|
45 | Stunde10 Alias Portb.1
|
46 | Config Stunde10 = Output
|
47 |
|
48 | 'Stunde11 an PB2
|
49 | Stunde11 Alias Portb.2
|
50 | Config Stunde11 = Output
|
51 |
|
52 | 'Stunde12 an PB3
|
53 | Stunde12 Alias Portb.3
|
54 | Config Stunde12 = Output
|
55 |
|
56 | 'Stunde13 an PB4
|
57 | Stunde13 Alias Portb.4
|
58 | Config Stunde13 = Output
|
59 |
|
60 | 'Stunde14 an PB5
|
61 | Stunde14 Alias Portb.5
|
62 | Config Stunde14 = Output
|
63 |
|
64 | 'Stunde15 an PB6
|
65 | Stunde15 Alias Portb.6
|
66 | Config Stunde15 = Output
|
67 |
|
68 | 'Stunde16 an PB7
|
69 | Stunde16 Alias Portb.7
|
70 | Config Stunde16 = Output
|
71 |
|
72 | 'Stunde17 an PC0
|
73 | Stunde17 Alias Portc.0
|
74 | Config Stunde17 = Output
|
75 |
|
76 | 'Stunde18 an PC1
|
77 | Stunde18 Alias Portc.1
|
78 | Config Stunde18 = Output
|
79 |
|
80 | 'Stunde19 an PC2
|
81 | Stunde19 Alias Portc.2
|
82 | Config Stunde19 = Output
|
83 |
|
84 | 'Stunde20 an PC3
|
85 | Stunde20 Alias Portc.3
|
86 | Config Stunde20 = Output
|
87 |
|
88 | 'Stunde21 an PC4
|
89 | Stunde21 Alias Portc.4
|
90 | Config Stunde21 = Output
|
91 |
|
92 | 'Stunde22 an PC5
|
93 | Stunde22 Alias Portc.5
|
94 | Config Stunde22 = Output
|
95 |
|
96 | 'Stunde23 an PC6
|
97 | Stunde23 Alias Portc.6
|
98 | Config Stunde23 = Output
|
99 |
|
100 | 'Stunde24 an PC7
|
101 | Stunde24 Alias Portc.7
|
102 | Config Stunde24 = Output
|
103 |
|
104 | Do
|
105 |
|
106 | Stunde1 = 1
|
107 | Wait 180
|
108 | Stunde1 = 0
|
109 | Stunde2 = 1
|
110 | Wait 180
|
111 | Stunde2 = 0
|
112 | Stunde3 = 1
|
113 | Wait 180
|
114 | Stunde3 = 0
|
115 | Stunde4 = 1
|
116 | Wait 180
|
117 | Stunde4 = 0
|
118 | Stunde5 = 1
|
119 | Wait 180
|
120 | Stunde5 = 0
|
121 | Stunde6 = 1
|
122 | Wait 180
|
123 | Stunde6 = 0
|
124 | Stunde7 = 1
|
125 | Wait 180
|
126 | Stunde7 = 0
|
127 | Stunde8 = 1
|
128 | Wait 180
|
129 | Stunde8 = 0
|
130 | Stunde9 = 1
|
131 | Wait 180
|
132 | Stunde9 = 0
|
133 | Stunde10 = 1
|
134 | Wait 180
|
135 | Stunde10 = 0
|
136 | Stunde11 = 1
|
137 | Wait 180
|
138 | Stunde11 = 0
|
139 | Stunde12 = 1
|
140 | Wait 180
|
141 | Stunde12 = 0
|
142 | Stunde13 = 1
|
143 | Wait 180
|
144 | Stunde13 = 0
|
145 | Stunde14 = 1
|
146 | Wait 180
|
147 | Stunde14 = 0
|
148 | Stunde15 = 1
|
149 | Wait 180
|
150 | Stunde15 = 0
|
151 | Stunde16 = 1
|
152 | Wait 180
|
153 | Stunde16 = 0
|
154 | Stunde17 = 1
|
155 | Wait 180
|
156 | Stunde17 = 0
|
157 | Stunde18 = 1
|
158 | Wait 180
|
159 | Stunde18 = 0
|
160 | Stunde19 = 1
|
161 | Wait 180
|
162 | Stunde19 = 0
|
163 | Stunde20 = 1
|
164 | Wait 180
|
165 | Stunde20 = 0
|
166 | Stunde21 = 1
|
167 | Wait 180
|
168 | Stunde21 = 0
|
169 | Stunde22 = 1
|
170 | Wait 180
|
171 | Stunde22 = 0
|
172 | Stunde23 = 1
|
173 | Wait 180
|
174 | Stunde23 = 0
|
175 | Stunde24 = 1
|
176 | Wait 180
|
177 | Stunde24 = 0
|
178 |
|
179 | Loop
|
180 |
|
181 | End
|
Habe noch schnell einen Code für die Straßenbeleuchtung geschrieben, die
über 6 Relais geschaltet wird.
1 | $regfile = "XXX.dat"
|
2 | $crystal = 1000000
|
3 | $hwstack = 100
|
4 | $swstack = 100
|
5 | $framesize = 100
|
6 |
|
7 |
|
8 | 'Relais1 an PB0
|
9 | Relais1 Alias Portb.0
|
10 | Config Relais1 = Output
|
11 |
|
12 | 'Relais2 an PB1
|
13 | Relais2 Alias Portb.1
|
14 | Config Relais2 = Output
|
15 |
|
16 | 'Relais3 an PB2
|
17 | Relais3 Alias Portb.2
|
18 | Config Relais3 = Output
|
19 |
|
20 | 'Relais4 an PB3
|
21 | Relais4 Alias Portb.3
|
22 | Config Relais4 = Output
|
23 |
|
24 | 'Relais5 an PB4
|
25 | Relais5 Alias Portb.4
|
26 | Config Relais5 = Output
|
27 |
|
28 | 'Relais6 an PB5
|
29 | Relais6 Alias Portb.5
|
30 | Config Relais6 = Output
|
31 |
|
32 | 'Stunde18 an PA1
|
33 | Stunde18 Alias Pina.1
|
34 | Config Stunde18 = Input
|
35 | 'falls benötigt Porta.1 = 1 'PullUp-Widerstand einschalten
|
36 |
|
37 | Do
|
38 |
|
39 | If Stunde18 = 1 Then
|
40 | Relais1 = 1
|
41 | Relais2 = 1
|
42 | Relais3 = 1
|
43 | Relais4 = 1
|
44 | Relais5 = 1
|
45 | Relais6 = 1
|
46 | Wait 2160
|
47 | Relais1 = 0
|
48 | Relais2 = 0
|
49 | Relais3 = 0
|
50 | Relais4 = 0
|
51 | Relais5 = 0
|
52 | Relais6 = 0
|
53 | Else
|
54 | Relais1 = 0
|
55 | Relais2 = 0
|
56 | Relais3 = 0
|
57 | Relais4 = 0
|
58 | Relais5 = 0
|
59 | Relais6 = 0
|
60 | End If
|
61 | Loop
|
62 |
|
63 |
|
64 | End
|
Hier bin ich mir aber unsicher wie das mit dem Wait in der IF schleife
ist
Programmierfreudige Grüße,
Flo