Herzlich Willkommen im einzigen (deutschsprachigem) Picaxe-Forum.

Der Ursprung dieses Forum reicht bis in das Jahr 2008 zurück


Zeitproblem

#1 von Karlsson , 07.02.2020 19:20

Hallo,

leider habe ich ein Zeitproblem im Programm.

Eine 14m2 ließt das Servosingnal aus und schaltet entsprechend die Blinker.
Weiterhin wird die Radbewegung registriert, um dann das Bremslicht auszuschalten.
Bis dahin funktioniert es recht gut.

Jetzt soll sozusagen nebenbei ein Rundumlicht mit 4 LEDs laufen,
welches über ein Signal der FB ein-und ausgeschaltet wird.

Das Rundumlicht wird aber stark ausgebremst durch count und pulsin, denke ich.
Oder liegt es an den Pausen?
Was kann ich ändern?

1
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
 
dirsb=%00111110
dirsc=%00000011
 
high c.1 'Bremlicht an
 
start:
'-------------------------------------------------
'Bremslicht
 
count C.4, 300,b0 'Radsensor
 
'sertxd("Der Wert von b0 ist ",#b0,13,10)
 
if b0 > 0 then
low c.1
else high c.1
endif
'-------------------------------------------------
'Blinker
 
pulsin C.3,1,b1 'Servosignal
 
'sertxd("Der Wert von b1 ist ",#b1,13,10)

if b1>160 then
pulsout b.5,60000
pause 600
elseif b1<140 then
pulsout c.0,60000
pause 600
endif
 
goto start
'-------------------------------------------------
'Rundumkennleuchte
 
start1:
 
if pinc.2 = 1 then

pulsout b.1,7000
pause 70
pulsout b.2,7000
pause 70
pulsout b.3,7000
pause 70
pulsout b.4,7000
pause 70

endif

goto start1
 



Gruß Karlsson

Karlsson  
Karlsson
Beiträge: 30
Registriert am: 13.10.2019


RE: Zeitproblem

#2 von Naubaddi , 07.02.2020 20:01

Hi Karlsson,

für den Blinker/Warnblinker habe ich 3 MultiTask eingerichtet um den Zeitproblemen aus dem Weg zu gehen, nicht professionell aber es funktioniert. Vielleicht hilft Dir ein Blick in mein Programm:

Multitask für den Zeitzähler stoppen <-- damit wird der Warnblinker eingeschaltet wenn man länger als 3 Sekunden den rechten Steuerhebel für rauf/runter festhält. Blinker/Warnblinker werden unabhängig vom Lenkservo bei mir geschaltet.

1
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
 
; picaxe08m2 ;	automatische Compilerauswahl für gedit
; Dateiname: Blinker Warnblinker.axe
; Funktion: Das Signal von einem RC-Empfänger auswerten für Blinker/Warnblinker (z.B. für RC-Autos)
; Datum: Start 30.01.2016, Stand 25.02.2016
; Von: Naubaddi foto-schubser@arcor.de
;
; PICAXE 08M2 Alle Pin Funktionen (C.0 nur Ausgang, C.3 nur Eingang)
;
; +---v---+
; +V |1 8| 0V
; RxD/I C.5 |2 7| C.0 O/TxD/hserout/DAC
; Touch/ADC/O/I C.4 |3 6| C.1 I/O/ADC/Touch/hserin/SRI/hi2c/scl
; I C.3 |4 5| C.2 I/O/ADC/Touch/pwm/tune/SRQ/hi2c sda
; +-------+
;
suspend 1 ; Multitask für den Blinker links stoppen
suspend 2 ; Multitask für den Blinker rechts stoppen
suspend 3 ; Multitask für den Zeitzähler stoppen
;
pause 1000 ; x Milisekunden Pause damit das System sich beruhigen kann
;
symbol links = C.2 ; Ausgang für den Blinker links
symbol rechts = C.1 ; Ausgang für den Blinker rechts
symbol RC_Kanal = C.3 ; Eingang für einen Kanal vom Empfänger
symbol RC_Signal = w0 ; das Signal vom Empfänger, links > Mitte + xy, Mitte = X, rechts < Mitte - xy (75-225)
symbol Mitte = b2 ; die Mittelstellung
symbol Blinkinterval = b3 ; Blinkinterval in Milisekunden
symbol links_ein = b4 ; Blinker links ein/aus
symbol rechts_ein = b5 ; Blinker rechts ein/aus
symbol Zeit_z = b6 ; Zeitzähler für Warnblinker ein
symbol xy = b7 ; Schaltpunkt plus/Minus von der Mittelstellung
symbol dumm = b8 ; eine Variable für alles Mögliche
;
Blinkinterval = 100 ; Blinkinterval auf x Milisekunden setzen
links_ein = 0 ; Blinker links aus
rechts_ein = 0 ; Blinker rechts aus
low links ; Blinker links ausschalten
low rechts ; Blinker rechts ausschalten
Zeit_z = 0 ; Zeitzähler für Warnblinker ein auf 0 setzen
xy = 30 ; Schaltpunkt plus/Minus von der Mittelstellung
;
pulsin RC_Kanal, 1, Mitte ; die Mittelstellung übernehmen (ca. 150)
;
RC_Blinker_Warnblinker: ; Hauptschleife Blinker/Warnblinker (das RC Signal vom Empfänger auswerten)
;
pulsin RC_Kanal, 1, RC_Signal ; RC Signal übernehmen
dumm = Mitte - xy ; Mittelstellung - xy für links blinken
;
if RC_Signal < dumm then ; wenn es ein RC Signal für links gibt
if links_ein = 0 then ; wenn der Blinker links aus ist
rechts_ein = 0 ; Blinker rechts auf aus setzen
pause Blinkinterval ; x Milisekunden Pause damit nicht beide Blinker an sind
links_ein = 1 ; Blinker links auf ein setzen
restart 1 ; Multitask Blinker links neu starten
else ; sonst
links_ein = 0 ; Blinker links auf aus setzen
rechts_ein = 0 ; Blinker rechts auf aus setzen (falls der Warnblinker ein ist)
suspend 1 ; Multitask für den Blinker/Warnblinker stoppen, wird im Moment nicht gebraucht
suspend 2 ; Multitask für den Blinker/Warnblinker stoppen, wird im Moment nicht gebraucht
low links ; Blinker links ausschalten
low rechts ; Blinker rechts ausschalten
endif ; Ende von: links_ein
Zeit_z= 0 ; Zeitzähler auf 0 setzen
restart 3 ; Multitask Zeitzähler neu starten
do ; Warteschleife
if links_ein = 1 and Zeit_z > 4 then ; nach 4 mal blinken den Warnblinker einschalten
rechts_ein = 1 ; Blinker rechts auf ein setzen
restart 1 ; Multitask Blinker links neu starten
restart 2 ; Multitask Blinker rechts neu starten
endif ; Ende von: links_ein und Zeit_z
pulsin RC_Kanal, 1, RC_Signal ; RC Signal übernehmen
loop until RC_Signal > dumm ; Ende von: do (Warteschleife)
suspend 3 ; Multitask Zeitzähler stoppen
endif ; Ende von: RC_Signal_auswerten
;
pulsin RC_Kanal, 1, RC_Signal ; RC Signal übernehmen
dumm = Mitte + xy ; Mittelstellung + xy für rechts blinken
;
if RC_Signal > dumm then ; wenn es ein RC Signal für rechts gibt
if rechts_ein = 0 then ; wenn der Blinker rechts aus ist
links_ein = 0 ; Blinker links auf aus setzen
pause Blinkinterval ; x Milisekunden Pause damit nicht beide Blinker an sind
rechts_ein = 1 ; Blinker rechts auf ein setzen
restart 2 ; Multitask Blinker rechts neu starten
else ; sonst
rechts_ein = 0 ; Blinker rechts auf aus setzen
links_ein = 0 ; Blinker links auf aus setzen (falls der Warnblinker ein ist)
suspend 2 ; Multitask für den Blinker/Warnblinker stoppen, wird im Moment nicht gebraucht
suspend 1 ; Multitask für den Blinker/Warnblinker stoppen, wird im Moment nicht gebraucht
low rechts ; Blinker rechts ausschalten
low links ; Blinker links ausschalten
endif ; Ende von: rechts_ein
Zeit_z = 0 ; Zeitzähler auf 0 setzen
restart 3 ; Multitask Zeitzähler neu starten
do ; Warteschleife
if rechts_ein = 1 and Zeit_z > 4 then ; nach 4 mal blinken den Warnblinker einschalten
links_ein = 1 ; Blinker links auf ein setzen
restart 2 ; Multitask Blinker rechts neu starten
restart 1 ; Multitask Blinker links neu starten
endif ; Ende von: links_ein und Zeit_z
pulsin RC_Kanal, 1, RC_Signal ; RC Signal übernehmen
loop until RC_Signal < dumm ; Ende von: do (Warteschleife)
suspend 3 ; Multitask Zeitzähler stoppen
endif ; Ende von: RC_Signal
;
goto RC_Blinker_Warnblinker ; Ende von: RC_Blinker_Warnblinker
;
start1: ; Multitask für den Blinker links
if links_ein = 1 then ; wenn der Blinker eingeschaltet ist
high links ; Blinker links einschalten
pause Blinkinterval ; x Millisekunden Pause
low links ; Blinker links ausschalten
pause Blinkinterval ; x Millisekunden Pause
endif ; Ende von: links_ein
goto start1 ; Ende von: start1
;
start2: ; Multitask für den Blinker rechts
if rechts_ein = 1 then ; wenn der Blinker eingeschaltet ist
high rechts ; Blinker rechts einschalten
pause Blinkinterval ; x Millisekunden Pause
low rechts ; Blinker rechts ausschalten
pause Blinkinterval ; x Millisekunden Pause
endif ; Ende von: rechts_ein
goto start2 ; Ende von: start2
;
start3: ; Multitask Zeitzähler
pause Blinkinterval ; x Millisekunden Pause
Zeit_z = Zeit_z + 1 ; Zeitzähler um 1 erhöhen
goto start3 ; Ende von: start3
;
 



Grüßle, Naubaddi


Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019

zuletzt bearbeitet 07.02.2020 | Top

RE: Zeitproblem

#3 von BoomBoomMagic , 08.02.2020 09:45

Hallo Karlsson ,

ich denke auch , wenn Du jeder Funktion einen Task spendest , könnte das mit ner Picaxe besser gehen.
So arbeitest du ja nur alles nacheinander ab , bis auf das Rundlicht.

Naubaddi's Code ist mir leider viiiiiiiiiiel zu lang , will doch nicht erst die Bibel lesen für 2-3 Funktionen ,
da steig ich nicht wirklich durch was da passieren soll oder kann oder tut ...
aber scheint ja zu funktionieren


***Lieber 2x mehr lesen , als 1x dumm fragen ***

 
BoomBoomMagic
Beiträge: 528
Registriert am: 24.01.2019


RE: Zeitproblem

#4 von BoomBoomMagic , 08.02.2020 11:13

1
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
 

dirsb=%00111110
dirsc=%00000011

high c.1 'Bremlicht an


start:
'Bremslicht

count C.4, 300,b0 'Radsensor
if b0 > 0 then
low c.1
else
high c.1
endif
 
goto start
 

 

start1:
'Blinker

pulsin C.3,1,b1 'Servosignal
 
if b1>160 then
pulsout b.5,60000
pause 600
elseif b1<140 then
pulsout c.0,60000
pause 600
endif

goto start1
 

 

start2:
'Rundumkennleuchte


if pinc.2 = 1 then

pulsout b.1,7000
pause 70
pulsout b.2,7000
pause 70
pulsout b.3,7000
pause 70
pulsout b.4,7000
pause 70

endif

goto start2
 
 


***Lieber 2x mehr lesen , als 1x dumm fragen ***

 
BoomBoomMagic
Beiträge: 528
Registriert am: 24.01.2019


RE: Zeitproblem

#5 von Karlsson , 09.02.2020 00:50

Schonmal vielen Dank für eure Mühe.
Klappt leider auch nicht.
Sobald ich pulsin und/oder count einsetze,
wird die Rundumleuchte ausgebremst.
Ich denke, ich werde das Rundumlicht in eine zusatzliche 08M2 auslagern.
Picaxe halt.....

Gruß Karlsson

Karlsson  
Karlsson
Beiträge: 30
Registriert am: 13.10.2019


RE: Zeitproblem

#6 von Naubaddi , 09.02.2020 09:17

Morjen, dass es an pulsin liegt glaube ich eher nicht, egal wie lange der pulsein in der "do ; Warnblinker bei einem Dauersignal einschalten" abgefragt wird blinkt es ordentlich weiter. Bei mir gab es Probleme wenn der pulsout Wert zu groß war wie z.B. "pulsout b.2,7000".

Das Programm wurde etwas übersichtlicher gestaltet ;-):

1
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
 
; picaxe08m2 ;	automatische Compilerauswahl für gedit
; Dateiname: Blinker Warnblinker.axe
; Funktion: Das Signal von einem RC-Empfänger auswerten für Blinker/Warnblinker (z.B. für RC-Autos)
; RC-Signal 75 links, 150 Mitte, 225 rechts
; Datum: Start 30.01.2016, Stand 08.02.2020
; Von: Naubaddi foto-schubser@arcor.de
;
; PICAXE 08M2 Alle Pin Funktionen (C.0 nur Ausgang, C.3 nur Eingang)
;
; +---v---+
; +V |1 8| 0V
; RxD/I C.5 |2 7| C.0 O/TxD/hserout/DAC
; Touch/ADC/O/I C.4 |3 6| C.1 I/O/ADC/Touch/hserin/SRI/hi2c/scl
; I C.3 |4 5| C.2 I/O/ADC/Touch/pwm/tune/SRQ/hi2c sda
; +-------+
;
pause 1000 ; eine Pause für die RC-Elektrik
;
suspend 2 ; Multitask für den Zeitzähler stoppen
;
symbol links = C.1 ; Ausgang für den Blinker links
symbol rechts = C.2 ; Ausgang für den Blinker rechts
symbol RC_Kanal = C.3 ; Eingang für einen Kanal vom Empfänger
symbol RC_Signal = b0 ; das Signal vom Empfänger
symbol Mitte = b1 ; die Mittelstellung
symbol links_S = b2 ; Schaltpunkt links
symbol rechts_S = b3 ; Schaltpunkt rechts
symbol Blinkinterval = b4 ; Blinkinterval in Milisekunden
symbol links_ein = b5 ; Blinker links ein/aus
symbol rechts_ein = b6 ; Blinker rechts ein/aus
symbol Zeit_z = b7 ; Zeitzähler für Warnblinker einschalten
;
Blinkinterval = 100 ; Blinkinterval auf x Milisekunden setzen
links_ein = 0 ; Blinker links aus
low links ; Blinker links ausschalten
rechts_ein = 0 ; Blinker rechts aus
low rechts ; Blinker rechts ausschalten
Zeit_z = 0 ; Zeitzähler für Warnblinker ein auf 0 setzen
;
Mitte = 150 ; pulsin RC_Kanal, 1, Mitte ; die Mittelstellung übernehmen
;
links_S = Mitte - 7 ; der Schaltpunkt für links
rechts_S = Mitte + 7 ; der Schaltpunkt für rechts
;
RC_Blinker_Warnblinker:
;
pulsin RC_Kanal, 1, RC_Signal
;
if RC_Signal < links_S or RC_Signal > rechts_S then
if RC_Signal < links_S then ; Blinker links ein/aus
if links_ein = 0 then
rechts_ein = 0
links_ein = 1
else
links_ein = 0
rechts_ein = 0
endif
else ; Blinker rechts ein/aus
if rechts_ein = 0 then
links_ein = 0
rechts_ein = 1
else
rechts_ein = 0
links_ein = 0
endif
endif
Zeit_z= 0
restart 2
do ; Warnblinker bei einem Dauersignal einschalten
pulsin RC_Kanal, 1, RC_Signal
if Zeit_z > 3 then
links_ein = 1
rechts_ein = 1
endif
loop until RC_Signal > links_S and RC_Signal < rechts_S
endif
;
goto RC_Blinker_Warnblinker
;
start1: ; Multitask für das Blinken
if links_ein = 1 then : high links : endif
if rechts_ein = 1 then : high rechts : endif
pause Blinkinterval
low links
low rechts
pause Blinkinterval
goto start1
;
start2: ; Multitask Zeitzähler für den Warnblinker
pause Blinkinterval
inc Zeit_z
goto start2
;
 



Grüßle, Naubaddi

Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019


RE: Zeitproblem

#7 von Naubaddi , 09.02.2020 11:10

Ich noch mal, habe das Programm mal auf meine Art erstellt, es ist ein Taschenroman geworden ;-). Ich mag halt die unnötigen Vorbelegungen von Variablen...

Zum Programm, das Signal für den Blinker wird vom Lenkservo genommen und für die Bremse vom Fahrtregler, für das Rundumlicht wird am Anfang eine 1 oder eine 0 übergeben weil keine Ahnung wo das Signal herkommt.

1
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
 
; picaxe14m2 ;	automatische Compilerauswahl für gedit
; Dateiname: Karlsson.axe
; Funktion: Signale von einem RC-Empfänger auswerten für Blinker, Rundumlicht und Bremslicht
; RC-Signal 75 links, 150 Mitte, 225 rechts
; Datum: Start 08.02.2020, Stand 08.02.2020
; Von: Naubaddi foto-schubser@arcor.de
;
; PICAXE 14M2 (B.0 nur Ausgang, C.3, C.5 nur Eingang)
;
; +---v---+
; +V |1 14| 0V
; RxD /I C.5 |2 13| B.0 O /TxD/hserout/DAC
; Touch/ADC/ I/O C.4 |3 12| B.1 I/O /ADC/Touch/SRI/hserin
; I C.3 |4 11| B.2 I/O /ADC/Touch/pwm/tune/SRQ
; kb clk/hpwm A/pwm/ I/O C.2 |5 10| B.3 I/O /ADC/Touch/hi2c scl
; kb data/hpwm B/ I/O C.1 |6 9| B.4 I/O /ADC/Touch/pwm/hi2c sda
; hpwm C/pwm/Touch/ADC/ I/O C.0 |7 8| B.5 I/O /ADC/Touch/hpwm D
; +-------+
;
pause 1000 ; eine Pause für die RC-Elektrik
;
symbol Bremse = C.0 ; Ausgang für das Bremslicht
symbol links = C.1 ; Ausgang für den Blinker links
symbol rechts = C.2 ; Ausgang für den Blinker rechts
symbol RC_Kanal = C.3 ; Eingang für einen Kanal vom Empfänger
symbol RC_Bremse = C.4 ; Eingang für einen Kanal vom Empfänger
symbol RC_Signal = b0 ; das Signal vom Empfänger
symbol Mitte = b1 ; die Mittelstellung
symbol links_S = b2 ; Schaltpunkt links
symbol rechts_S = b3 ; Schaltpunkt rechts
symbol Blinkinterval = b4 ; Blinkinterval in Milisekunden
symbol links_ein = b5 ; Blinker links ein/aus
symbol rechts_ein = b6 ; Blinker rechts ein/aus
symbol Rundumlicht = b7 ; Rundumlicht 4 LEDs
;
Blinkinterval = 99 ; Blinkinterval auf x Milisekunden setzen
links_ein = 0 ; Blinker links aus
low links ; Blinker links ausschalten
rechts_ein = 0 ; Blinker rechts aus
low rechts ; Blinker rechts ausschalten
Rundumlicht = 1 ; Rundumlicht aus
low b.1 : low b.2 : low b.3 : low b.4 ; Rundumlicht ausschalten
high Bremse ; Bremslicht einschalten
;
Mitte = 150 ; pulsin RC_Kanal, 1, Mitte ; die Mittelstellung übernehmen
;
links_S = Mitte - 7 ; der Schaltpunkt für links
rechts_S = Mitte + 7 ; der Schaltpunkt für rechts
;
Karlsson:
;
pulsin RC_Bremse, 1, RC_Signal ; RC-Signal vom Fahrtregler abfragen
;
if RC_Signal < links_S or RC_Signal > rechts_S then ; Bremslicht einschalten oder ausschalten?
low Bremse
else
high Bremse
endif
;
pulsin RC_Kanal, 1, RC_Signal ; RC-Signal vom Lenkservo abfragen
;
if RC_Signal < links_S or RC_Signal > rechts_S then
if RC_Signal < links_S then ; Blinker links ein/aus
if links_ein = 0 then
rechts_ein = 0
links_ein = 1
else
links_ein = 0
rechts_ein = 0
endif
else ; Blinker rechts ein/aus
if rechts_ein = 0 then
links_ein = 0
rechts_ein = 1
else
rechts_ein = 0
links_ein = 0
endif
endif
do ; warten bis kein Signal mehr anliegt
pulsin RC_Kanal, 1, RC_Signal
loop until RC_Signal > links_S and RC_Signal < rechts_S
endif
;
goto Karlsson
;
start1: ; Multitask für das Blinken
if links_ein = 1 then : high links : endif
if rechts_ein = 1 then : high rechts : endif
pause Blinkinterval
low links
low rechts
pause Blinkinterval
goto start1
;
start2: ; Multitask für das Rundumlicht
if Rundumlicht = 1 then
low b.4 : high b.1 : pause 99
low b.1 : high b.2 : pause 99
low b.2 : high b.3 : pause 99
low b.3 : high b.4 : pause 99
else
low b.1 : low b.2 : low b.3 : low b.4
endif
goto start2
;
 



Grüßle, Naubaddi


Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019

zuletzt bearbeitet 09.02.2020 | Top

RE: Zeitproblem

#8 von BoomBoomMagic , 09.02.2020 11:46

Moin Leutz ,

also , .... ich will mich da nicht reinhängen , aber .... mir sind die Codes alle zu Ballasthaltig , zu Schwerlastig
Vielleicht denk ich zu logisch ......



Ich habe doch nur EINE simple popelige Schleife , nämlich : was ist das Servosignal (pulsin)
Mehr interessiert mich doch erstmal überhaupt nicht .

Dann , je nach dem , ob Blinker links oder Blinker rechts oder Warnblinker setze ich passende Variablen.

Die entsprechenden Blinkfunktionen stehen in verschiedenen Task und werden über die entsprechenden Variablen aktiviert.
fertig !

If .... IF .... IF ... IF .... Variable A= , Variable B = , Variable C= , Variable D = , Variabel e= , ...... Übersichtlich geht echt anders meiner Meinung nach


***Lieber 2x mehr lesen , als 1x dumm fragen ***

 
BoomBoomMagic
Beiträge: 528
Registriert am: 24.01.2019


RE: Zeitproblem

#9 von Naubaddi , 09.02.2020 12:42

Was nützt die Logik wenn so ein PICAXE es nicht kann oder schafft?
Im Zusammenhang mit RC-Funktionen ist die Zeit sehr knapp und es kommen in diesem Fall 3 Signale zur selben Zeit, darauf soll das Programm sofort ohne etwas zu verschlucken reagieren. Irgendwo hatte ich schon mal erwähnt das pulsout das System blockiert, egal ob es in einem Multitask läuft oder nicht. Mit if... gebe ich dem System genug Zeit um den Multitask nicht zu stören, sieht vielleicht nicht schön aus arbeitet dafür sehr zuverlässig. Ist wie mit dem goto was mir nicht gefällt, wenn es so ist dann ist es halt so und ich nehme es hin.

Hatte ganz vergessen das der Blinker ja an den Lenkservo hängt und nicht auf einem extra Kanal wie bei mir, das Rundumlicht wird jetzt über einen Kanal ein/aus geschaltet.

Das noch kürzere Programm:

*edit, egal wie schnell man an den Steuerhebeln rührt, es funktioniert ohne etwas zu verschlucken oder das etwas langsamer wird!

1
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
 
; picaxe14m2 ;	automatische Compilerauswahl für gedit
; Dateiname: Karlsson.axe
; Funktion: Das Signal von einem RC-Empfänger auswerten für Blinker, Rundumlicht und Bremslicht
; RC-Signal 75 links, 150 Mitte, 225 rechts
; Datum: Start 08.02.2020, Stand 08.02.2020
; Von: Naubaddi foto-schubser@arcor.de
;
; PICAXE 14M2 (B.0 nur Ausgang, C.3, C.5 nur Eingang)
;
; +---v---+
; +V |1 14| 0V
; RxD /I C.5 |2 13| B.0 O /TxD/hserout/DAC
; Touch/ADC/ I/O C.4 |3 12| B.1 I/O /ADC/Touch/SRI/hserin
; I C.3 |4 11| B.2 I/O /ADC/Touch/pwm/tune/SRQ
; kb clk/hpwm A/pwm/ I/O C.2 |5 10| B.3 I/O /ADC/Touch/hi2c scl
; kb data/hpwm B/ I/O C.1 |6 9| B.4 I/O /ADC/Touch/pwm/hi2c sda
; hpwm C/pwm/Touch/ADC/ I/O C.0 |7 8| B.5 I/O /ADC/Touch/hpwm D
; +-------+
;
pause 1000 ; eine Pause für die RC-Elektrik
;
symbol Bremse = C.0 ; Ausgang für das Bremslicht
symbol links = C.1 ; Ausgang für den Blinker links
symbol rechts = C.2 ; Ausgang für den Blinker rechts
symbol RC_Blinker = C.3 ; Eingang für einen Kanal vom Empfänger (Lenkservo)
symbol RC_Bremse = C.4 ; Eingang für einen Kanal vom Empfänger (Fahrtregler)
symbol RC_Rundumlicht = B.5 ; Eingang für einen Kanal vom Empfänger (???)
symbol RC_Signal = b0 ; das Signal vom Empfänger
symbol Mitte = b1 ; die Mittelstellung
symbol SP_l = b2 ; Schaltpunkt low
symbol SP_h = b3 ; Schaltpunkt high
symbol Blinkinterval = b4 ; Blinkinterval in Milisekunden
symbol links_ein = b5 ; Blinker links ein/aus
symbol rechts_ein = b6 ; Blinker rechts ein/aus
symbol Rundumlicht = b7 ; Rundumlicht 4 LEDs
;
Blinkinterval = 99 ; Blinkinterval auf x Milisekunden setzen
links_ein = 0 ; Blinker links aus
low links ; Blinker links ausschalten
rechts_ein = 0 ; Blinker rechts aus
low rechts ; Blinker rechts ausschalten
Rundumlicht = 0 ; Rundumlicht aus
low b.1 : low b.2 : low b.3 : low b.4 ; Rundumlicht ausschalten
high Bremse ; Bremslicht einschalten
;
Mitte = 150 ; die Mittelstellung
SP_l = Mitte - 7 ; der Schaltpunkt für low
SP_h = Mitte + 7 ; der Schaltpunkt für high
;
Karlsson:
;
pulsin RC_Bremse, 1, RC_Signal ; RC-Signal vom Fahrtregler abfragen (Bremslicht)
;
if RC_Signal < SP_l or RC_Signal > SP_h then
low Bremse
else
high Bremse
endif
;
pulsin RC_Blinker, 1, RC_Signal ; RC-Signal vom Lenkservo abfragen (Blinker)
;
if RC_Signal < SP_l then
rechts_ein = 0 : links_ein = 1
else
links_ein = 0
endif
;
if RC_Signal > SP_h then
links_ein = 0 : rechts_ein = 1
else
rechts_ein = 0
endif
;
pulsin RC_Rundumlicht, 1, RC_Signal ; RC-Signal vom ??? abfragen (Rundumlicht)
;
if RC_Signal < SP_l or RC_Signal > SP_h then
Rundumlicht = 1
else
Rundumlicht = 0
endif
;
goto Karlsson
;
start1: ; Multitask für die Blinker
;
if links_ein = 1 then
high links : pause Blinkinterval
low links : pause Blinkinterval
else
low links
endif
;
if rechts_ein = 1 then
high rechts : pause Blinkinterval
low rechts : pause Blinkinterval
else
low rechts
endif
;
goto start1
;
start2: ; Multitask für das Rundumlicht
;
if Rundumlicht = 1 then
low b.4 : high b.1 : pause 99
low b.1 : high b.2 : pause 99
low b.2 : high b.3 : pause 99
low b.3 : high b.4 : pause 99
else
low b.1 : low b.2 : low b.3 : low b.4
endif
;
goto start2
;
 



Grüßle, Naubaddi


Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019

zuletzt bearbeitet 09.02.2020 | Top

RE: Zeitproblem

#10 von Naubaddi , 09.02.2020 13:04

So popelig ist das RC-Signal nicht, es ist bei jeder RC-Anlage etwas anders und nicht stabil:

* die Pulsweiten gehen bei meinen 3 RC-Anlagen von low 73 - 129 über die Mitte die von 148 -152 schwanken kann zu high von 172 - 227

für ein einfaches ein/aus kann man die low und high Werte vernachlässigen, was bleibt ist die Schaltspanne von der Mittelstellung die nicht zu klein und nicht zu groß sein darf. Wie man oben sehen kann ist bei 129 - 148 nicht viel Luft, und dann ist da noch der Korrekturschieber bei den Kanälen den man verändern kann ohne zu wissen welchen Pulsweiten-Wert es dann ergibt, 140 oder 160 oder 154...

Noch besser wird es wenn die RC-Bauteile einen Automatismus haben um die Mittelstellung oder den Quarz selbständig zu ermitteln, wer nicht schnell genug ist oder nicht im richtigen Moment mitspielt hat verloren. So ist es z.B. bei meinem Dreirad Zufall wenn der Fahrtregler richtig funktioniert .

Grüßle, Naubaddi

Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019


RE: Zeitproblem

#11 von BoomBoomMagic , 09.02.2020 13:19

Ich hab nicht gesagt das das RC-Signal popelig ist , sondern die Funktion , die es zu programmieren gilt.

Wobei das unabhängig von der Schwierigkeit oder dem Timing ist.

Ich hatte mir den Spaß gemacht und mal Deinen Code bissel ... mh .... "entlastet" und nur das wesentliche gelassen ,
jo , da war das schon übersichtlicher mit 10 Sätzen ca.
Da hab ich dann auch langsam den Sinn des Codes verstanden , vorher sah ich nur Text ...Text ...Text ...

aber wie gesagt , ich hab so überhaupt nix mit sowas am Hut , ist überhaupt nicht mein Interessensgebiet, insofern würd ich sagen ,
mach das weiterhin so wie Du es gewohnt bist .


***Lieber 2x mehr lesen , als 1x dumm fragen ***

 
BoomBoomMagic
Beiträge: 528
Registriert am: 24.01.2019


RE: Zeitproblem

#12 von Naubaddi , 09.02.2020 13:44

Das Drumherum brauche ich doch als Orientierung ;-), schmeißt es für Eure Zwecke einfach raus so wie BBM es gerade gemacht hat :-). Die ganzen Bemerkungen verkneife ich mir ja schon.

Ein Video vom Aufbau auf der BBM Testplatine die ohne Steckbrett funktioniert weil genug Anschlüsse vorhanden sind :-) .

So sieht es aus, ganz links das Bremslicht, dann die Blinker links/rechts und rechts das Rundumlicht:



Grüßle, Naubaddi

Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019


RE: Zeitproblem

#13 von Naubaddi , 09.02.2020 16:55

Hm, kürzer geht es mit meinen Kenntnissen nicht, wie würde Deine Version aussehen BBM?

Sieht echt schei.... aus:

1
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
 
; picaxe14m2 ;	automatische Compilerauswahl für gedit
;
pause 1000 ; eine Pause für die RC-Elektrik
;
symbol RC_Signal = b0 ; das Signal vom Empfänger
symbol links_ein = b1 ; Blinker links ein/aus
symbol rechts_ein = b2 ; Blinker rechts ein/aus
symbol Rundumlicht = b3 ; Rundumlicht 4 LEDs
;
Karlsson:
;
pulsin C.4, 1, RC_Signal ; RC-Signal vom Fahrtregler abfragen (Bremslicht)
if RC_Signal < 143 or RC_Signal > 157 then
low C.0
else
high C.0
endif
;
pulsin C.3, 1, RC_Signal ; RC-Signal vom Lenkservo abfragen (Blinker)
if RC_Signal < 143 then
rechts_ein = 0 : links_ein = 1
else
links_ein = 0
endif
if RC_Signal > 157 then
links_ein = 0 : rechts_ein = 1
else
rechts_ein = 0
endif
;
pulsin B.5, 1, RC_Signal ; RC-Signal vom ??? abfragen (Rundumlicht)
if RC_Signal < 143 or RC_Signal > 157 then
Rundumlicht = 1
else
Rundumlicht = 0
endif
;
goto Karlsson
;
start1: ; Multitask für die Blinker
if links_ein = 1 then
high C.1 : pause 99
low C.1 : pause 99
else
low C.1
endif
if rechts_ein = 1 then
high C.2 : pause 99
low C.2 : pause 99
else
low C.2
endif
goto start1
;
start2: ; Multitask für das Rundumlicht
if Rundumlicht = 1 then
low b.4 : high b.1 : pause 99
low b.1 : high b.2 : pause 99
low b.2 : high b.3 : pause 99
low b.3 : high b.4 : pause 99
else
low b.1 : low b.2 : low b.3 : low b.4
endif
goto start2
;
 



Grüßle, Naubaddi

Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019


RE: Zeitproblem

#14 von BoomBoomMagic , 09.02.2020 17:29

ich finde das unabhängig vom Programmieren so aber viel übersichtlicher

Man erkennt sofort die wesentlichen Funktionen um was es hier geht, wird nicht zwischen unnötiges Setzen von Variablen oder gleichen abgelenkt.

Man kann es jetzt noch unwesentlich verkürzen , aber das tut schon fast nix mehr zur Sache .

ich trau der Picaxe nicht ,...........
wenn ich eine Operation habe wie :


If Gänseblümchen = frisch OR Gänseblümchen = HELL then ....


mache ich das lieber getrennt oder anders , das das eindeutiger wird für den Chip.



1
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
 

; picaxe14m2 ; automatische Compilerauswahl für gedit
;
pause 1000 ; eine Pause für die RC-Elektrik
;
symbol RC_Signal = b0 ; das Signal vom Empfänger
symbol Blinker = b1 ; Blinker links ein/aus
symbol Rundumlicht = b3 ; Rundumlicht 4 LEDs
;
Main:
;
pulsin C.4, 1, RC_Signal ; RC-Signal vom Fahrtregler abfragen (Bremslicht)
Select case RC_Signal
case 144 to 156
high c.0
else
low c.0
end select
;-------------------------
;
pulsin C.3, 1, RC_Signal ; RC-Signal vom Lenkservo abfragen (Blinker)
if RC_Signal < 143 then
Blinker = 1 ; Links
elseif RC_Signal > 157 then
Blinker = 2 ; Rechts
else
Blinker = 0
low C.1
low C.2
endif
;------------------------
;
pulsin B.5, 1, RC_Signal ; RC-Signal vom ??? abfragen (Rundumlicht)
select case RC_Signal
case 144 to 156
Rundumlicht =0
else
Rundumlicht =1
end select
;
goto Main
;
;
start1: ; Multitask für die Blinker
if Blinker = 1 then
high C.1 : pause 99
low C.1 : pause 99
elseif Blinker=2 then
high C.2 : pause 99
low C.2 : pause 99
endif
goto start1
;
;
start2: ; Multitask für das Rundumlicht
if Rundumlicht = 1 then
low b.4 : high b.1 : pause 99
low b.1 : high b.2 : pause 99
low b.2 : high b.3 : pause 99
low b.3 : high b.4 : pause 99
else
low b.1 ,b.2 , b.3, b.4
endif
goto start2
;
 
 


***Lieber 2x mehr lesen , als 1x dumm fragen ***

 
BoomBoomMagic
Beiträge: 528
Registriert am: 24.01.2019

zuletzt bearbeitet 09.02.2020 | Top

RE: Zeitproblem

#15 von Naubaddi , 09.02.2020 17:55

O.K. meine Eselsbrücken scheinen wohl massiv zu stören, dann werde ich meine überladenen Programme vor dem veröffentlichen entschlacken .

Zitat von BoomBoomMagic im Beitrag #14
...ich trau der Picaxe nicht ,...........
wenn ich eine Operation habe wie :...


gibt es da wirklich Probleme mit so einer einfachen Abfrage ob ein Wert im Bereich von bis ist?

Karlsson, wie sieht es bei Dir aus, funktioniert schon etwas?

Grüßle, Naubaddi

Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019


RE: Zeitproblem

#16 von BoomBoomMagic , 09.02.2020 18:17

Du sollst Dir hier weder einen anderen Stil angewöhnen , noch Deine Eselsbrücken missen.

Nur etwas ....pfff....wie sag ich's jetzt am besten ..... sinniger ?!

Beispiel :

If Variable xxx = 1 then
Variable nnn =5
endif

If Variable nnn =5 then
' mach was ...
endif



Diese doppelt gemoppelt ....... kann einen schon bissel kirre machen


Natürlich kann eine Picaxe einen Bereich Abfragen.
Das ist nicht das Problem.
Das Problem sind die erweiterten Abfragen mit zusätzlichen Operatoren : OR , XOR , AND , XAND

Du meinst z.B.

If Käsekuchen <100 OR Käsekuchen >150 then

wenn der aber des so interpretiert

If Käsekuche < 100 or Käsekuchen >150 then

is ja etwas völlig anderes ...
Man kann so eine Picaxe ( die weder Fliesskomma , noch Text kann ) nicht mit anderen echten Mikrocontroller oder gar
einer PC Programmiersprache auf eine Stufe setzen.


***Lieber 2x mehr lesen , als 1x dumm fragen ***

 
BoomBoomMagic
Beiträge: 528
Registriert am: 24.01.2019


RE: Zeitproblem

#17 von Karlsson , 09.02.2020 20:34

Hallo,

Habe jetzt das Rundumlicht ausgelagert.
Einfacher geht es nicht.

1
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
 
'14M2
 
dirsb=%00100000
dirsc=%00000011
 
high c.1 'Bremlicht an
 
start:
 
'Bremslicht
 
count C.4,300,b0 'Radsensor
 
if b0 > 0 then
low c.1
else high c.1
endif
 
'-------------------------------------------------
 
'Blinker
 
pulsin C.3,1,b1 'Servosignal
 
if b1 > 0 then
if b1>160 then
pulsout b.5,60000
pause 600
elseif b1<140 then
pulsout c.0,60000
pause 600
endif
endif
 
goto start
'-------------------------------------------------
 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
'08M2
 
'Rundumkennleuchte
 
dirsc=%00010111
 
start:
 
if pinc.3 = 1 then

pulsout c.0,7000
pause 70
pulsout c.1,7000
pause 70
pulsout c.2,7000
pause 70
pulsout c.4,7000
pause 70

endif

goto start
 


Die 14M2 werde ich wahrscheinlich auch gegen eine 08M2 tauschen,
weil ich ja jetzt 5 Pins nicht belegt habe. Ist aber erst bestellt.
Mit einem AVR hat man solche Probleme wahrscheinlich nicht.

Naubadi, in deinen deinem Video sieht das Rundumlicht auch etwas langsam aus.
Und dein Code lief bei mir leider auch nicht rund.
Ansonsten vielen Dank für deine Mühe.

Gruß Karlsson

Karlsson  
Karlsson
Beiträge: 30
Registriert am: 13.10.2019


RE: Zeitproblem

#18 von Naubaddi , 09.02.2020 21:00

Zitat von Karlsson im Beitrag #17
...in deinen deinem Video sieht das Rundumlicht auch etwas langsam aus...


hm, habe keine Ahnung wie schnell es sein soll, wenn man die Pause verkleinert auf z.B. 11 ist es so schnell das es wie ein Blitz aussieht ohne den Rest zu beeinflussen .

Grüßle, Naubaddi

Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019


RE: Zeitproblem

#19 von Karlsson , 09.02.2020 21:36

Ja, komisch. Ist manchmal wie verhext.

Karlsson  
Karlsson
Beiträge: 30
Registriert am: 13.10.2019


RE: Zeitproblem

#20 von Naubaddi , 09.02.2020 22:29

Hi BBM,

Zitat von BoomBoomMagic im Beitrag #16
...Du sollst Dir hier weder einen anderen Stil angewöhnen , noch Deine Eselsbrücken missen...


das werde ich auch nicht es sei denn etwas funktioniert besser als bei meiner Art der Programmierung (bin ja lernfähig), die Dinge werden halt für Euch entfernt bei mir bleiben sie sonst stehe ich im dunkeln ;-).

Grüßle, Naubaddi

Naubaddi  
Naubaddi
Beiträge: 288
Registriert am: 29.01.2019


RE: Zeitproblem

#21 von BoomBoomMagic , 10.02.2020 11:34

Obwohl diese RC Bastelei so garnicht mein Thema ist ( mir fehlt die Herrausforderung dabei ) ,
hab ich mich noch mal kurz mit dem Rundumlicht beschäftigt.

Karlsson , wir hatten das Thema ja schon bereits damals mit dem Leuchtturm , weißt noch ?

Da Du ja sowieso einen extra Chip nehmen willst .....
Ich fand das bei dem Rundumlicht etwas unnatürlich wenn da nur abwechselnd 4 Leds angehen.
Drum habe ich ein wenig SOFT-PWM eingebracht , so das wenn die nächste LED leuchtet ,
die vorherige langsam abdimmt. ( schlieren Effekt )

Ich hab das allerdings für einen Atmel gemacht , weil ich grad kein Picaxe Board angeschlossen habe ,
aber Naubaddi kann das sicher just für die Picaxe ummodeln , gelle ;-)


1
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
 

$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 50
$swstack = 50
$framesize = 50
 
config portc.1=output
config portc.2=output
config portc.3=output
config portc.4=output
 
LED1 alias portc.1
LED2 alias portc.2
LED3 alias portc.3
LED4 alias portc.4
 
dim W as word
dim Zaehler as word
 

do
'--------------------
Zaehler=1
LED2=1
do
 
for W=0 to 400
if Zaehler=W then
LED1=1
endif
next W
LED1=0
Zaehler=Zaehler+4
 
if Zaehler>=400 then
exit do
end if
 
loop
 
'----------------------
Zaehler=1
LED3=1
do
 
for W=0 to 400
if Zaehler =W then
LED2=1
end if
next W
LED2=0
 
Zaehler=Zaehler+4
if Zaehler>=400 then
exit do
end if
 
loop
 
'----------------------
Zaehler=1
LED4=1
do
 
for W=0 to 400
if Zaehler =W then
LED3=1
end if
next W
LED3=0
 
Zaehler=Zaehler+4
if Zaehler>=400 then
exit do
end if
 
loop
 
'----------------------
Zaehler=1
LED1=1
do
 
for W=0 to 400
if Zaehler =W then
LED4=1
end if
next W
LED4=0
 
Zaehler=Zaehler+4
if Zaehler>=400 then
exit do
end if
 
loop
'----------------------
loop
end
 
 



Die Geschwindigkeit kann über :
Zaehler=Zaehler+4
eingestellt werden , je nachdem wie schnell der Zaehler hoch zählen soll.

Die Gesamtgeschwindigkeit hängt hier von ab :
for W=0 to 400




***Lieber 2x mehr lesen , als 1x dumm fragen ***

 
BoomBoomMagic
Beiträge: 528
Registriert am: 24.01.2019

zuletzt bearbeitet 10.02.2020 | Top

RE: Zeitproblem

#22 von Karlsson , 10.02.2020 18:49

Vielen Dank, sieht prima aus.
Wäre Super, das für eine 08M2 zu haben.
Ich bin dafür leider zu doof

Gruß Karlsson

Karlsson  
Karlsson
Beiträge: 30
Registriert am: 13.10.2019


RE: Zeitproblem

#23 von BoomBoomMagic , 10.02.2020 18:56

Hallo karlsson ,

hab zwar kein Picaxe Board just zur Hand , aber da man das nur 1:1 kopieren brauch , kann ich den Text auch grad für dich kopieren


***Lieber 2x mehr lesen , als 1x dumm fragen ***

 
BoomBoomMagic
Beiträge: 528
Registriert am: 24.01.2019


RE: Zeitproblem

#24 von Karlsson , 10.02.2020 19:06

100% kopieren geht leider nicht ganz.

Hab das so geändert:

1
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
 
dirsc=%00010111
 
symbol LED1=pinc.0
symbol LED2=pinc.1
symbol LED3=pinc.2
symbol LED4=pinc.4
 
symbol W=w1
symbol Zaehler=w2
 
do
'--------------------
Zaehler=1
LED2=1
do

for W=0 to 400
if Zaehler=W then
LED1=pin1
endif
next W
LED1=0
Zaehler=Zaehler+4

if Zaehler>=400 then
exit do
end if

loop

'----------------------
Zaehler=1
LED3=1
do

for W=0 to 400
if Zaehler =W then
LED2=1
end if
next W
LED2=0

Zaehler=Zaehler+4
if Zaehler>=400 then
exit do
end if

loop

'----------------------
Zaehler=1
LED4=1
do

for W=0 to 400
if Zaehler =W then
LED3=1
end if
next W
LED3=0

Zaehler=Zaehler+4
if Zaehler>=400 then
exit do
end if

loop

'----------------------
Zaehler=1
LED1=1
do

for W=0 to 400
if Zaehler =W then
LED4=1
end if
next W
LED4=0

Zaehler=Zaehler+4
if Zaehler>=400 then
exit do
end if

loop
'----------------------
loop
end
 



Leider kommt Fehlermeldung:
Syntax Error in der Zeile 53 bei/vor Position 6
Error: Do without Loop
Obwohl loop vorhanden ist...

Karlsson  
Karlsson
Beiträge: 30
Registriert am: 13.10.2019


RE: Zeitproblem

#25 von BoomBoomMagic , 10.02.2020 19:09

1
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
 

#picaxe 08M2
 
let dirsc=%00010111
 
symbol LED1 = pinc.0
symbol LED2 = pinc.1
symbol LED3 = pinc.2
symbol LED4 = pinc.4
symbol Zaehler=W2

do
'--------------------
Zaehler=1
LED2=1
do

for W1=0 to 400
if Zaehler=W1 then
LED1=1
endif
next W1
LED1=0
Zaehler=Zaehler+4

if Zaehler>=400 then
exit
end if

loop

'----------------------
Zaehler=1
LED3=1
do

for W1=0 to 400
if Zaehler =W1 then
LED2=1
end if
next W1
LED2=0

Zaehler=Zaehler+4
if Zaehler>=400 then
exit
end if

loop

'----------------------
Zaehler=1
LED4=1
do

for W1=0 to 400
if Zaehler =W1 then
LED3=1
end if
next W1
LED3=0

Zaehler=Zaehler+4
if Zaehler>=400 then
exit
end if

loop

'----------------------
Zaehler=1
LED1=1
do

for W1=0 to 400
if Zaehler =W1 then
LED4=1
end if
next W1
LED4=0

Zaehler=Zaehler+4
if Zaehler>=400 then
exit
end if

loop
'----------------------


loop
end
 
 


***Lieber 2x mehr lesen , als 1x dumm fragen ***

 
BoomBoomMagic
Beiträge: 528
Registriert am: 24.01.2019


   

Motorgeräusch
Servo Signal auslesen

Picaxe Editor 5.5.5 Download
Update auf Picaxe Editor 5.5.6 Download
Picaxe Editor 6.x.x.x Download
Manual1.pdf        -      Grundwissen Download
Manual2.pdf        -      Befehle Download
Manual3.pdf        -      Beispiele Download


Press [Backspace] for back to Menu


Counter
Xobor Forum Software ©Xobor.de | Forum erstellen
Datenschutz