Leopard.basHallo an alle da Draußen
Ich bin hier als Neuling mit einem Problem und hoffe auf eure Hilfe.
Zur Vorgeschichte , mit dem Programm das ich geschrieben habe (ich komme leider nur mit Bascom zurecht weil ich früher schon mal mit Basic rumgespielt habe , von C+ und Assembler keine Ahnung ) sollen folgende Abläufe abgearbeitet werden.
1. Das Prog wartet auf den Befehl "Start" durch Fernsteuerung (Taster)
|
|
Funktioniert
|
|
2. Wenn Start erfolgt soll ein Motor über ein Relais (D91A.1.0 , Typ Readrelais) für eine vordefinierte Zeit anlaufen.
|
|
Funktioniert
|
|
3.Unmittelbar danach soll ein Servo mit der Geschwindigkeit x zum Anschlag fahren dann mit watms12 x-1 zurück.
|
|
macht das Prog nicht es dauert in etwa 1-1,5 Sekunden zwischen Motoraus und Servostart (gewünscht 0 Sekunden)
ehe der Befehl Ausgeführt wird
|
|
4. Der Motor soll wieder für eine vordefinierte Zeit anlaufen um zum Ausgagspunkt zurück zu kehren .
|
|
Macht das Prog , aber leider nicht immer sporadisch lässt es diesen Teil komplett weg.
|
|
5.Prog kehrt zum Ausgang zurück und wartet auf nächsten Impuls.
|
|
Funktioniert
Hier der Quelltext:
Code:
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 16
$swstack = 8
$framesize = 24
Config Portb.2 = Input
Config Portb.1 = Output
Config Portb.0 = Output
Do 'endlosschleife
Do 'erste für motor 12V
Dim W As Integer 'Variable festlegen
Pulsein W , Pinb , 2 , 1 'Abfrage Fernsteuerung
If W <= 150 Then 'alles unter 150 (cirka die Mitte) keine Aktion
Portb.1 = 0 'port bleibt aus
End If
If W > 150 And W <= 200 Then 'alles über 150 und unter 200 Setzt port PB1 auf 5V
Portb.1 = 1
End If
Waitms 1500 '1,5 Sekunden Warten dann PB1 auf 0V
Portb.1 = 0
Loop Until W > 150 'aus der ersten Schleife springen wenn W größer 150 ist
Hier dritt die Wartezeit auf obwohl keine engetragen ist
Do 'zeite für Servosteuerung
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10 'servo configurieren
Enable Interrupts 'Interrupts einschalten
Dim I As Byte
For I = 100 To 200
Servo(1) = I
Next I
For I = 200 To 100 Step -1
Servo(1) = I
Waitms 12
Next I
Disable Interrupts 'Ganz wichtig was du anschaltest solltest du auch ausschalten
I = 100
Loop Until I = 100 'aus der zweiten Schleife springen wenn I größer 100 ist
Das Teil wird Sporadisch komplett ausgelassen
Dim Z As Integer 'wert für Aussprung aus der dritten schleife festlegen
Z = 0
For Z = 1 To 300
Next Z
Portb.1 = 1 'PB1 auf 5V setzen
Waitms 1500 '1,5 Sekunden Warten dann PB1 auf 0V setzen
Portb.1 = 0
Loop Until Z = 300
Wenn ihr mir helfen könntet könnte ich das Projekt abschließen.
Grüße Henry
Lesezeichen