Ich habe das Herauskommen der neuen lib 2.7.1 zum Anlass und Übung genommen um damit Henks Programm mal als Quellcode nach zu vollziehen.
Ich hoffe, ich habe es damit im Wesentlichen getroffen Henk?Code:#include "asuro.h" #define MAX 50 #define SPEED 10*reg[0] #define DIST 10*reg[1] void readLine(char *cmd, int max) { unsigned char len=0; char data; while(len<max-1) { SerRead(&data, 1, 0); switch (data){ case 'k': // end of command sequence but first wait for any asuro key (change) StatusLED(YELLOW); PollSwitch(); max=PollSwitch(); while (PollSwitch()==max); // LOOP // FALL THRU case 'x': // end of command sequence cmd[len++]=data; max=len; break; case 'q': // kills the entire input buffer StatusLED(RED); len=0; break; default: cmd[len++]=data; break; } } cmd[len]=0; StatusLED(GREEN); } void turtle(void) { int reg[]={10, 20}; unsigned char i, r=0; char cmd[MAX]; EncoderInit(); while(1) { readLine(cmd, MAX); for(i=0; cmd[i]; i++) { switch(cmd[i]) { case 's': r=0; reg[0]=0; break; case 'd': r=1; reg[1]=0; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': reg[r]=10*reg[r]+cmd[i]-'0'; break; case 'l': Turn( -90, SPEED); break; case 'r': Turn( 90, SPEED); break; case 'L': Turn( -45, SPEED); break; case 'R': Turn( 45, SPEED); break; case 'e': Turn(-180, SPEED); break; case 'i': Turn( 180, SPEED); break; case 'f': Go( DIST, SPEED); break; case 'b': Go(-DIST, SPEED); break; } } } } int main(void) { Init(); turtle(); return 0; }







Zitieren

Lesezeichen