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







Zitieren


Lesezeichen