PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfänger Problem



smookie
20.06.2006, 18:26
Hi ich habe da mal ein Problem

ich fange gerade mit der programmierung von atmels in Basic an und möchte nun gern eine Steureung programmieren die dafür sorgt das ein Fahrzeug einer linie folgt soweit so gut. aber das Fahrzeug soll wenn es an bestimmte punkte kommt für eine gewisse zeit stehen bleiben. dafür wird von einem Sensor ein Eingang auf 1 geschaltet bleibt aber auch so geschaltet nun soll eine Zeit ablaufen und das Fahrzeug weiter fahren. bis jetzt hab ich es nur geschaft das die Zeit abläuft wenn der Eingang wieder auf null liegt.

Ich hoffe ihr könnt mir Helfen

smookie

Vitis
20.06.2006, 18:29
Tip:
Timer und Interrupt rising faling

smookie
20.06.2006, 20:22
die beiden Begriffe sagen mir zur zeit nicht viel da ich wie gesagt ein absoluter anfänger bin :?

molleonair
20.06.2006, 20:26
na du mußt doch bloß deine schon vorhandene eingangsabfrage negieren
für IF pina.1 = 0 machste IF pina.1 =1
Und wenn du mit dem internen Timer (nicht wait Befehle) und interrupt arbeitest dann siehe vitis

ansonsten poste mal den codeteil

smookie
20.06.2006, 20:34
Config Portd.5 = Output
Led1 Alias Portd.5
Config Pind.2 = Input

Taster1 Alias Pind.2
Config Portd.6 = Output
Led2 Alias Portd.6

Config Pind.3 = Input
Taster2 Alias Pind.3

Config Pind.4 = Input
Taster3 Alias Pind.4
Portd.5 = 0
Portd.6 = 0

Do
If Taster3 = 0 Then

If Taster1 = 1 Then
Gosub Pulse1
Else
Led1 = 0
End If

If Taster2 = 1 Then
Gosub Pulse2
Else
Led2 = 0
End If

Else
Reset Led1
Reset Led2
Wait 2
End If
Waitms 100

Loop


Pulse1:
Led1 = 1
Waitms 20
Led1 = 0
Waitms 20
Return

Pulse2:
Led2 = 1
Waitms 20
Led2 = 0
Waitms 20
Return

Das ist mal das Gesamte Programm.
Wenn ich Taster3 drücke werden in dem Moment wo ich ihn los lasse alle amdere Eingangs Signale für 2 Sekunden blokiert. Aber ich habe an dem Taster3 in dem Moment wo er blockieren soll ein dauer Signal das ist mein problem
Hoffe ich stell mich nich total blöd an :oops:

€: wenn ich den taster3 gedrückt halt passiert gar nichts.

molleonair
20.06.2006, 20:48
ist der taster 3 gegen masse geschaltet oder gegen 5V ?

davon mal abgesehn erklär mal wie das programm arbeiten soll


und reset led1 ist das gleiche wie led1=0

smookie
20.06.2006, 20:51
der taster 3 sowie die anderen ist gegen 5V geschaltet

molleonair
20.06.2006, 21:00
wenn du eine abfrage einmal abgearbeitet haben willst setzt dir einen merker
zb

do
...

if taster = 1 then gosub warteschleife (wenn taster gedrückt)
if taster =0 then a=0 (wenn taster losgelassen dann merker wird zurückgesetzt)
loop

warteschleife:
if a=0 then wait 2
a=1 ( merker wird gesetzt )
return

smookie
20.06.2006, 21:04
könnte ich dann in den unterpunkt warteschleife auch gleich ein abschalten der beiden ausgänge mit einbauen?


mir ist gerade noch eine andere idee gekommen gibt es eine möglichkeit extern also mit bauelementen aus dem dauersignal einen kurzen impuls zu machen.

schonmal vielen dank

molleonair
20.06.2006, 21:22
extern ist aufwendig und blödsinn:

oder mach halt so

do

code
..
if taster3=1 then (wenn taster gedrückt
if a=0 then gosub xyz ( und vorher auf 0 war springe xyz )
endif
a=0

code ...
loop

xyz:
hier kannst du alles reinschreiben was passieren soll wenn der taster gedrückt wurde

a=1
return

smookie
21.06.2006, 16:56
es funktioniert genau so wie ich es haben möchte nochmal vielen dank für die hilfe

smookie