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 UlliS - 7.10.2009 9:29)
Als Antwort auf kommando zurück - fehler entdeckt von michl - 7.10.2009 4:05
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128, CC-Pro 32 Application Board, 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



    Antwort schreiben


Antworten:

Re: kommando zurück - fehler entdeckt (von michl - 7.10.2009 12:50)
    Re: kommando zurück - fehler entdeckt (von michl - 7.10.2009 15:12)