Hallo Flexxx,
ja kann er dazu gibt es auch ein Demoprogramm.
Das Programm zur Hinderniserkennung habe ich etwas umgeschrieben.Code:'******************************************************************************* 'Projektname: Door_Bell.cprj 'Benötigte Libs´s: IntFunc_lib.cc 'Routinen: Door_Bell.cbas, PRO-BOT128_Lib.cbas 'Autor: UlliS 'Datum: 20.09.2008 ' 'Funktion: Door Bell (Sound Demo) '******************************************************************************* Sub main() PRO_BOT128_INIT() BEEP(110, 250) BEEP(140, 350) BEEP(125, 250) BEEP(180, 400) DELAY_MS(200) BEEP(200, 300) BEEP(135, 250) BEEP(120, 250) BEEP(145, 400) End Sub
GrußCode:'******************************************************************************* 'Projektname: Pfadfinder.cbas 'Benötigte Libs´s: PRO-BOT128_Lib.cbas 'Autor: ExMachina 'Datum: 16.05.2009 ' 'Funktion: PRO-BOT128 fährt umher, und weicht dabei Hindernissen über ' das ACS (Anti Collisions System) aus. ' Dabei nutzt der Roboter die Radencoder um möglichst gerade ' aus zu fahren. Die ACS Einstellungen werden über ' ACS_INIT() geändert/ 1-20 / 1 ist nah / 20 ist fern / '******************************************************************************* #define BLR 16 #define BLL 17 #define FLR 18 #define FLL 19 Sub main() 'Hauptprogramm PRO_BOT128_INIT() 'PRO BOT128 wird initialisiert DRIVE_INIT() 'Motor wird initialisiert LED_Init() 'LED's werden initialisiert ACS_INIT(3) 'Anti Collision Sytem (ACS) wird initialisiert (1-20,1=geringe Messweite 20=große Messweite) AbsDelay(1000) 'wartet 1 Sekunde ENC_LED_ON() 'Radencoder wird initialisiert DRIVE_ON() 'Motor wird aktiviert Do While True Check_Left() 'ACS check links Check_Right() 'ACS check rechts If ACS_LEFT() = 1 And ACS_RIGHT() = 1 Then Forward() : End If 'kein Hinderniss If ACS_LEFT() = 0 And ACS_RIGHT() = 0 Then Backward() : End If 'Hinderniss vorn 'Endlosschleife If ACS_LEFT() = 1 And ACS_RIGHT() = 0 Then Turn_Left() : End If 'Hindeniss rechts If ACS_LEFT() = 0 And ACS_RIGHT() = 1 Then Turn_Right() : End If 'Hinderniss links End While 'Ende Endlosschleife End Sub 'Ende Hauptprogramm Sub LED_Init() Port_DataDirBit(FLL,PORT_OUT) 'Port PC.0 = Output Port_DataDirBit(FLR,PORT_OUT) 'Port PC.1 = Output Port_DataDirBit(BLL,PORT_OUT) 'Port PC.2 = Output Port_DataDirBit(BLR,PORT_OUT) 'Port PC.3 = Output Port_Write(2,&H0) 'alle LED's an AbsDelay(500) 'wartet 0,5 Sekunden Port_Write(2,&H1F) 'alle LED's aus AbsDelay(500) 'wartet 0,5 Sekunden Port_Write(2,&H0) 'alle LED's an AbsDelay(500) 'wartet 0,5 Sekunden Port_Write(2,&H1F) 'alle LED's aus End Sub Sub Check_Left() ACS_LEFT() 'ACS check links AbsDelay(5) End Sub Sub Check_Right() ACS_RIGHT() 'ACS check rechts AbsDelay(5) End Sub Sub Forward() FLL_OFF() 'LED links aus FLR_OFF() 'LED rechts aus BLL_OFF() 'LED links aus BLR_OFF() 'LED rechts aus DRIVE_FORWARD(10) 'geregelte Vorwärtsfahrt (Speed 1-10) End Sub Sub Backward() FLL_ON() 'LED links an 'vorne FLR_ON() 'LED rechts an BLL_ON() 'LED links an 'hinten BLR_ON() 'LED rechts an GO_TURN(0,-60,255) 'rechts Drehung (0cm,-60 Grad Clockwise,Speed 255) End Sub Sub Turn_Left() FLL_OFF() 'LED links aus 'vorne FLR_ON() 'LED rechts an BLL_OFF() 'LED links aus 'hinten BLR_ON() 'LED rechts an GO_TURN(0,-45,255) 'links Drehung (0cm,-45 Grad Clockwise, Speed 255) End Sub Sub Turn_Right() FLL_ON() 'LED links an 'vorne FLR_OFF() 'LED rechts aus BLL_ON() 'LED links an 'hinten BLR_OFF() 'LED rechts aus GO_TURN(0,45,255) 'rechts Drehung (0cm,45 Grad Counter Clockwise, Speed 255) End Sub
Matthias







Zitieren

Lesezeichen