PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LEDs mit Tastern steuern



Kampi
06.12.2009, 21:49
Hallo
Ich hab mir mal für mein RN-Controllboard 1.4 ein Programm gebastelt um 5 von den 6 Tastern zu benutzen um die LEDs an und aus zu machen.
Nur sobald ich das Programm hochlade sind alle 5 LEDs an und das mit den Tastern funktioniert nicht.

$regfile = "m32def.dat"
$crystal = 16000000

Speaker Alias Portd.7
Declare Function Tastenabfrage() As Byte
Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Portc.7 = Output
Config Portc.6 = Output
Config Portc.5 = Output
Config Portc.4 = Output
Config Portc.3 = Output
Blink_led Alias Portc.7
Blink_led2 Alias Portc.6
Blink_led3 Alias Portc.5
Blink_led4 Alias Portc.4
Blink_led5 Alias Portc.3

Dim Taste As Byte
Const Ref = 5 / 1023

Function Tastenabfrage() As Byte

Local Ws As Word
Tastenabfrage = 0
Start Adc
Ws = Getadc(0.)

End

If Ws < 1010 Then

Select Case Ws

Case 410 To 450
Tastenabfrage = 1
Blink_led = 1

Case 340 To 380
Tastenabfrage = 2
Blink_led2 = 1

Case 265 To 305
Tastenabfrage = 3
Blink_led3 = 1

Case 180 To 220
Tastenabfrage = 4
Blink_led4 = 1

Case 100 To 130
Tastenabfrage = 5
Blink_led5 = 1

End Select
End If
End Function

Das ist der Code. Findet da jemand einen Fehler? Oder sind evtl nur die Werte für den Case falsch.

Jaecko
06.12.2009, 22:15
Das Programm kann nicht gehen, da es nach der Zeile "Ws = Getadc(0.) " durch das "END" abgebrochen wird.

Ne Endlosschleife gibts auch nirgendwo, also wirds nur ein einziges mal durchlaufen, wenn das END weg ist.

Kampi
06.12.2009, 22:19
mmmh hab das End weggemacht und nun gehen sobald ich das Programm übertrage 5 LEDs nach einer kurzen Zeit nacheinander aus.

Jaecko
06.12.2009, 22:30
Joa, weil immer noch keine Endlosschleife da ist. Das Programm läuft genau 1x durch und dann is Ende.
Es muss also noch ein Do Loop um den Teil, der wiederholt werden soll.

Kampi
06.12.2009, 22:38
Hab ich nun gemacht. Aber eine andere Frage. Für die 6 Taster auf dem Board muss ich da eine Spannung für anlegen oder nimmt er die Spannung mit der das Board versorgt wird (in meinem Fall die USB Spannung)?

Sauerbruch
07.12.2009, 07:03
Ich weiss ja nicht wie das bei diesem spetziellen Board ist - im allgemeinen gehen Taster aber nach GND und brauchen somit gar keine Spannung. Das ist praktischer, weil die µC´s PullUp-Widerstände eingebaut haben.

Bei Deinem Code ist mir aber noch aufgefallen, dass Du die Variablen Blink_led nirgendswo mehr auf 0 zurücksetzt. D.h. einmal 1 = immer 1.

Soll das so sein?

Kampi
07.12.2009, 07:35
Also bei dem Board ist das so das da eine Reihenschaltung aus 7 Widerständen ist die an 5V anliegen. Die Taster sind zwischen den widerstanden angebracht so das an T1 die Spannung vom 10k und dem 1k anliegt und an T2 dann 10k 1k und nochmal 1k. Und das geht dann immer so weiter.

Und ja den Fehler mit nicht zurücksetzen der LEDs hab ich heute morgen auch gesehen.