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