Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

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
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board, Pro-Bot128
> > 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)