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