Minimal changes related to the behavior of the auxiliary circuit.

This commit is contained in:
Angel Maldonado 2019-09-29 19:57:44 +02:00
parent 1ca6cd6c6d
commit 25ed7efbb7
3 changed files with 14 additions and 10 deletions

View file

@ -25,7 +25,7 @@ void update_track( track_t* tck, car_t* car ) {
if ( car->trackID == TRACK_MAIN if ( car->trackID == TRACK_MAIN
&& (int)car->dist % cfg->nled_main == cfg->init_aux && (int)car->dist % cfg->nled_main == cfg->init_aux
&& get_controllerStatus( ct ) != 0 ) { && get_controllerStatus( ct ) == 0 ) {
car->trackID = TRACK_AUX; car->trackID = TRACK_AUX;
car->dist_aux = 0; 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 ); else if ( car->trackID == TRACK_MAIN ) process_main_track( tck, car );
/* Update car lap */ /* 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 ){ 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() ) {
car->speed = get_accel ()*10; car->speed = get_accel ()*10;
tck->ledcoin = -1; tck->ledcoin = COIN_RESET;
}; };
car->speed -= car->speed * cfg->kf; car->speed -= car->speed * cfg->kf;

View file

@ -13,6 +13,11 @@ extern "C"{
#include "olr-controller.h" #include "olr-controller.h"
#include "olr-param.h" #include "olr-param.h"
enum stcoin{
COIN_RESET = -2,
COIN_WAIT = -1,
};
enum{ enum{
NOT_TRACK = 0, NOT_TRACK = 0,
TRACK_MAIN, TRACK_MAIN,
@ -22,7 +27,6 @@ enum{
NUM_TRACKS, NUM_TRACKS,
}; };
enum status{ enum status{
CAR_WAITING = 0, CAR_WAITING = 0,

View file

@ -42,6 +42,8 @@ enum{
MAX_CARS = 4, MAX_CARS = 4,
}; };
enum loglevel{ enum loglevel{
ECHO = 0, ECHO = 0,
DISABLE = 0, DISABLE = 0,
@ -143,7 +145,6 @@ void init_track( track_t* tck ){
param_load( &tck->cfg ); param_load( &tck->cfg );
tck->gmap = gravity_map; tck->gmap = gravity_map;
init_ramp( tck ); init_ramp( tck );
tck->ledcoin = -1;
} }
void setup() { void setup() {
@ -205,6 +206,7 @@ void loop() {
reset_carPosition( &cars[i] ); reset_carPosition( &cars[i] );
cars[i].repeats = 0; cars[i].repeats = 0;
} }
tck.ledcoin = COIN_RESET;
race.phase = COUNTDOWN; race.phase = COUNTDOWN;
send_phase( race.phase ); send_phase( race.phase );
} }
@ -222,10 +224,9 @@ void loop() {
} }
else if( race.phase == RACING ) { else if( race.phase == RACING ) {
strip_clear( &tck ); strip_clear( &tck );
if( tck.ledcoin == COIN_RESET ) {
if( tck.ledcoin == -1 ) { tck.ledcoin = COIN_WAIT;
tck.ledcoin = 0;
tck.ledtime = millis() + random(2000,7000); tck.ledtime = millis() + random(2000,7000);
} }
@ -526,7 +527,6 @@ ack_t parseCommands(AsyncSerial &serial) {
pch = strtok (NULL, ","); pch = strtok (NULL, ",");
if( !pch ) return ack; if( !pch ) return ack;
int none = atoi( pch );
int err = track_configure( &tck, init_aux ); int err = track_configure( &tck, init_aux );
if( err ) return ack; if( err ) return ack;