PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Led mit einem taster an und aus schalten ?? brauche hilfe



Asuro91
27.01.2010, 20:30
hallo zusammen

ich habe ein problem ich will mit einem taster eine led an und aus schalten und das alles mit einem atmel mega32 und in bascom .... hab schon en paar sachen versucht aber komm nicht darauf ](*,) wei man das in bascom programmieren kann würde mir freuen wenn mir jemand helfen könnte.
danke schon mal im voraus..
lg micha

Spessi
27.01.2010, 21:59
http://www.rn-wissen.de/index.php/Bascom#Einen_I.2FO_Port_umschalten

Lg

Neutro
28.01.2010, 19:40
Wenn du das so meinst das beim ersten Tastendruck die LED eingeschaltet wird und beim erneuten Tastendruck des Tasters wieder erlischt dann macht man das so:

Pin x.Y as input
portx.y as output

do
If pinx.y = 0 then
wait ms 100
toggle port x.y
end if

loop

für den Eingangspin sollte dann noch der interne pull up aktiviert werden damit der Controller ein low signal erkennt

Gruß

Neutro

Asuro91
28.01.2010, 21:43
hey danke für die schnelle antwort
@Neutro ich hab deine Beispiel mal kurz getestet funktoniert nicht so wie ich das gerne hätte wenn ich kurz auf den taster drücke schaltet er ein das is ja schon mal richtig drücke ich aber den taster nur kurze zeit später noch ein mal so schlatet die Led nicht aus .....weiß nicht woran das liegt .. fals jemand eine idee hat??
lg micha

lokirobotics
29.01.2010, 13:27
Pin x.Y as input
portx.y as output

do
if pinx.y=0 then
while pinx.y = 0
wend
toggle port x.y
end if
loop

MfG Loki

Richard
29.01.2010, 13:37
Da wird der Taster prellen, kann klappen muß aber nicht.
Es gibt bei Bascom einen Befehl zum entprellen, habe den aber
nicht im Kopf irgendetwas mit Debonce oder ähnlich.

Gruß Richard

lokirobotics
29.01.2010, 13:58
Ja, das stimmt. Also nochmal. XD


Pin x.Y as input
portx.y as output
do
if pinx.y=0 then
waitms 10
if pinx.y=0 then
while pinx.y = 0
wend
toggle port x.y
end if
end if
loop

So richtig schön ist das zwar nicht, aber das sollte nun funzen.
@Richard: Danke für die Anmerkung.

MfG Loki

Asuro91
30.01.2010, 00:26
hey dacke ich werde es mal testen und schauen ob es so funktoniert wie ich des dachte
lg micha

finn31224
30.01.2010, 04:18
entprell den taster doch einfach mit nem kleinen Kondensator?
Spart software-aufwand ^^

Neutro
30.01.2010, 09:15
Das entprellen des Tasters wird in dem Programmbeispiel von mir weiter oben bereits duch den waitms 100 Befehl realisiert. Ein softwareseitiges entprellen ist aber immer einfacher als ein hardwaremäßiges da weniger Bauteile benötigt werden und sich an der Software leichter Veränderungen vornehmen lassen. Aber es geht auch mit einem Kondensator.
Vielleicht wurde auch das "Config" das in allen Beispielen fehlt vergessen einzufügen.

config Pin x.Y as input
config portx.y as output
portx.Y = 1 'internen pull up setzen für den Eingang
portx.y = 1 'Ausgangspin mit LED einschalten
do
If pinx.y = 0 then
wait ms 100
toggle port x.y
end if

loop

Ich habe das jetzt mal eingefügt.
@Asuro91: schick uns doch mal dein Programm her dann können wir gezielter nach dem Fehler suchen und helfen. Ein Schaltplan wäre auch nicht schlecht, vielleicht liegt der Fehler ja auch hier.

Gruß

Neutro

lokirobotics
31.01.2010, 02:17
@Neutro: Ich würde noch ne while-Schleife einfügen, um zu warten, bis der Benutzer den Taster wieder losgelassen hat. Sonst fängt die LED an mit 10Hz zu blinken, wenn man zu lange drückt.

Asuro91
31.01.2010, 17:25
Hi
ja des hab ich auch schon gemerkt danke, hab mich nämlich am anfang gewundert weil die immer geblinkt hat
lg micha