Ich habs schon mehrere stunden an dem code gearbeitet aber immer wieder gibt es probleme!
Ich habs auch schon mit dem probiert:
aber auch da gibt es probleme mit kommentaren....Code:/******************************************************************************* * RP6 C-Control PRO M128 Erweiterungsmodul * ---------------------------------------------------------------------------- * RP6_Servo Demoprogramm 1 - CCPRO BASIC * ---------------------------------------------------------------------------- * RP6_Servo: Ansteuerung von 3 Servos * 3 Standard-Servos erforderlich * Mega128: Servo-Ausgänge PB5, PB6, PB7 (PortB.5, .6, .7) * Erforderliche Library: IntFunc_Lib.cc. * * Drei zusätzlich erforderliche Standard-Servos (z.B. CONRAD ES-030) * werden in dieser Demo gleichzeitig angesteuert. Die Demo ist ausgelegt * für die CCPRO-IDE ab Version 2.0. * Auf dem LCD-Display wird in der 1. Zeile die Servo-Position und in der * 2. Zeile die zugehörige Impulsdauer in Mikrosekunden (us) angezeigt. * * Hinweis: * Für allgemeine Programmierhinweise zur CCPRO schauen Sie sich bitte die * CCPRO Dokumentation und die zugehörigen Beispielprogramme an! * Es sei auch nochmals darauf hingewiesen, dass die normalen Beispielprogramme * für die CCPRO nur zum Teil direkt auf dem RP6-CCPRO Modul laufen. * Die Anschlussbelegung ist natürlich komplett anders als auf dem * C-Control Application Board. Auch die LCD Ansteuerung ist leicht anders, * da hier noch zusätzliche LEDs mit an dem Schieberegister angeschlossen sind. * --> Die C-Control Beispielprogramme müssen ein klein wenig angepasst * werden bevor sie auf diesem Modul laufen können! * * ***************************************************************************** * Der Roboter bewegt sich in diesem Beispielprogramm NICHT und kann * am Rechner angeschlossen bleiben! ******************************************************************************/ ' WICHTIG: Immer die RP6CCLib mit einbinden: #include "../../RP6CCLib/RP6CCLib.cbas" ' ----------------------------------------------------------------------------- ' Defines: ' Servo Konstanten: #define SERVO1 13 ' Servo an PB5 #define SERVO2 14 ' Servo an PB6 #define SERVO3 15 ' Servo an PB7 ' Servo Bewegungsgrenzen 0,7..2,3ms (abhängig vom Servotyp): #define LINKER_ANSCHLAG 700 ' Linker Anschlag (0,7ms) #define RECHTER_ANSCHLAG (2300 - LINKER_ANSCHLAG) ' Rechter Anschlag (2,3ms) #define MITTE_POSITION (RECHTER_ANSCHLAG / 2) ' Mitte-Position (1,5ms) ' Wenn man die Bewegungsgrenzen für ein bestimmtes Servo einstellen will, ' muss erst der linke Anschlag so eingestellt werden, dass das Servo bei ' servo_pos = 0 am linken Anschlag steht und nicht "brummt", d.h. gegen ' den Anschlag arbeitet. Die Werte für LINKER_ANSCHLAG werden zwischen ' 700 und 1000 (us) liegen. ' Danach muss mit servo_pos = RECHTER_ANSCHLAG die Stellung am rechten ' Anschlag gesucht werden, bei der das Servo ebenfalls nicht "brummt", ' indem der Wert "2300" in der Definition von RECHTER_ANSCHLAG geändert ' wird. Die Werte werden zwischen 2000 und 2300 (us) liegen. ' Nach dieser Einstellung kann man das Servo mit Werten (servo_pos) von ' 0 (= linker Anschlag) bis RECHTER_ANSCHLAG bewegen. Natürlich könnte ' man auch direkt die Werte für die Impulsdauer (us) benutzen. Der Vor- ' teil dieser Umrechnung auf Positionswerte besteht darin, dass man die ' Servogrenzen vorab gut einstellen kann. ' ----------------------------------------------------------------------------- ' Variablen: Dim servo_var(9) As Byte ' globale Variablendeklaration Dim servo_pos, impulsdauer As Integer Sub main() ' WICHTIG! Immer als erstes aufrufen: RP6_CCPRO_Init() ' Auf Startsignal warten, LCD und andere Dinge initialisieren ! ' ------------------------------------------------------ ' Zwei Zeilen Text mit dem LCD anzeigen: showScreenLCD("RP6 CCPRO M128", "RP6 Servo Demo 1") ' Zweimal piepsen: beep(200, 300, 100) ' Format: beep (<tonhöhe>, <dauer>, <pause>) beep(100, 100, 100) ' Text über serielle Schnittstelle ausgeben: newline() ' Neue Zeile println(" ________________________") println(" \\| RP6 ROBOT SYSTEM |/") println(" \\_-_-_-_-_-_-_-_-_-_/ ") newline() println(" Let's go! ") newline() ' 2 Sekunden Pause: AbsDelay(2000) ' ------------------------------------------------------ ' Servo-Hauptprogramm: clearLCD() ' Display löschen ' Initialisierung für 3 Servos, Periodendauer 20ms, Timer 3: Servo_Init(3, 1, servo_var, 1) servo_pos = 0 Do While True ' Endlosschleife setCursorPosLCD(0, 0) ' Zeile 1 printLCD("Servo Pos.: ") printIntegerLCD(servo_pos) printLCD(" ") impulsdauer = LINKER_ANSCHLAG + servo_pos setCursorPosLCD(1, 0) ' Zeile 2 printLCD("Impuls[us]: ") printIntegerLCD(impulsdauer) printLCD(" ") Servo_Set(SERVO1, impulsdauer) Servo_Set(SERVO2, impulsdauer) Servo_Set(SERVO3, impulsdauer) If servo_pos = 0 Then AbsDelay(1000) Servo_Off() AbsDelay(5000) End If servo_pos = servo_pos + 10 ' Nächste Position nach rechts If servo_pos > RECHTER_ANSCHLAG Then Servo_Off() AbsDelay(6000) servo_pos = 0 ' Servo Position: 0..RECHTER_ANSCHLAG End If AbsDelay(25) End While End Sub ' ----------------------------------------------------------------------------- ' Alle drei Servos ausschalten: Sub Servo_Off() Servo_Set(SERVO1, 0) Servo_Set(SERVO2, 0) Servo_Set(SERVO3, 0) End Sub ' -----------------------------------------------------------------------------
keine ahnung was ich noch machen soll...
ich werd einfach auf jeden fall noch probieren...







Zitieren

Lesezeichen