Feratu
25.03.2008, 21:58
Hi
Ich bin gerade dabei einen 4 Beinigen Roboter das Laufen beizubringen.
Kann man sich vorstellen wie eine Schachtel mit 8 Servos drunter ;P.
Ansteuern tu ich diese mit einer Software PWM.
Mein verwendeter Chip ist der Atmega 8535 und wird Programmiert in Bascom.
Die Servo positionen habe ich über eine Art Mischpult rausbekommen (8 Potis). Dabei kommt eine Tabelle raus die so aussieht:
97 63 91 88 64 118 76 84
98 63 91 125 65 118 76 84
97 63 91 125 64 118 76 50
97 63 92 56 59 113 71 47
...
Jede Zahl ist die Gradzahl eines Servos.
Da es mir einfach zuviel auswand ist jeden schritt in so eine Tabelle zu übertragen würde ich gerne die oben genannten schritte in Strings abspeichern.
Tabhilfe = 1
Warz(tabhilfe) = 2 '(Wartezeit bis ausgeführung in Nx 20mS)
Servo_tab_1(tabhilfe) = 105
Servo_tab_2(tabhilfe) = 65
Servo_tab_3(tabhilfe) = 110
Servo_tab_4(tabhilfe) = 90
Servo_tab_5(tabhilfe) = 75
Servo_tab_6(tabhilfe) = 105
Servo_tab_7(tabhilfe) = 70
Servo_tab_8(tabhilfe) = 80
Das allein braucht 2% des Speichers,....
Meine Frage dazu ist wie zerlege ich einen String in 8 kleinere Teile die minimal 1 und maximal 3 Ziffern haben können.
Ich hatte mir überlegt das mit left bzw right zu realisieren sollte dann so aussehn:
1. String wird in einen bearbeitungsstring kopiert
2. es wird per "var = INSTR( start , string , substr )" geschaut wo ein leerzeichen steht.
3. die stelle wird gespeichert und kopiert per "var = Left(var1 , n )"
alles bis zu der stelle wo das Leerzeichen ist.
4. rauskopierter String wird per "var = Val( s )" in eine Zahl umgewandelt und in ein Byte gespeichert (geht nicht über 180° hinaus ^^)
5. lösche die ersten x Stellen bis zum leerzeichen und lösche dieses mit "var = LTRIM( org )". (falls nötig)
6. zähle die Ziffern des Bearbeitungsstrings mit "var = LEN( string )"
7. wiederhole das Ganze bis der Bearbeitungsstring keine Ziffern mehr enthält.
Müsste so in etwa funktionieren.
Aber das muss doch irgentwie einfacher gehn -_- und vorallem wie lösche ich Teile eines Strings ???
mfg
Ich bin gerade dabei einen 4 Beinigen Roboter das Laufen beizubringen.
Kann man sich vorstellen wie eine Schachtel mit 8 Servos drunter ;P.
Ansteuern tu ich diese mit einer Software PWM.
Mein verwendeter Chip ist der Atmega 8535 und wird Programmiert in Bascom.
Die Servo positionen habe ich über eine Art Mischpult rausbekommen (8 Potis). Dabei kommt eine Tabelle raus die so aussieht:
97 63 91 88 64 118 76 84
98 63 91 125 65 118 76 84
97 63 91 125 64 118 76 50
97 63 92 56 59 113 71 47
...
Jede Zahl ist die Gradzahl eines Servos.
Da es mir einfach zuviel auswand ist jeden schritt in so eine Tabelle zu übertragen würde ich gerne die oben genannten schritte in Strings abspeichern.
Tabhilfe = 1
Warz(tabhilfe) = 2 '(Wartezeit bis ausgeführung in Nx 20mS)
Servo_tab_1(tabhilfe) = 105
Servo_tab_2(tabhilfe) = 65
Servo_tab_3(tabhilfe) = 110
Servo_tab_4(tabhilfe) = 90
Servo_tab_5(tabhilfe) = 75
Servo_tab_6(tabhilfe) = 105
Servo_tab_7(tabhilfe) = 70
Servo_tab_8(tabhilfe) = 80
Das allein braucht 2% des Speichers,....
Meine Frage dazu ist wie zerlege ich einen String in 8 kleinere Teile die minimal 1 und maximal 3 Ziffern haben können.
Ich hatte mir überlegt das mit left bzw right zu realisieren sollte dann so aussehn:
1. String wird in einen bearbeitungsstring kopiert
2. es wird per "var = INSTR( start , string , substr )" geschaut wo ein leerzeichen steht.
3. die stelle wird gespeichert und kopiert per "var = Left(var1 , n )"
alles bis zu der stelle wo das Leerzeichen ist.
4. rauskopierter String wird per "var = Val( s )" in eine Zahl umgewandelt und in ein Byte gespeichert (geht nicht über 180° hinaus ^^)
5. lösche die ersten x Stellen bis zum leerzeichen und lösche dieses mit "var = LTRIM( org )". (falls nötig)
6. zähle die Ziffern des Bearbeitungsstrings mit "var = LEN( string )"
7. wiederhole das Ganze bis der Bearbeitungsstring keine Ziffern mehr enthält.
Müsste so in etwa funktionieren.
Aber das muss doch irgentwie einfacher gehn -_- und vorallem wie lösche ich Teile eines Strings ???
mfg