Hallo Leute,
ich möchte ein Linienverfolgungsprogramm mit einem Kollisionsprogramm verbinden aber leider habe ich noch große Probleme beide mit einander zu verbinen.
Ich hoffe es kann mir jemand weiterhelfen.
Hier die beiden Teilprogramme.
Kollisionsprogramm:
#include "asuro.h"
int main(void){
unsigned int i;
Init();
while(1){
while(PollSwitch()==0)
{StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(120,120);} //fahre vorwärts
if(PollSwitch()!=0) // bis Schalter gedrückt wird
{StatusLED(RED); // Rote Lampe an
MotorDir(RWD,RWD); //Rückwärtsgang mit 120
MotorSpeed(120,120);
for (i=0;i<280;i++){Sleep(255);} //für 1 Sek zurückfahren
MotorSpeed(0,0); // Motoren stoppen
MotorDir(FWD,FWD); // Und Drehung einleiten für 1 Sek
MotorSpeed (0,120);
for (i=0;i<280;i++){Sleep(255);}
MotorSpeed(0,0);
}
}
return 0;
}
Linienverfolgung:
#include "asuro.h"
int main(void)
{
Init();
while(1)
{
int line_data[2];
LineData(line_data); // line_date[0]: linker Sensor, [1]: rechter Sensor
// schwarzer Untergrund: kleine Werte; heller Hintergrund: große Werte
FrontLED(ON); // liefert bessere bzw. konstrastreichere Werte
int limit = 45; // Dieser Vergleichswert ist an die Lichtverhältnisse anzupassen
int speed = 120;
int debug_mode = 0; // 0: aus; 1: an, ASURO sendet die Werte der Sensoren zurück
while (line_data[1] > limit)
{
if (debug_mode)
{
SerWrite("rechts\r\n", 8 );
PrintInt(line_data[1]);
SerWrite("\r\n", 2);
}
BackLED(OFF, ON);
MotorSpeed(0, speed);
LineData(line_data);
}
while (line_data[0] > limit)
{
if (debug_mode)
{
SerWrite("links\r\n", 7);
PrintInt(line_data[0]);
SerWrite("\r\n", 2);
}
BackLED(ON, OFF);
MotorSpeed(speed, 0);
LineData(line_data);
}
MotorDir(FWD, FWD);
MotorSpeed(speed, speed);
}
return 0;
}
Lesezeichen