Was für ne fernsteuerung hast du ? Funktioniert die richtig ??
Ja, funktioniert richtig ,da ich ja sonst keine sinnvollen Ergebnisse herausbekommen würde.
Kann man evtl die Wege der
Servos einstellen oder sogar anzeigen lassen ?
Nein.
Meine Funke bringt bei Einstellung > "100% Servoweg" Ergebnisse von : 110<>150<>190
Meine auch in etwa.
Ich habe jetzt mal den Ausprobiert :
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
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.
Es funktioniert einfach nicht zusammen. Denn getrennt funktioniert alles.
Lesezeichen