Ja, funktioniert richtig ,da ich ja sonst keine sinnvollen Ergebnisse herausbekommen würde.Was für ne fernsteuerung hast du ? Funktioniert die richtig ??
Nein.Kann man evtl die Wege der Servos einstellen oder sogar anzeigen lassen ?
Meine auch in etwa.Meine Funke bringt bei Einstellung > "100% Servoweg" Ergebnisse von : 110<>150<>190
Ich habe jetzt mal den Ausprobiert :
Und bekomme keine Fehlermeldung ,doch es läuft nix.Selbst das Summen hat aufgehört. Ich bekomme nur Werte von der Geschwindigkeit je nach Knüppelstellungen angezeigt.Code:$regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 $hwstack = 32 $swstack = 32 $framesize = 32 Config Portd.7 = Output Config Pind.2 = Input ' Signal 1(a) vom RC-Empfänger Config Pind.3 = Input ' Signal 2(b) vom RC-Empfänger Config Portc.6 = Output 'Motor links Config Portc.7 = Output 'Motor links Config Portb.0 = Output 'Motor rechts Config Portb.1 = Output 'Motor rechts Config Portd.4 = Output 'PWM links Config Portd.5 = Output 'PWM rechts Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8 Dim Rckanal_a As Word Dim Rckanal_b As Word Dim Motor As Byte ' 1=Motor1 / 2=Motor2 /... Dim Drehrichtung As Byte ' 0= Bremsen / 1=links / 2=rechts Drehrichtung = 1 ' Drehrichtung >>>jetzt manuell auf Links gestellt <<< Dim Geschwindigkeit As Word ' Motorgeschwindigkeit Geschwindigkeit = 0 ' Motorgeschwindigkeit anfangs auf 0 Declare Sub Motorsteuerung(byval Motor As Byte , Byval Drehrichtung As Byte , Byval Geschwindigkeit As Word) Sound Portd.7 , 400 , 450 Sound Portd.7 , 400 , 250 Sound Portd.7 , 400 , 450 Wait 2 Do ' Wert vom RC-Empfänger abfragen und weitergeben Pulsein Rckanal_a , Pind , 2 , 1 ' Wert vom Kanal 1...Motor 1. Motor = 1 Geschwindigkeit = Rckanal_a Call Motorsteuerung(motor , Drehrichtung , Geschwindigkeit) 'Daten an Subroutine/Motorsteuerung übergeben ' Subroutine hat Motor bearbeitet... weiter zum nächsten ' Wert vom RC-Empfänger abfragen und weitergeben Pulsein Rckanal_b , Pind , 3 , 1 ' Wert vom Kanal 2...Motor 2. Motor = 2 Geschwindigkeit = Rckanal_b Call Motorsteuerung(motor , Drehrichtung , Geschwindigkeit) 'Daten an Subroutine/Motorsteuerung übergeben ' Subroutine hat Motor bearbeitet... weiter zum nächsten Loop End Sub Motorsteuerung(byval Motor As Byte , Byval Drehrichtung As Byte , Byval Geschwindigkeit As Word) Select Case Geschwindigkeit Case 90 To 140 Geschwindigkeit = 600 Drehrichtung = 1 Case 160 To 200 Geschwindigkeit = 500 Drehrichtung = 2 Case Else Geschwindigkeit = 0 Drehrichtung = 0 End Select Select Case Motor ' Welcher Motor soll gesteuert werden ? Case 1 : Select Case Drehrichtung ' wenn Motor1, in welche richtung soll er drehen ? Case 0 : Portc.6 = 0 ' Ports für Drehrichtung setzen Portc.7 = 0 Case 1 : Portc.6 = 1 Portc.7 = 0 Case 2 : Portc.6 = 0 Portc.7 = 1 Case Else Print "Fehler1-Drehrichtung" ' bei ungültigen Werten fehler anzeigen End Select Pwm1a = Geschwindigkeit Print "Geschwindigkeit1:_" ; Geschwindigkeit ' Geschwindigkeit Motor 1 regeln Case 2 : Select Case Drehrichtung ' wenn Motor2, in welche richtung soll er drehen ? Case 0 : Portb.0 = 0 ' Ports für Drehrichtung setzen Portb.1 = 0 Case 1 : Portb.0 = 1 Portb.1 = 0 Case 2 : Portb.0 = 0 Portb.1 = 1 Case Else Print "Fehler2-Drehrichtung" ' bei ungültigen Werten fehler anzeigen End Select Pwm1b = Geschwindigkeit Print "Geschwindigkeit2:_" ; Geschwindigkeit ' Geschwindigkeit Motor 2 regeln Case Else Print "Fehler-Motor" ' bei ungültigen Werten fehler anzeigen End Select Print "Geschwindigkeit:_" ; End Sub
Es funktioniert einfach nicht zusammen. Denn getrennt funktioniert alles.







Zitieren

Lesezeichen