Forum: Mikrocontroller und Digitale Elektronik Bascom Zähler


von ILM (Gast)


Lesenswert?

Hallo Forum,
Ich steige grade in Bascom ein und habe jetzt ein kleines problem und 
zwar habe ich einen Zähler programmiert der vier Leds nacheinander ein 
und ausschaltet von links nach rechts und umgekehrt. Nun wenn ich die 
Richtung wechsel muss ich den Taster zweimal drücken bevor er die 
richtung wechselt obwohl er den Tastendruck erkennt hier mal den code:
1
Dim Status As Byte
2
Dim Tasterzustand1 As Byte
3
Dim Tasterzustand2 As Byte
4
5
6
Do
7
8
If Taster1 = 0 And Tasterzustand1 = 0 Then
9
Tasterzustand1 = 1
10
11
End If
12
If Taster1 = 1 And Tasterzustand1 = 1 Then
13
Tasterzustand1 = 0
14
   If Status = 0 Then
15
      Led1 = 1
16
      Led2 = 0
17
      Led3 = 0
18
      Led4 = 0
19
      Status = 1
20
   Elseif Status = 1 Then
21
      Led1 = 0
22
      Led2 = 1
23
      Led3 = 0
24
      Led4 = 0
25
      Status = 2
26
   Elseif Status = 2 Then
27
      Led1 = 0
28
      Led2 = 0
29
      Led3 = 1
30
      Led4 = 0
31
      Status = 3
32
   Else
33
      Led1 = 0
34
      Led2 = 0
35
      Led3 = 0
36
      Led4 = 1
37
      Status = 0
38
   End If
39
End If
40
41
If Taster2 = 0 And Tasterzustand2 = 0 Then
42
   Tasterzustand2 = 1
43
End If
44
45
If Taster2 = 1 And Tasterzustand2 = 1 Then
46
   Tasterzustand2 = 0
47
   If Status = 0 Then
48
      Led1 = 0
49
      Led2 = 0
50
      Led3 = 0
51
      Led4 = 1
52
      Status = 3
53
   Elseif Status = 1 Then
54
      Led1 = 1
55
      Led2 = 0
56
      Led3 = 0
57
      Led4 = 0
58
      Status = 0
59
   Elseif Status = 2 Then
60
      Led1 = 0
61
      Led2 = 1
62
      Led3 = 0
63
      Led4 = 0
64
      Status = 1
65
   Else
66
      Led1 = 0
67
      Led2 = 0
68
      Led3 = 1
69
      Led4 = 0
70
      Status = 2
71
   End If
72
End If
73
Loop
kann mir jemand bei meinen problem helfen?
Mfg. ILM
von Karl H. (kbuchegg)


Lesenswert?

ILM schrieb:

> kann mir jemand bei meinen problem helfen?

Schau dir Subroutinen und den DEBOUNCE Befehl an.
Zusätzlich zum STatus führst du noch eine weitere Variable ein, die eine 
Aussage darüber erlaubt, ob dein 'Lauflicht' links herum oder rechts 
herum laufen soll. Die Umschaltung dieser Variablen erfolgt dann in der 
Subroutine, die von DEBOUNCE angesprungen wird, wenn ein Tastendruck 
erkannt wird. Abhängig von dieser Variablen zählst du dann in der 
Hauptschleife deine Statusvariable um 1 hoch oder verringerst sie um 1. 
Eine der beiden if then else if Ketten brauchst du dann nicht mehr.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.