Fehlt wohl mindestens noch ein Loop und End, oder?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 Waitms 1500 'besser hier warten, oder?? 1,5 Sekunden Warten dann PB1 auf 0V 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 'waitms 12 '?? oder höher wählen Next I For I = 200 To 100 Step -1 Servo(1) = I Waitms 12 '?? oder höher wählen 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 'diese und nächste Zeile sind unsinnig 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 'unsinnig mit For Z Schleife vorher - Z ist bereits 300 loop end
Wenn keine Wartezeit gewünscht ist dann sollte sie auch nur in einen optional aktiven Block gesetzt werden.
Variablen können am Anfang des Codes gesetzt werden wenn sie eine bestimmte Nutzung haben sollen.
Ich würde dir empfehlen mit dem Pulseout Befehl zu arbeiten anstatt den Servobefehl zu benutzen.







Zitieren


Lesezeichen