Fix some bugs related to aux circuit
This commit is contained in:
parent
3534d0f146
commit
1ca6cd6c6d
3 changed files with 27 additions and 29 deletions
|
@ -3,11 +3,6 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
static int T_SPEED_COIN = 0;
|
||||
|
||||
|
||||
void process_main_track( track_t* tck, car_t* car );
|
||||
void process_aux_track( track_t* tck, car_t* car );
|
||||
|
||||
|
@ -30,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;
|
||||
|
@ -51,16 +46,13 @@ void update_track( track_t* tck, car_t* car ) {
|
|||
}
|
||||
|
||||
void process_aux_track( track_t* tck, car_t* car ){
|
||||
controller_t* ct = car->ct;
|
||||
struct cfgtrack const* cfg = &tck->cfg.track;
|
||||
|
||||
if ( (int)car->dist_aux == tck->led_speed
|
||||
&& car->speed <= get_accel ( )
|
||||
&& ct->flag_sw == 0 ) {
|
||||
if ( (int)car->dist_aux == tck->ledcoin
|
||||
&& car->speed <= get_accel() ) {
|
||||
|
||||
car->speed = get_accel ()*10;
|
||||
tck->led_speed = 0;
|
||||
//T_SPEED_COIN = millis() + random(5000,30000);
|
||||
tck->ledcoin = -1;
|
||||
};
|
||||
|
||||
car->speed -= car->speed * cfg->kf;
|
||||
|
|
|
@ -51,8 +51,9 @@ typedef struct{
|
|||
|
||||
typedef struct {
|
||||
struct cfgparam cfg;
|
||||
int led_speed; //LED_SPEED_COIN
|
||||
byte* gmap; //pointer to gravity map
|
||||
int ledcoin; //LED_SPEED_COIN
|
||||
uint32_t ledtime;
|
||||
byte* gmap; //pointer to gravity map
|
||||
}track_t;
|
||||
|
||||
|
||||
|
|
|
@ -38,8 +38,6 @@
|
|||
#define COLOR4 track.Color(120,120,0)
|
||||
|
||||
|
||||
//int LED_SPEED_COIN =-1;
|
||||
|
||||
enum{
|
||||
MAX_CARS = 4,
|
||||
};
|
||||
|
@ -113,7 +111,6 @@ char txbuff[64];
|
|||
const int dataLength = 32;
|
||||
byte data[dataLength];
|
||||
|
||||
unsigned long int T_SPEED_COIN;
|
||||
static unsigned long lastmillis = 0;
|
||||
|
||||
int win_music[] = {
|
||||
|
@ -146,12 +143,13 @@ void init_track( track_t* tck ){
|
|||
param_load( &tck->cfg );
|
||||
tck->gmap = gravity_map;
|
||||
init_ramp( tck );
|
||||
tck->led_speed = -1;
|
||||
tck->ledcoin = -1;
|
||||
}
|
||||
|
||||
void setup() {
|
||||
|
||||
Serial.begin(115200);
|
||||
randomSeed( analogRead(A0) + analogRead(A1) );
|
||||
setup_controller( );
|
||||
init_track( &tck );
|
||||
|
||||
|
@ -214,7 +212,7 @@ void loop() {
|
|||
|
||||
if( race.cfg.startline ){
|
||||
start_race( &tck );
|
||||
T_SPEED_COIN = millis() + random(5000,30000);
|
||||
|
||||
for( int i = 0; i < race.numcars; ++i ) {
|
||||
cars[i].st = CAR_ENTER;
|
||||
}
|
||||
|
@ -226,11 +224,15 @@ void loop() {
|
|||
|
||||
strip_clear( &tck );
|
||||
|
||||
if( tck.led_speed > 0 )
|
||||
draw_coin( &tck );
|
||||
else if( millis() > T_SPEED_COIN )
|
||||
tck.led_speed = random( 20, tck.cfg.track.nled_aux - 20 );
|
||||
if( tck.ledcoin == -1 ) {
|
||||
tck.ledcoin = 0;
|
||||
tck.ledtime = millis() + random(2000,7000);
|
||||
}
|
||||
|
||||
if( tck.ledcoin > 0 )
|
||||
draw_coin( &tck );
|
||||
else if( millis() > tck.ledtime )
|
||||
tck.ledcoin = random( 20, tck.cfg.track.nled_aux - 20 );
|
||||
|
||||
for( int i = 0; i < race.numcars; ++i ) {
|
||||
run_racecycle( &cars[i], i );
|
||||
|
@ -252,8 +254,11 @@ void loop() {
|
|||
/* ---------------- */
|
||||
}
|
||||
else if( race.phase == COMPLETE ) {
|
||||
if ( race.cfg.finishline )
|
||||
if ( race.cfg.finishline ){
|
||||
winner_fx( );
|
||||
strip_clear( &tck );
|
||||
}
|
||||
track.show();
|
||||
race.phase = READY;
|
||||
}
|
||||
|
||||
|
@ -356,8 +361,8 @@ void start_race( track_t* tck ) {
|
|||
track.show();
|
||||
delay(2000);
|
||||
|
||||
track.setPixelColor(12, track.Color(0,255,0));
|
||||
track.setPixelColor(11, track.Color(0,255,0));
|
||||
track.setPixelColor(12, track.Color(255,0,0));
|
||||
track.setPixelColor(11, track.Color(255,0,0));
|
||||
track.show();
|
||||
|
||||
tone(PIN_AUDIO,400);
|
||||
|
@ -376,8 +381,8 @@ void start_race( track_t* tck ) {
|
|||
|
||||
track.setPixelColor(9, track.Color(0,0,0));
|
||||
track.setPixelColor(10, track.Color(0,0,0));
|
||||
track.setPixelColor(8, track.Color(255,0,0));
|
||||
track.setPixelColor(7, track.Color(255,0,0));
|
||||
track.setPixelColor(8, track.Color(0,255,0));
|
||||
track.setPixelColor(7, track.Color(0,255,0));
|
||||
track.show();
|
||||
|
||||
tone(PIN_AUDIO,1200);
|
||||
|
@ -408,7 +413,7 @@ void strip_clear( track_t* tck ) {
|
|||
|
||||
void draw_coin( track_t* tck ) {
|
||||
struct cfgtrack const* cfg = &tck->cfg.track;
|
||||
track.setPixelColor( 1 + cfg->nled_main + tck->led_speed, track.Color(0,0,250) );
|
||||
track.setPixelColor( 1 + cfg->nled_main + tck->ledcoin, track.Color(0,0,250) );
|
||||
}
|
||||
|
||||
void draw_win( track_t* tck, car_t* car) {
|
||||
|
|
Loading…
Add table
Reference in a new issue