ich verstehe es nicht:
zwei programme, hier färt der asuro geradeaus:
das zweite (jetzt das richige), hier zieht er beim vorwärtsfahren nach rechts:Code:#include "asuro.h" // bitte die neue Datei benutzen // asuro.h und asuro.c vom 31.03.05 #define aus MotorDir(BREAK,BREAK) #define go {MotorSpeed(150,150);MotorDir(FWD,FWD);} #define backturn { MotorSpeed(150,250);MotorDir(RWD,RWD);Msleep(1000);} /************************************************************************************* ASURO discovers your apartment program made by stochri july, 2005 *************************************************************************************/ int speed() { int rightspeed,leftspeed; int leftold,rightold; Encoder_Set(0,0); // reset encoder leftold=encoder[LEFT]; rightold=encoder[RIGHT]; Msleep(300); leftspeed=encoder[LEFT]-leftold; rightspeed=encoder[RIGHT]-rightold; //SerWrite(" speed Left,Right ",19); //PrintInt(leftspeed); //PrintInt(rightspeed); return leftspeed+rightspeed; } int main(void) { int n,v,nullspeed; Init(); Encoder_Init(); StatusLED(OFF); SerWrite("\n\rASURO OK\n\r",8); go; Msleep(500); nullspeed=speed()-10; while(1) { v=speed(); SerWrite("\n\r speed ",9); PrintInt(v); if(v<nullspeed) { backturn; go; Msleep(500); } } return 0; }
woran kann das liegen?Code:/************************************************************************** * * File Name: kollisiontest.c * Project : ASURO * * Description: Kollisionstest mit Hilfe der Tastensensoren * * Ver. Date Author Comments * ------- ---------- ----------------- ----------------------------- * 1.0 10.09.2005 Peter initial build * 1.1 08.01.2006 Peter 2x PollSwitch + Vergleich, anstelle 8x PollSwitch * * benoetigt die modifizierte Asuro Bibliothek 'asuro.c' * von waste, stochri und andun. Zu finden bei www.roboternetz.de */ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * any later version. * ***************************************************************************/ #include "asuro.h" /* Um eventuelle Unterschiede zwischen linken und rechtem Motor auszugleichen * definieren wir 2 Werte für fullspedd links und rechts */ #define FULL_L 125 /* Fullspeed linker Motot */ #define FULL_R 125 /* Fullspeed rechter Motor */ /* Motor vorwärts */ void MotorFwd(void) { MotorDir(FWD,FWD); MotorSpeed(FULL_L,FULL_R); } /* Motor rückwärts */ void MotorRwd(void) { MotorDir(RWD,RWD); MotorSpeed(FULL_L,FULL_R); } /* Motor rückwärts Links */ void MotorRwdL(void) { MotorDir(RWD,RWD); MotorSpeed(FULL_L,0); } /* Motor rückwärts Rechts */ void MotorRwdR(void) { MotorDir(RWD,RWD); MotorSpeed(0, FULL_R); } /* Motor stop */ void MotorStop(void) { MotorSpeed(0,0); } int main(void) { unsigned char t1, t2; SerWrite("\n\r kollision_wiki_2007_02_19 ",29); // wer bin ich Init(); while(1) { t1 = PollSwitch(); t2 = PollSwitch(); if(t1 == 0 && t2 == 0) /* keine Taste */ { MotorFwd(); /* vorwärts fahren */ FrontLED(ON); BackLED(OFF,OFF); } else if (t1 && t2 && t1 == t2) { MotorStop(); if(t1 & 0x07) /* Tasten links gedrückt? */ { MotorRwdL(); /* Rückwärtskurve links fahren */ FrontLED(OFF); BackLED(ON,OFF); } if (t1 & 0x38) /* Tasten rechts gedrückt? */ { MotorRwdR(); /* Rückwärtskurve rechts fahren */ FrontLED(OFF); BackLED(OFF,ON); } Msleep(1000); /* 1 Sekunde fahren */ } } return 0; }







Zitieren

Lesezeichen