Deine "Taster=1" Befehle unterbrechen das Leuchten einer Farbe immer nur für 50 mS. das ist nicht wirklich lange, da siehst du nix blinken.
Schreib mal Waitms 500 ( halbe Sekunde), dann wirst du mehr erkennen
hi,
ich wollte ein Script schreiben, das die LED#s blinken lässt, wenn ein Schalter gedrückt ist. Ich habe folgenden Code geschrieben:
Nur läuchten nun beim Drücken des tasters alle 3 Led's und beim Loslassen blinken sie,...was mach ich falsch?Code:$regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 Config Portd.7 = Output Config Portc.1 = Output Config Portc.0 = Output Config Pina.7 = Input Taster Alias Pina.7 Rot Alias Portd.7 Gelb Alias Portc.1 Gruen Alias Portc.0 Porta.7 = 1 Rot = 0 Gelb = 0 Gruen = 0 Do If Taster = 1 Then Rot = 0 Waitms 50 Rot = 1 Waitms 50 Gelb = 0 Waitms 50 Gelb = 1 Waitms 50 Gruen = 0 Waitms 50 Gruen = 1 Waitms 50 Gelb = 0 Waitms 50 Gelb = 1 Waitms 50 Else Rot = 0 Gelb = 0 Gruen = 0 End If Loop End
Deine "Taster=1" Befehle unterbrechen das Leuchten einer Farbe immer nur für 50 mS. das ist nicht wirklich lange, da siehst du nix blinken.
Schreib mal Waitms 500 ( halbe Sekunde), dann wirst du mehr erkennen
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
daran liegts nicht...wenn ich das IF zeugs weg lasse blinken sie ja auch...
Ich vermute mal, daß du den Input-Pin mit dem Pullup auf +5 V ziehst und mit dem Taster bei Betätigung auf GND. Das wär zumindest üblich.
Dann ist deine Abfrage aber genau verkehrt
If Taste = 0 Then ' TASTE GEDRÜCKT
ELSE
' nicht gedrückt.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Bei den meisten Boards muss man sowohl bei den Tastern als auch bei den LED´s "umdenken": Die Taster sind i.d.R. nach Masse geschaltet, d.h. wenn Du ihn drückst, geht der Eingang auf Low. Deshalb ist ja auch der PullUp-Widerstand so wichtig, den Du mit "Porta.7=1" gesetzt hast. Der zieht den Eingang auf ein sauberes high, wenn der Taster offen ist.
In Kurzform: Taster gedrückt = Eingang low, Taster offen = Eingang high.
Das erklärt schonmal, weshalb die LEDs blinken, wenn der Taster nicht gedrückt ist.
Dass sie alle angehen wenn der Taster nicht gedrückt ist wird wohl daran liegen, dass sie von den Ausgängen nicht nach "Minus", sondern nach "Plus" geschaltet sind. Damit leuchten die LEDs, wenn der Ausgang low ist.
Ändere Deinen Code doch mal dahin ab, dass Du Rot, Gelb und Gruen als 1 setzt, die Blink-Schleife laufen lässt, wenn Pina.7 0 ist, und unter "Else" Rot, Gelb und Gruen auf 0 setzt.
Oops - @ PickNick: Da haben wir wohl ziemlich gleichzeitig geschrieben...![]()
immer noch das gleiche
@Sauerbruch:
so???Code:$regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 Config Portd.7 = Output Config Portc.1 = Output Config Portc.0 = Output Config Pina.7 = Input Taster Alias Pina.7 Rot Alias Portd.7 Gelb Alias Portc.1 Gruen Alias Portc.0 Porta.7 = 1 Rot = 1 Gelb = 1 Gruen = 1 Do If Taster = 0 Then Rot = 0 Waitms 50 Rot = 1 Waitms 50 Gelb = 0 Waitms 50 Gelb = 1 Waitms 50 Gruen = 0 Waitms 50 Gruen = 1 Waitms 50 Gelb = 0 Waitms 50 Gelb = 1 Waitms 50 Else Rot = 0 Gelb = 0 Gruen = 0 End If Loop End
da passiert immer noch das gleiche...
ich habe im Grunde die Schaltung mit 3 Led's:
https://www.roboternetz.de/wissen/im...g_mitquarz.gif
Einzelne Pins konfigurieren sollte man übrigens mit config pin.x
Siehe Bascom Hilfe.
Du läßt immer noch alle Leds leuchten, wenn der Schalter offen ist:
Rot = 0
Gelb = 0
Gruen = 0
Gruß
Christopher
Wenn ich es so abändere immer noch das gleiche:
Code:Else Rot = 0 Gelb = 0 Gruen = 0 End If Loop End
@tuxianer:
im Schaltplan isses genau so: Taster nach masse, LED´s nach +5V. Wenn Du jetzt noch im "Else"-Teil Rot, Gelb und Gruen auf 1 setzt (wie chr-mt schrieb), müsste es klappen...
Rot = 0: LED an
Rot = 1: LED aus!!
Ist komisch aber wahr...
Lesezeichen