Also ich habe jetzt das Programm mal so umgeschrieben als wüsste er es nicht mehr, wie findest du das Programm so?
	PHP-Code:
	
#include "asuro.h"
#include "myasuro.h"
int main(void)
{
    unsigned int odata[2];
    unsigned int ldata[2]; // Speicherplatz für Odo- und Linedaten
    int i; // Integervariable zur freien Verwendung
    Init();
    FrontLED(ON); // Linienbeleuchtung einschalten
    Sleep(255); // warten bis LED volle Helligkeit erreicht hat
    LineData(ldata); // ADC anwärmen
    while(1)
    {
        MotorSpeed(200,200); // und losfahren
        while(PollSwitch() == 0) // folge der Linie bis zum ersten Hinderniss
        {
            LineData(ldata);
            if (ldata [0] > ldata [1])
            {
                MotorSpeed(200,100);
            }
            else
            {
                MotorSpeed(100,200);
            }
            Sleep(100); // Regelung etwas dämpfen
        }
        MotorSpeed(0,0); // anhalten weil Hinderniss erkannt wurde
        Msleep(500);
        OdometrieData(odata); // Becherfarbe ermitteln
        if (odata[0] > 950)
        {
            for (i=0; i<20; i++) // Becher aufnehmen (Servoimpuls 20x senden)
            {
                BackLED(OFF,ON);
                Msleep(1); // Impulslänge 1ms
                BackLED(OFF,OFF);
                Msleep(19); // Impulspause 19
            }
            MotorSpeed(0,200); // hell bedeutet nach links abbiegen
            StatusLED(YELLOW);
        }
        else
        {
            for (i=0; i<20; i++) // Becher aufnehmen (Servoimpuls 20x senden)
            {
                BackLED(OFF,ON);
                Msleep(1); // Impulslänge 1ms
                BackLED(OFF,OFF);
                Msleep(19); // Impulspause 19ms
            }
            MotorSpeed(200,0); // dunkel bedeutet nach rechts abbiegen
            StatusLED(RED);
        }
        Msleep(1000); // eine Sekunde drehen
        StatusLED(GREEN); //fertig
        MotorSpeed(200,200); // weiterfahren (und hoffen, dass die Linie noch da ist ;)
        
        while(PollSwitch() == 0) // folge der Linie bis zum zweiten Hinderniss
        {
            LineData(ldata);
            if (ldata [0] > ldata [1])
            {    
                MotorSpeed(200,100);
            }
            else
            {    
                MotorSpeed(100,200);
            }
            Sleep(100);
        }
        MotorSpeed(0,0); // nochmals anhalten
        Msleep(500);
        for (i=0; i<20; i++) // und Becher wieder ablegen
        {
            BackLED(OFF,ON);
            Msleep(2); // Impulslänge 2ms
            BackLED(OFF,OFF);
            Msleep(18); // Prima!
        }
        
        OdometrieData(odata); // Becherfarbe ermitteln
        if (odata[0] > 950)
        {
            MotorSpeed(0,200); // hell bedeutet nach links abbiegen
            StatusLED(YELLOW);
        }
        else
        {
            MotorSpeed(200,0); // dunkel bedeutet nach rechts abbiegen
            StatusLED(RED);
        }
        Msleep(1000); // eine Sekunde drehen
        StatusLED(GREEN); //fertig
        MotorSpeed(200,200); 
    }
    return(0);
} 
 
						
					
Lesezeichen