Re: kommando zurück - fehler entdeckt Kategorie: Programmierung Basic (von michl - 7.10.2009 12:50) | ||
Als Antwort auf Re: kommando zurück - fehler entdeckt von UlliS - 7.10.2009 9:29 | ||
| ||
> > kommando zurück - logikfehler entdeckt... > > > > herausgefunden: port_on und port_off arbeiten genau anders herum, als ich erwartet hatte. > > bin jetzt ich blöd oder isses einfach reziprok logisch? > > > > ps: korrekte impulsdauern sind bei dem servo-modell scheints 0,5ms - 1,25ms - 2,0ms für -90°, 0°, 90° > > bei periodendauer 20ms. > > > > > ich fühl mich grad ein klein wenig blöd... ich find meinen denkfehler nicht. vom kratzen hab ich inzwischen > > > eine glatze. > > > > > > ich habe einen modelcraft rs-2 servo angeschlossen an meinem c-control pro 128 app. board > > > (rot an +5v, braun an masse, orange an port c.0) > > > > > > ich wollte jetzt einfach mal den servo von links nach rechts fahren lassen und zurück in einer endlosschleife. > > > das ganze funktioniert nicht, der servo zuckt nur gelegentlich hin und her, tut aber nicht, was er soll. > > > nur finde ich leider den denkfehler nicht und kann meinen scheinbar fehlerhaften code nicht korrigieren. > > > kann mir einer sagen, wo hier der fehler liegt? > > > > > > Dim zaehler As Integer > > > > > > Sub main() > > > Port_DataDirBit(16,PORT_OUT) > > > > > > Do While (True) > > > links() > > > rechts() > > > End While > > > > > > End Sub > > > > > > Sub links() > > > zaehler = 0 > > > Do While (zaehler < 51) > > > zaehler = zaehler + 1 > > > Port_WriteBit(16,PORT_ON) > > > AbsDelay(1) > > > Port_WriteBit(16,PORT_OFF) > > > AbsDelay(19) > > > End While > > > End Sub > > > > > > Sub rechts() > > > zaehler = 0 > > > Do While (zaehler < 51) > > > zaehler = zaehler + 1 > > > Port_WriteBit(16,PORT_ON) > > > AbsDelay(2) > > > Port_WriteBit(16,PORT_OFF) > > > AbsDelay(18) > > > End While > > > End Sub > > > > > > ps: der motor funktioniert, mit einem heruntergeladenen demo-programm funktioniert er zwar zittrig, > > > aber ansonsten tadellos. > > Hi, > > probier doch mal die eingebaute Servo Funktion aus. > > Bsp: > > // Ansteuerung von 3 Servos und beenden nach 10 Sek. > void main(void) > > { > byte servo_var[30]; // Servo interne Variablen > > // Max. 10 Servos, 20ms Intervall, Timer 3 > Servo_Init(10, 1, servo_var, 1); > > Servo_Set(7, 2000); // Servo Portbit 7 2000µs > Servo_Set(6, 1800); // Servo Portbit 6 1800µs > Servo_Set(5, 1600); // Servo Portbit 5 1600µs > > AbsDelay(5000); > > Servo_Set(7, 1000); // Servo Portbit 7 1000µs > > AbsDelay(5000); > > Servo_Set(7, 0); // alle Servos aus > Servo_Set(6, 0); > Servo_Set(5, 0); > } > > In der Hilfe findest du mehr dazu (IDE Hilfe). > > > Grü�e Ulli > aye ulli, heissen dank für den tip! da sind ja sachen in der intfunc_lib, die im handbuch nicht drinstehen - das wird die angelegenheit garantiert wesentlich erleichtern! sobald ich mich mit interrupt auseinandergesetzt hab, werd ich mir das genauer ansehen! grüsse zurück michl ps: die billig-ansteuerung, die ich da zusammengestöpselt hab, war hauptsächlich zu dem zweck, mal einem motor bei der bewegung zuzuschauen, sozusagen als "juhuu, es bewegt sich"-erlebnis ;) man tastet sich halt langsam vorwärts. | ||
Antwort schreiben Antworten: Re: kommando zurück - fehler entdeckt (von michl - 7.10.2009 15:12) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum