Hallo Leute!
Ich habe mal wieder eine Frage.
Und zwar: Ich möchte gerne, dass der Roboter nur solange eine Funktion durchführt, bis er auf ein Hindernis stößt (10 cm Entfernung). Danach soll sich der Yeti drehen und dann wieder solange eine bestimmte Funktionsabfolge machen, bis er wieder auf ein Hindernis, in 10 cm Entfernung stößt.
Ich habe jetzt einen Quellcode geschrieben, der leider so nicht funktioniert.
Kann mir bitte jemand helfen? [-o<Code:/---------------------------------------------------------------------- // Titel : Yeti, Yeti, Yeti //---------------------------------------------------------------------- // Funktion : Der Yeti läuft, lässt seine Augen leuchten, tanzt und macht TÖne // Schaltung : Yeti und mySmartUSB //---------------------------------------------------------------------- // Prozessor : Atmega8 // Takt : 8 MHz // Sprache : C // Datum : April 2010 // Version : 1.0 // Autor : Mandy //---------------------------------------------------------------------- #include "yeti.h" // Lade Definitionen und Funktionen des Yetis #include "yetimove.c" // Lade Definitionen und Funktionen der Yetibewegungen #include "ultrasoon.c" // Lade Definitionen und Funktionen der Ultraschallsensoren // Start der "Main- Methode" //================================================================================ int main(void) { //Initalisierung der Variablen int i; DDRC=0x00; vInitYeti(); // initalisiert alle Mikrocontrollerfunktionen des Yetis vInitUltrasoon(); // Tonabfolge vBeep(400,80); vBeep(520,80); vBeep(360,80); vBeep(580,80); vStandUpright(); // Yeti stellt sich in die Ausgangsposition vCalibrateServos(); // Kalibrierung der Servos vStandUpright(); // Yeti stellt sich in die Ausgangsposition vWaitMilliseconds(1000); while(1) // Start einer Unendlichschleife: Der Yeti wiederholt das Folgende bis er ausgeschaltet wird. { if(ucGetObjectDistanceInCentimeters()<=10) { // DAS HINDERNIS IST NAHE, WAS SOLL ICH TUN?! vFrontLEDs(BOTH); // Schaltet beide LEDs des Yetis an vFrontLEDs(OFF); // Schaltet beide LEDs des Yetis aus vWaitMilliseconds(1000); // Wartet 1 s vFrontLEDs(BOTH); // Schaltet beide LEDs des Yetis an //Tonabfolge vBeep(580,120); vBeep(400,150); vBeep(520,120); vTurnLeftXSteps(6,true); // Lässt den Yeti 6 Schritte nach links drehen vBeep(460,80); // Lässt den Yeti einen Ton erzeugen } else { // DAS HINDERNIS IST WEIT WEG // LAUFEEEEEEEEEEEEN!!! vFrontLEDs(LEFT); // Schaltet das linke Auge des Yetis an vMoveForwardXSteps(8); // Lässt den Yeti 8 Schritte vorwärts laufen vBeep(400,80); // Lässt den Yeti einen Ton erzeugen vFrontLEDs(RIGHT); // Schaltet das rechte Auge des Yetis an vBeep(360,80); // Lässt den Yeti einen Ton erzeugen vMoveBackwardXSteps(8); // Lässt den Yeti 8 Schritte rückwärts laufen vBeep(650,80); // Lässt den Yeti einen Ton erzeugen vFrontLEDs(BOTH); // Schaltet beide Augen des Yetis an vStandUpright(); // Yeti stellt sich in die Ausgangsposition for(i=0;i<4;i++) // Zählschleife: Wiederholt das Folgende 4x { vBeep(520,80); // Lässt den Yeti einen Ton erzeugen vFrontLEDs(LEFT); // Schaltet das linke Auge des Yetis an vMoveBody(12,10); // Bewegt den Yeti nach links vBeep(580,80); // Lässt den Yeti einen Ton erzeugen vFrontLEDs(RIGHT); // Schaltet das rechte Auge des Yetis an vMoveBody(-12,10); // Bewegt den Yeti nach rechts vMoveBody(0,10); // Bewegt den Yeti in Ruheposition } // Ende der Zählschleife vBeep(420,80); // Lässt den Yeti einen Ton erzeugen vFrontLEDs(OFF); // Schaltet beide Augen des Yetis aus vStandUpright(); // Yeti stellt sich in die Ausgangsposition } } // Ende der Unendlichschleife: Startet die Unendlichschleife von vorne return 0; } // Verlässt die Main
MFG
Mandy







 
			
			 
					
					
					
						 Zitieren
Zitieren

Lesezeichen