Gobstar
05.03.2012, 21:41
Halo Leute, lang ist es her seitdem ich mit Bascom programmiert habe, deshalb bitte ich euch um Hilfe, denn ich stehe ein wenig auf dem Schlauch.
Zum Projekt, es wird mittels eines Piezzoelementes eine Vibration gemessen. Der Piezzo wird verstärkt so dass er Signale von 0-5V liefewrt, kein perfektes TTL, aber für meine Zwecke reicht es.
Also gehen wir davon aus, es wurden per Interrupt ca. 200 Ausschläge gemessen, dann soll ein Servo, der sich am Anfang in Position 0 befindet, am besten mit Stromloser Regelung (er braucht in dieser Position kein Haltemoment) auf 180° fahren, kann anschließend wieder Stromlos werden, zwei Sekunden warten und wieder auf Position 0 fahren. Das wars.
Hier mal mein erster Versuch, allerdings mit ständiger bestromung und der Servo zuckt wenn innerhalb der 2 Sekunden Wartezeit weitere Interrupts ausgelöst werden und das will ich natürlich vermeiden, deshalb auch Stromlos.
Ich hoffe ihr könnt mir helfen, es ist nicht mehr als ein Schieber der für 2 Sekunden bei genügend Vibration ausgefahren wird und sich anschließend wieder einziehen soll, achja, ich will den Wert bei dem durch Vibration ausgelöst wird noch hochzählen, dass es immer länger geht bis wieder etwas passiert.
$regfile = "2313def.dat"
$crystal = 4000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
Dim Count As Integer
Dim I As Byte
Dim J As Integer
Config Servos = 1 , Servo1 = Portb.0 , Reload = 100 , Interval = 100
Config Int1 = Rising
On Int1 Changeservo
Enable Int1
Enable Interrupts
I = 6
J = 200
Count = 0
Do
Servo(1) = I
If I = 22 Then
Waitms 2000
Do
I = I - 1
Servo(1) = I
Loop Until I = 6
End If
Loop
Changeservo:
Count = Count + 1
If Count > J Then
J = J + 1
I = 22
Count = 0
End If
Return
Gruß
Stefan
Zum Projekt, es wird mittels eines Piezzoelementes eine Vibration gemessen. Der Piezzo wird verstärkt so dass er Signale von 0-5V liefewrt, kein perfektes TTL, aber für meine Zwecke reicht es.
Also gehen wir davon aus, es wurden per Interrupt ca. 200 Ausschläge gemessen, dann soll ein Servo, der sich am Anfang in Position 0 befindet, am besten mit Stromloser Regelung (er braucht in dieser Position kein Haltemoment) auf 180° fahren, kann anschließend wieder Stromlos werden, zwei Sekunden warten und wieder auf Position 0 fahren. Das wars.
Hier mal mein erster Versuch, allerdings mit ständiger bestromung und der Servo zuckt wenn innerhalb der 2 Sekunden Wartezeit weitere Interrupts ausgelöst werden und das will ich natürlich vermeiden, deshalb auch Stromlos.
Ich hoffe ihr könnt mir helfen, es ist nicht mehr als ein Schieber der für 2 Sekunden bei genügend Vibration ausgefahren wird und sich anschließend wieder einziehen soll, achja, ich will den Wert bei dem durch Vibration ausgelöst wird noch hochzählen, dass es immer länger geht bis wieder etwas passiert.
$regfile = "2313def.dat"
$crystal = 4000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
Dim Count As Integer
Dim I As Byte
Dim J As Integer
Config Servos = 1 , Servo1 = Portb.0 , Reload = 100 , Interval = 100
Config Int1 = Rising
On Int1 Changeservo
Enable Int1
Enable Interrupts
I = 6
J = 200
Count = 0
Do
Servo(1) = I
If I = 22 Then
Waitms 2000
Do
I = I - 1
Servo(1) = I
Loop Until I = 6
End If
Loop
Changeservo:
Count = Count + 1
If Count > J Then
J = J + 1
I = 22
Count = 0
End If
Return
Gruß
Stefan