Hier Bitteschön, zu finden bei http://www.home.fh-karlsruhe.de/~saka0012!
Code:'************************************************************************** '* Roboter.BAS * '************************************************************************** '* Beispielprogramm zur Steuerung eines einfachen Roboters mit 90S8535 * '* Controller mit 8 MHz. * '************************************************************************** '* Version: 1.0 * '* Datum: 21.10.2001 * '* Autor: Kai Sachsenheimer * '************************************************************************** '************************************************************************** '************************************************************************** '* Deklaration der Ports und Variablen: * '************************************************************************** '* Port D = Servos bzw. Motoren * '* Port C = IR Sensoren * '* Port A = Taster * '************************************************************************** Config Portd = Output Config Portc = Input Config Pina.0 = Input Dim X As Byte Dim Weg As Byte Dim Y As Byte Dim Zufallszahl As Byte Dim Servor As Integer Dim Servol As Integer '************************************************************************** '* Initialisierung der Variablen: * '************************************************************************** X = 0 Y = 0 Servor = 0 Servol = 0 Losgehts: 'Warten bis Taster am Port A.0 high ist. Bitwait Pina.0 , Set Sense: If Y = 10 Then Goto Ausweichen '************************************************************************** '* Auswertung der IR-Sensoren: * '************************************************************************** '* Sensoren-Port-Belegung: * '* IR Links außen = C.4 * '* IR Links mitte = C.3 * '* IR Mitte = C.2 * '* IR rechts mitte = C.1 * '* IR rechts außen = C.0 * '* Erkanntes Hindernis: Sensor meldet 0 * '************************************************************************** Select Case Pinc 'Kein Hinderniss wird nicht benötigt 'Case &B00011111 : Goto ----------- Case &B00011110 : Goto Linksaussen Case &B00011101 : Goto Linksmitte Case &B00011100 : Goto Linksbeide Case &B00011011 : Goto Zurueck Case &B00011010 : Goto Linksaussen Case &B00011001 : Goto Zurueck Case &B00011000 : Goto Linksaussen Case &B00010111 : Goto Rechtsmitte Case &B00010110 : Goto Zurueck Case &B00010101 : Goto Zurueck Case &B00010100 : Goto Linksaussen Case &B00010011 : Goto Rechtsmitte Case &B00010010 : Goto Linksaussen Case &B00010001 : Goto Zurueck Case &B00010000 : Goto Linksaussen Case &B00001111 : Goto Rechtsaussen Case &B00001110 : Goto Zurueck Case &B00001101 : Goto Zurueck Case &B00001100 : Goto Zurueck Case &B00001011 : Goto Rechtsaussen Case &B00001010 : Goto Zurueck Case &B00001001 : Goto Zurueck Case &B00001000 : Goto Linksaussen Case &B00000111 : Goto Rechtsbeide Case &B00000110 : Goto Rechtsaussen Case &B00000101 : Goto Rechtsaussen Case &B00000100 : Goto Zurueck Case &B00000011 : Goto Rechtsaussen Case &B00000010 : Goto Rechtsaussen Case &B00000001 : Goto Rechtsaussen Case &B00000000 : Goto Zurueck End Select 'Fährt geradeaus Fahren: Servor = 2 Servol = 1 Weg = 2 Y = 0 Goto Motoren 'Fährt links Linksaussen: Servor = 2 Servol = 2 Weg = 10 Y = Y + 1 Goto Motoren 'Fährt links Linksmitte: Servor = 2 Servol = 2 Weg = 20 Y = Y + 1 Goto Motoren 'Fährt links Linksbeide: Servor = 2 Servol = 2 Weg = 15 Y = Y + 1 Goto Motoren 'Fährt rechts Rechtsaussen: Servor = 1 Servol = 1 Weg = 10 Y = Y + 1 Goto Motoren 'Fährt rechts Rechtsmitte: Servor = 1 Servol = 1 Weg = 105 Y = Y + 1 Goto Motoren 'Fährt rechts Rechtsbeide: Servor = 1 Servol = 1 Weg = 202 Y = Y + 1 Goto Motoren 'Fährt zrück Zurueck: Servor = 1 Servol = 2 Weg = 100 Goto Motoren '************************************************************************** '* Motorsteuerung: * '************************************************************************** '* Portd.3 = Servo rechts * '* Portd.4 = Servo links * '************************************************************************** Motoren: For X = 1 To Weg Portd.3 = 1 Waitms Servor Portd.3 = 0 Portd.4 = 1 Waitms Servol Portd.4 = 0 Waitms 15 Next Goto Sense '************************************************************************** '* Ausweichen: * '************************************************************************** '* Y wird um eins erhöht, wenn der Roboter immer nach links bzw. nach * '* rechts fährt ohne sich dabei nach vorwärts zu fahren. * '* Ist der Roboter 10 mal nach links bzw. recht gefahren (hat sich an * '* einem Hindernis festgefahren) wird die Ausweich-Routine gestartet. * '* Zufallszahlen werden generiert, um den Robo zufällig nach links oder * '* rechts zu steuern. * '************************************************************************** Ausweichen: Y = 0 Zufallszahl = Rnd(11) For X = 1 To 150 Portd.3 = 1 Waitms 1 Portd.3 = 0 Portd.4 = 1 Waitms 2 Portd.4 = 0 Waitms 15 Next If Zufallszahl > 5 Then Goto Linksaussen Else Goto Rechtsaussen







Zitieren

Lesezeichen