Hallo Flexxx,
ja kann er dazu gibt es auch ein Demoprogramm.
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
Das Programm zur Hinderniserkennung habe ich etwas umgeschrieben.
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
Gruß
Matthias
Lesezeichen