diff --git a/lib/Openledrace-lib/olr-lib.c b/lib/Openledrace-lib/olr-lib.c index 4d4339e..886a750 100644 --- a/lib/Openledrace-lib/olr-lib.c +++ b/lib/Openledrace-lib/olr-lib.c @@ -25,7 +25,7 @@ void update_track( track_t* tck, car_t* car ) { if ( car->trackID == TRACK_MAIN && (int)car->dist % cfg->nled_main == cfg->init_aux - && get_controllerStatus( ct ) != 0 ) { + && get_controllerStatus( ct ) == 0 ) { car->trackID = TRACK_AUX; car->dist_aux = 0; @@ -42,7 +42,7 @@ void update_track( track_t* tck, car_t* car ) { else if ( car->trackID == TRACK_MAIN ) process_main_track( tck, car ); /* Update car lap */ - if ( car->dist > cfg->nled_main*car->nlap ) car->nlap++; + if ( car->dist > ( cfg->nled_main*car->nlap -1) ) car->nlap++; } void process_aux_track( track_t* tck, car_t* car ){ @@ -52,7 +52,7 @@ void process_aux_track( track_t* tck, car_t* car ){ && car->speed <= get_accel() ) { car->speed = get_accel ()*10; - tck->ledcoin = -1; + tck->ledcoin = COIN_RESET; }; car->speed -= car->speed * cfg->kf; diff --git a/lib/Openledrace-lib/olr-lib.h b/lib/Openledrace-lib/olr-lib.h index f140489..4bbb2e9 100644 --- a/lib/Openledrace-lib/olr-lib.h +++ b/lib/Openledrace-lib/olr-lib.h @@ -13,6 +13,11 @@ extern "C"{ #include "olr-controller.h" #include "olr-param.h" +enum stcoin{ + COIN_RESET = -2, + COIN_WAIT = -1, +}; + enum{ NOT_TRACK = 0, TRACK_MAIN, @@ -22,7 +27,6 @@ enum{ NUM_TRACKS, }; - enum status{ CAR_WAITING = 0, diff --git a/src/open-led-race.ino b/src/open-led-race.ino index cf80f75..e93a7e9 100644 --- a/src/open-led-race.ino +++ b/src/open-led-race.ino @@ -42,6 +42,8 @@ enum{ MAX_CARS = 4, }; + + enum loglevel{ ECHO = 0, DISABLE = 0, @@ -143,7 +145,6 @@ void init_track( track_t* tck ){ param_load( &tck->cfg ); tck->gmap = gravity_map; init_ramp( tck ); - tck->ledcoin = -1; } void setup() { @@ -205,6 +206,7 @@ void loop() { reset_carPosition( &cars[i] ); cars[i].repeats = 0; } + tck.ledcoin = COIN_RESET; race.phase = COUNTDOWN; send_phase( race.phase ); } @@ -222,10 +224,9 @@ void loop() { } else if( race.phase == RACING ) { - strip_clear( &tck ); - - if( tck.ledcoin == -1 ) { - tck.ledcoin = 0; + strip_clear( &tck ); + if( tck.ledcoin == COIN_RESET ) { + tck.ledcoin = COIN_WAIT; tck.ledtime = millis() + random(2000,7000); } @@ -526,7 +527,6 @@ ack_t parseCommands(AsyncSerial &serial) { pch = strtok (NULL, ","); if( !pch ) return ack; - int none = atoi( pch ); int err = track_configure( &tck, init_aux ); if( err ) return ack;