Hallöchehen an alle!
Ich hab ein kleines Problem...
Ich wollte mir selber einen kleinen Roboterarm bauen, gaanz einfach mit 6 Servos
Diesen will ich via PC seriell steuern und dachte mir, warum denn nicht ´nen kleinen Atmega dafür nehmen.
Ich habe die Hardware komplett aufgebaut (ATmega8, FT232R, 6 Modellbau Servos, und eine Hand voll LEDs)
Die Servos lassen sich ganz normal über die jeweiligen Konstanten anstprechen.
Nun komme ich zu meinem Problem:
sobalt ich versuche, einen String einzulesen und zu verarbeiten, spinnen die Servos total rum.
Erst dachte ich an ein Hardware Problem, leider kann ich dies nach eineigen Tests ausschließen.
Der String der eingelesen werden soll sieht quasi so aus :
"# 1P500 # 2P500 # 3P500 # 4P500 # 5P500 # 6P500 T150" (Habe mich da ein wenig an den käuflichen China-Servo-Controllern orientiert)
Der String den ich nach der Auswertung zurück schicke sieht so aus:
"" (leider gar nichts ...)
zu allem ärger habe ich in meine Auswertung, nachträglich bei der Fehlersuche, irgendwo einen so großen Fehler eingebaut, dass es sich nicht mehr compelieren lässt
Hier einmal der Code der noch funktioniert:
Ist zwar nicht so viel, aber nach dem Löschen der gesamten String Auswertung lies es sich wieder brennen.
Ich bin langsam mit meinem Latein am Ende.
Vieleicht hat einer von euch eine Idee wie ich aus meinem Eigangsstring die einzelnen Servowerte auswerten kann.
Ich hab ein kleines Problem...
Ich wollte mir selber einen kleinen Roboterarm bauen, gaanz einfach mit 6 Servos
Diesen will ich via PC seriell steuern und dachte mir, warum denn nicht ´nen kleinen Atmega dafür nehmen.
Ich habe die Hardware komplett aufgebaut (ATmega8, FT232R, 6 Modellbau Servos, und eine Hand voll LEDs)
Die Servos lassen sich ganz normal über die jeweiligen Konstanten anstprechen.
Nun komme ich zu meinem Problem:
sobalt ich versuche, einen String einzulesen und zu verarbeiten, spinnen die Servos total rum.
Erst dachte ich an ein Hardware Problem, leider kann ich dies nach eineigen Tests ausschließen.
Der String der eingelesen werden soll sieht quasi so aus :
"# 1P500 # 2P500 # 3P500 # 4P500 # 5P500 # 6P500 T150" (Habe mich da ein wenig an den käuflichen China-Servo-Controllern orientiert)
Der String den ich nach der Auswertung zurück schicke sieht so aus:
"" (leider gar nichts ...)
zu allem ärger habe ich in meine Auswertung, nachträglich bei der Fehlersuche, irgendwo einen so großen Fehler eingebaut, dass es sich nicht mehr compelieren lässt
Hier einmal der Code der noch funktioniert:
Code:
$regfile "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40
'-------------------------------------------------------------------------------------------------
Config Servos = 6 , Servo1 = Portb.1 , Servo2 = Portb.2 , Servo3 = Portb.3 , Servo4 = Portb.4 , Servo5 = Portb.6 , Servo6 = Portb.6 , Reload = 10 , Timer = Timer1
Config Serialin = Buffered , Size = 255
Config Com1 = 57600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'-------------------------------------------------------------------------------------------------
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output
Config Portb.5 = Output
Config Portb.6 = Output
'-------------------------------------------------------------------------------------------------
Led Alias Portb.0
'-------------------------------------------------------------------------------------------------
Dim S1 As Byte
Dim S2 As Byte
Dim S3 As Byte
Dim S4 As Byte
Dim S5 As Byte
Dim S6 As Byte
Dim Eingnang As String * 10
Print "start"
'-------------------------------------------------------------------------------------------------
Enable Interrupts
Do
Led = 1
S1 = S1 / 77
Servo(1) = S1
' Print "Servo 1 gestellt"
S2 = S2 / 77
Servo(1) = S2
' Print "Servo 2 gestellt"
S3 = S3 / 77
Servo(1) = S3
' Print "Servo 3 gestellt"
S4 = S4 / 77
Servo(1) = S4
' Print "Servo 4 gestellt"
S5 = S5 / 77
Servo(1) = S5
' Print "Servo 5 gestellt"
S6 = S6 / 77
Servo(1) = S6
' Print "Servo 6 gestellt"
Print "alle Servos gestellt"
Led = 0
Loop
End
Ist zwar nicht so viel, aber nach dem Löschen der gesamten String Auswertung lies es sich wieder brennen.
Ich bin langsam mit meinem Latein am Ende.
Vieleicht hat einer von euch eine Idee wie ich aus meinem Eigangsstring die einzelnen Servowerte auswerten kann.