Nabend, um mal die Lanze für einen 14M2 zu brechen, so langsam ist der nicht.
Da ist z.B. der Kettenkessel von Werner der nur einen Empfänger hat, alles was der Kettenkessel kann macht ein 14M2:
* 2 Kettenantriebe unabhängig voneinander steuern: vorwärts/stopp/rückwärts
* eine Motorattrappe ein/aus schalten
* einen Lüfter für den Kühler gezielt nach der Belastung der Motoren ein/aus schalten
* Licht ein/aus schalten
* Blinklicht bei Rückwärtsfahrt
* einen mp3 Player ein/aus schalten
und das mit nur 3 Kanälen, was nicht über die Fernbedienung zu erledigen war berechnet der 14M2 im Hintergrund .
Es gibt keine Verzögerungen oder verschluckte Signale, egal wie schnell man an den Steuerhebeln rührt .
Ein Video aus den ersten Tagen des Kettenkessels:
und das Programm mit vielen unnützen Zeilen (meine Eselsbrücken halt).
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
; picaxe14m2 ; automatische Compilerauswahl für gedit
; Dateiname: Werners Kettenkessel.axe
; Funktion: Werners Kettenkessel steuern, V8 Motor, Ventilator, Ketten, Licht, Blinklicht und Kassettendeck
; Datum: Start 14.04.2017, Stand 29.05.2017
; Von: Naubaddi foto-schubser@arcor.de
;
; PICAXE 14M Alle Pin Funktionen (w0=b0+b1, w1=b2+b3, w2=b4+b5, w3=b6+b7, w4=b8+b9...)
;
; +---v---+
; +V |1 14| 0V
; Serial In C.5 |2 13| B.0 OUT/Serial Out let pins = %00000001
; In/Out C.4 |3 12| B.1 IN/Out let pins = %00000010
; In C.3 |4 11| B.2 IN/Out let pins = %00000100
; In/Out C.2 |5 10| B.3 IN/Out let pins = %00001000
; In/Out C.1 |6 9| B.4 IN/Out let pins = %00010000
; In/Out C.0 |7 8| B.5 IN/Out let pins = %00100000
; +-------+
;
; die ca. Werte vom Empfänger-Signal sind: 75, Mitte = 150, 225
;
input C.1, C.2, C.3 ; Eingänge setzen
output B.0, B.1, B.2, B.3, B.4, B.5, C.0, C.4 ; Ausgänge setzen
;
symbol Licht = B.0 ; Ausgang für das Licht bzw. Blinklicht beim rückwärts Fahren
symbol Kette_rechts_r = B.1 ; Ausgang für die Kette rechts rückwärts
symbol Kette_rechts_v = B.2 ; Ausgang für die Kette rechts vorwärts
symbol Kette_links_r = B.3 ; Ausgang für die Kette links rückwärts
symbol Kette_links_v = B.4 ; Ausgang für die Kette links vorwärts
symbol Kassettendeck = B.5 ; Ausgang für das Kassettendeck
symbol V8_Motor = C.0 ; Ausgang für den V8 Motor
symbol RC_rechts = C.1 ; Eingang RC-Signal Steuerhebel rechts rauf/runter
symbol RC_links = C.2 ; Eingang RC-Signal Steuerhebel links rauf/runter
symbol RC_Licht_Musik = C.3 ; Eingang RC-Signal Steuerhebel rechts rechts/links
symbol Ventilator = C.4 ; Ausgang für den Ventilator
;
symbol Laufzeit = w0 ; die Laufzeit der Motoren 0 - 65535 (Variable b0 und b1)
symbol Standzeit = w1 ; Kettenkessel Standzeit 0 - 65535 (Variable b2 und b3)
;
symbol Toleranz = b4 ; eine kleine Toleranz für die Mittelstellung rauf/runter (Leerlauf)
symbol rechts_0 = b5 ; RC-Signal Steuerhebel rechts Mittelstellung für rauf/runter
symbol links_0 = b6 ; RC-Signal Steuerhebel links Mittelstellung für rauf/runter
symbol Toleranz_r = b7 ; rückwärts mit Toleranz
symbol Toleranz_v = b8 ; vorwärts mit Toleranz
symbol r_fahren_r = b9 ; rückwärts fahren rechts, 0 = nein, 1 = ja
symbol r_fahren_l = b10 ; rückwärts fahren links, 0 = nein, 1 = ja
symbol Licht_an = b11 ; Licht an, 0 = nein, 1 = ja
symbol Licht_b = b12 ; Licht blinken, 0 = aus, 1 = an
symbol Kassettendeck_an = b13 ; Kassettendeck, 0 = aus, 1 = an
symbol V8_Motor_an = b14 ; V8 Motor, 0 = aus, 1 = an
;
symbol dumm_r = b25 ; eine Variable für alles Mögliche
symbol dumm_l = b26 ; eine Variable für alles Mögliche
symbol dumm = b27 ; eine Variable für alles Mögliche, und auch die letzte Variable :-(
;
Laufzeit = 0 ; die Laufzeit der Motoren auf 0 setzen
Standzeit = 0 ; Kettenkessel Standzeit auf 0 setzen
Toleranz = 10 ; die Toleranz für die Mittelstellung rauf/runter (Leerlauf)
pulsin RC_rechts, 1, rechts_0 ; die Mittelstellung vom rechten Steuerhebel für rauf/runter übernehmen
pulsin RC_links, 1, links_0 ; die Mittelstellung vom linken Steuerhebel für rauf/runter übernehmen
r_fahren_r = 0 ; Rückwärts fahren rechts auf 0 setzen
r_fahren_l = 0 ; Rückwärts fahren links auf 0 setzen
Licht_an = 0 ; Licht an auf 0 setzen
Licht_b = 0 ; Licht blinken auf 0 setzen
Kassettendeck_an = 0 ; Kassettendeck auf 0 setzen
V8_Motor_an = 0 ; V8 Motor auf 0 setzen
;
Kettenkessel_steuern: ; Hauptschleife Kettenkessel steuern
;
pulsin RC_Licht_Musik, 1, dumm ; --> Licht <-- RC-Signal vom Steuerhebel rechts rechts/links abfragen
If dumm > 175 then ; wenn der Steuerhebel rechts nach rechts bewegt wurde
if Licht_an = 0 then ; wenn das Licht aus ist
high Licht ; Licht einschalten
Licht_an = 1 ; Licht an hinterlegen
else ; sonst
low Licht ; Licht ausschalten
Licht_an = 0 ; Licht aus hinterlegen
endif
pause 200 ; eine kleine Pause als Schaltzeit
endif
;
pulsin RC_Licht_Musik, 1, dumm ; --> Kassettendeck <-- RC-Signal vom Steuerhebel rechts rechts/links abfragen
If dumm < 125 then ; wenn der Steuerhebel rechts nach links bewegt wurde
if Kassettendeck_an = 0 then ; wenn das Kassettendeck aus ist
high Kassettendeck ; Kassettendeck einschalten
Kassettendeck_an = 1 ; Kassettendeck an hinterlegen
else ; sonst
low Kassettendeck ; Kassettendeck ausschalten
Kassettendeck_an = 0 ; Kassettendeck aus hinterlegen
endif
pause 200 ; eine kleine Pause als Schaltzeit
endif
;
pulsin RC_rechts, 1, dumm_r : pulsin RC_links, 1, dumm_l ; --> V8 Motor <-- RC-Signal vom Steuerhebel rechts/links rauf/runter abfragen
if V8_Motor_an = 0 then ; wenn der V8 Motor aus ist
if dumm_r > 175 or dumm_l > 175 then ; wenn der Leerlaufbereich nach oben verlassen wurde den V8 Motor einschalten
high V8_Motor ; V8 Motor starten
V8_Motor_an = 1 ; V8 Motor an hinterlegen
pause 1000 ; eine Pause damit der Kettenkessel nicht sofort losfährt
Standzeit = 0 ; Standzeit auf 0 setzen
endif
;
else ; wenn der V8 Motor läuft kann man auch fahren ;-)
;
pulsin RC_rechts, 1, dumm ; --> Kette rechts <-- RC-Signal vom Steuerhebel rechts rauf/runter abfragen
Toleranz_v = dumm + Toleranz ; Leerlaufbereich für vorwärts
Toleranz_r = dumm - Toleranz ; Leerlaufbereich für rückwärts
if Toleranz_r > rechts_0 then ; wenn der Leerlaufbereich nach oben verlassen wurde vorwärts
high Kette_rechts_v ; Kette rechts, vorwärts ein
low Kette_rechts_r ; Kette rechts, rückwärts aus
r_fahren_r = 0 ; rückwärts fahren auf 0 setzen
Standzeit = 0 ; Standzeit auf 0 setzen
if Laufzeit < 222 then ; wenn die Laufzeit < ist
Laufzeit = Laufzeit + 2 ; die Laufzeit anheben
endif
endif
if Toleranz_v > rechts_0 and Toleranz_r < rechts_0 then ; wenn der Leerlaufbereich nicht verlassen wurde stoppen
low Kette_rechts_v ; Kette rechts, vorwärts aus
low Kette_rechts_r ; Kette rechts, rückwärts aus
r_fahren_r = 0 ; rückwärts fahren auf 0 setzen
if Laufzeit > 0 then : dec Laufzeit : endif ; wenn die Laufzeit > ist absenken
if Standzeit < 333 then : inc Standzeit : endif ; wenn die Standzeit < ist anheben
endif
if Toleranz_v < rechts_0 then ; wenn der Leerlaufbereich nach unten verlassen wurde rückwärts
high Kette_rechts_r ; Kette rechts, rückwärts ein
low Kette_rechts_v ; Kette rechts, vorwärts aus
r_fahren_r = 1 ; es wird rückwärts gefahren
Standzeit = 0 ; Standzeit auf 0 setzen
if Laufzeit < 222 then ; wenn die Laufzeit < ist
Laufzeit = Laufzeit + 2 ; die Laufzeit anheben
endif
endif
;
pulsin RC_links, 1, dumm ; --> Kette links <-- RC-Signal vom Steuerhebel links rauf/runter abfragen
Toleranz_v = dumm + Toleranz ; Leerlaufbereich für vorwärts
Toleranz_r = dumm - Toleranz ; Leerlaufbereich für rückwärts
if Toleranz_r > links_0 then ; wenn der Leerlaufbereich nach oben verlassen wurde vorwärts
high Kette_links_v ; Kette links, vorwärts ein
low Kette_links_r ; Kette links, rückwärts aus
r_fahren_l = 0 ; rückwärts fahren auf 0 setzen
Standzeit = 0 ; Standzeit auf 0 setzen
if Laufzeit < 222 then ; wenn die Laufzeit < ist
Laufzeit = Laufzeit + 2 ; die Laufzeit anheben
endif
endif
if Toleranz_v > links_0 and Toleranz_r < links_0 then ; wenn der Leerlaufbereich nicht verlassen wurde stoppen
low Kette_links_v ; Kette links, vorwärts aus
low Kette_links_r ; Kette links, rückwärts aus
r_fahren_l = 0 ; rückwärts fahren auf 0 setzen
if Laufzeit > 0 then : dec Laufzeit : endif ; wenn die Laufzeit > ist absenken
if Standzeit < 333 then : inc Standzeit : endif ; wenn die Standzeit < ist anheben
endif
if Toleranz_v < links_0 then ; wenn der Leerlaufbereich nach unten verlassen wurde rückwärts
high Kette_links_r ; Kette links, rückwärts ein
low Kette_links_v ; Kette links, vorwärts aus
r_fahren_l = 1 ; es wird rückwärts gefahren
Standzeit = 0 ; Standzeit auf 0 setzen
if Laufzeit < 222 then ; wenn die Laufzeit < ist
Laufzeit = Laufzeit + 2 ; die Laufzeit anheben
endif
endif
;
endif
;
if Laufzeit > 111 then ; --> Ventilator <-- einschalten wenn die max Laufzeit der Motoren überschritten wurde
high Ventilator ; Ventilator ein
else ; ausschalten wenn die max Laufzeit der Motoren unterschritten wurde
low Ventilator ; Ventilator aus
endif
;
if Standzeit >= 333 then ; --> V8 Motor <-- ausschalten wenn die max Standzeit der Motoren überschritten wurde
low V8_Motor ; V8 Motor ausschalten
V8_Motor_an = 0 ; V8 Motor auf 0 setzen
endif
;
if r_fahren_r = 1 or r_fahren_l = 1 then ; --> blinken <-- wenn rückwärts gefahren wird
pause 100 ; eine kleine Pause damit das Licht blinkt
if Licht_b = 0 then ; wenn das Blinklicht aus ist
high Licht ; Licht einschalten
Licht_b = 1 ; das Licht ist an
else ; wenn das Licht an ist
low Licht ; Licht ausschalten
Licht_b = 0 ; das Blinklicht ist aus
endif
else ; wenn nicht rückwärts gefahren wird nicht blinken
Licht_b = 0 ; das Blinklicht auf 0 setzen
if Licht_an = 1 then ; wenn das Licht an war
high Licht ; das Licht einschalten
else ; wenn das Licht aus war
low Licht ; das Licht ausschalten
endif
endif
;
goto Kettenkessel_steuern ; Ende von: Kettenkessel_steuern
;
Grüßle, Naubaddi