PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Taster-Spannung auslesen mit RN-Control und BASIC



Torrentula
05.04.2010, 20:18
Hi ich bins mal wieder!

Ich habe aus einem alten Computer einen Taster ausgebaut und möchte ihn nun als "Bumper" verwenden. Um das Funktionsprinzip zu verstehen, möchte ich den Taster auf Spannung legen und wenn der Taster gedrückt ist, soll eine LED leuchten.

Wie mache ich das?

Gruß Torrent

Del
06.04.2010, 07:39
Indem du permanent der Zustand des Pins abfragst an dem der Taster hängt.

Torrentula
06.04.2010, 07:49
Und wie mache ich das? Mit Getadc? Oder mit if portx.y = 0 then ..... else .....?

HELP!

Gruß
Torrent

Kampi
06.04.2010, 10:16
Naja wenn du jetzt nur abfragen willst ob der Taster gedrückt wurde oder nicht (also eine 1 oder 0 Abfrage) und du den Taster als Schließer verwendest (also den Taster an 5V anschließt und den anderen Pin an einen Pin vom Microcontroller), dann schreibst du:

Config PinD.0 = Input (Pin D.0 ist nur ein Beispiel)
Config PortD.1 = Output (An D.1 ist die LED mit dem Pluspol)

If PinD.0 = 1 then PinD.1 = 1 else PortD.1 = 0
Waitms 1000 (Die Zeit kann variieren je nachdem wie lange die LED anbleiben soll)

Torrentula
06.04.2010, 14:53
Ja, ich meinte eine einfache 1/0 Abfrage! vielleicht habe ich mich nicht deutlich genug ausgedrückt.....


Vielen Dank!

Torrentula

Torrentula
06.04.2010, 15:22
Dieser Code:




$regfile "m32def.dat"
$crystal = 1600000
$baud = 9600


Config Pind.0 = Input
Config Portd.1 = Output


Do

If Pind.0 = 1 Then Portd.1 = 1 Else Portd.1 = 0


Wait 1
Loop
End


reagiert, aber auf PD1 ist permanent Spannung. Wenn ich den Taster dann an Pind.0 anschließe und ihn betätige, ändert sich die Farbe der LED, obwohl sie jetzt erst angehen sollte - aber sie ist halt permanent an. Wieso?

More HELP!

Torrentula

[EDIT]

Die LED hängt mit Plus am Controler und mit minus an GND

Kampi
06.04.2010, 16:27
Config Portd.0 = Input
Portd.0 = 1
Config Pind.1 = Output

Do

If Portd.0 = 1 Then Pind.1 = 1 Else Pind.1 = 0
Wait 1
Loop

Schreib das mal so.....

chr-mt
06.04.2010, 18:27
Hi, laß mal das "baud=9600" weg,
sonst funktionieren die Pins D.0 und D.1 nicht so,
da sie für den UART konfiguriert sind.
(D.0 = RXD, D.1 = TXD)

@Kampi:
Ausgänge immer mit Port setzen, nicht mit Pin, Eingänge lesen immer mit "pin".

Ich würde das auch nicht in eine Zeile schreiben, sondern einrücken.

Übrigens ist das "wait" auch am falschen Platz, da der Controller immer in diese Warteschleife läuft.

Falls der Taster gegen GND geschaltet wird, fehlt noch der interne Pullup.

Wenn ich den Taster dann an Pind.0 anschließe und ihn betätige, ändert sich die Farbe der LED
Du hast hoffentlich einen Vorwiderstand an der LED ?

Wenn die LED ihre Farbe ändert heißt das eigentlich, daß sie gerade am sterben ist... wenn du das dann länger so betreibst könnte dir das der Controller übelnehmen.

Gruß
Christopher

Kampi
06.04.2010, 18:48
@Kampi:
Ausgänge immer mit Port setzen, nicht mit Pin, Eingänge lesen immer mit "pin".



Mist ich verwechsel das immer wieder ^.^

chr-mt
06.04.2010, 18:52
Mist ich verwechsel das immer wieder ^.^
Kann einem auch immer noch passieren, wenn man schon Jahre lang programmiert und nicht aufpasst ... :mrgreen:

Gruß
Christopher

Torrentula
08.04.2010, 12:13
Gut gut!

und.. zusammengefasst in einen Code sähe das dann wie aus?

Zum Vorwiderstand:

welchen vorwiderstand müsste ich verwenden?

Kampi
08.04.2010, 14:23
Vorwiderstand bei 5V ist bei einer roten LED 330 Ohm.
LED verträgt 15mA also
R=U/I
R=5V/15x10^-3A
R=333
Als Widerstand nimmst du dann einen 330er.

Der Code ist dann auch recht einfach.
$regfile ="m32def.dat"
$Crystal= 16000000

Config PortD.1 = Output
Config PinD.0 = Input

Do
If PinD.0 = 1 then PortD.1 = 1 else PortD.1 = 0
Waitms 1000
Loop

End

So der Code dürfte eigentlich funktionieren (bin auf der Arbeit und kann es nicht testen :) ).
Denke die Zeilen dürften sich von selbst erklären, falls nicht einfach sagen.

Torrentula
08.04.2010, 17:03
Mit



Dim Portc.1 = Output 'Ich möchte die auf die LEDs auf dem Board benutzen
Dim PinD.0 = Input


Sagt BASCOM: "AS exspected [PORTC.1]" und "AS exspected [PIND.0]"

Müsste anstatt "Dim" nicht "Config" stehen?

:-s Torrentula :-s

Kampi
08.04.2010, 18:25
Ahhhh sorry......ja hast recht muss Config sein

Torrentula
08.04.2010, 19:21
Jo, funzt! Danke an alle die mir geholfen haben!

Gruß

Torrentula