struct car * make_ford() { struct ford * f = (struct ford *) malloc( sizeof( struct ford )); car_init( &f->base ); f->base.change_gears = ford_change_gears; f->ford_serial_number = next_ford_serial_number++; }
int main(void){ sys_init(); //配置系统时钟72M(包括clock, PLL and Flash configuration) delay_init();//初始化延时 uart1_init(72,9600); uart2_init(36,9600);//时钟为最高时钟的一半 // uart3_init(36,9600);//时钟为最高时钟的一半 led_init(); car_init(); jtag_set(2);//禁止JTAG,释放PB3,PA15 Steering_Init(); uart_printf("ok\r\n"); hwbz_init(); power_init(); while(1){ cmd_handle(); }; return 0; }
void main(){ car_init(); while(1){ sensor_accelerator_read(); sensor_accelerator_calculate(); sensor_electromagnet_read(); angle_control(0); // Speed_R=10;Speed_L=10; float OutData[4]; OutData[0] = angle; //OutData[1] = angle_accZ; OutData[2] = 3 ; OutData[3] = 4; //vcan_sendware((uint8_t *)OutData,sizeof(OutData)); print_fraction(angle); } }
void main1(void) { OLED_Init(); OLED_Fill(0x00);//黑屏 car_init(); OLED_P8x16Str(5,0,"test"); //setup(); //sd_read(); while(1){ sensor_accelerator_read(); sensor_accelerator_calculate(); char buffer [100] ; float OutData[1]; // OutData[0]=angle; // vcan_sendware((char *)OutData,sizeof(OutData)); sprintf(buffer,"%d",(int)angle); //OLED_P8x16Str(5,0," "); //OLED_P8x16Str(6,0,buffer); //motor_left_pid(1); //motor_right_pid(0); angle_control(20); //sensor_electromagnet_read(); //printf("%lld\n",electromagnet_L6); } }
int main(){ //setup log file fpLog = fopen("log.txt", "w"); if(fpLog == NULL){ printf("Failed to open log file\n"); } //seed random srand(time(NULL)); //set up frame limiting clock_t s_cycle, e_cycle; s_cycle = clock(); //get amount of time to init game fprintf(fpLog, "Initializing...\n"); //log allegro_init_install(); //allegro inits Game game; game_init(&game); //initialize game struct TMX_map map; load_map(&game, &map); //load first map Sprite player, car; player_init(&game, &player, &map); //initialize player struct car_init(&game, &car, &map, 32, 32, 5); //initialize car struct gen_npcs(&game, &map); //generate and initialize npcs e_cycle = clock(); //get length of initialization fprintf(fpLog, "Initialization done in %f seconds.\n", (double)(e_cycle - s_cycle) / 1000); //show instructions on how to play display_instructions(&game); //set active sprite game.active_sprite = &player; fprintf(fpLog, "Beginning main loop.\n"); while(game.running){ //to limit frames we have a set refresh rate //to maintain this refresh rate we subtract the //time elapsed over the entire cycle //to do this we get the time at the start of the cycle //and the end to get the difference s_cycle = clock(); //exit sequence exit_sequence(&game); //check if we enter the car enter_car(&game, &player, &car, &map); //toggle debugging if(key[KEY_F1] && !game.debug_cd){ game.debug = !game.debug; printf(game.debug ? "DEBUGGING ENABLED\n" : "DEBUGGING DISABLED\n"); game.debug_cd = 10; }else{ game.debug_cd -= game.debug_cd ? 1 : 0; } //resets game if(key[KEY_F5]){ game_init(&game); load_map(&game, &map); player_init(&game, &player, &map); //initialize player struct car_init(&game, &car, &map, 32, 32, 5); gen_npcs(&game, &map); } //toggle music if(key[KEY_M]){ game.music ? stop_sample(game.bgMusic) : play_sample(game.bgMusic, 255, 128, 1000, 1); } //clear buffer clear_to_color(game.buffer, makecol(0, 0, 0)); //show map masked_blit(map.map, game.buffer, game.cam_x, game.cam_y, 0, 0, game.screen_w, game.screen_h); //pan camera pan_camera(&game); //do mouse click mouse_click(&game, game.active_sprite); npc_sequence(&game, &map); //display the player if we're not in the car if (!game.in_car){ sprite_sequence(&game, &player, &map, !game.in_car); if (key[KEY_SPACE] && !player.bullet_cd){ sprite_shoot(&game, &player); player.bullet_cd = 10; }else{ player.bullet_cd -= player.bullet_cd ? 1 : 0; } }else{ free(player.bullets); player.bullets = NULL; player.bullet_count = 0; } //show car sprite_sequence(&game, &car, &map, game.in_car); //display all overlays blit_overlays(&game); //show hud show_hud(&game, &player); //display buffer to screen stretch_blit(game.buffer, screen, 0, 0, game.buffer->w, game.buffer->h, 0, 0, game.screen_w * STRETCH_FACTOR, game.screen_h * STRETCH_FACTOR); //countdown timer game_tick(&game, &map); e_cycle = clock(); /*maintain consistent framerate by calculating delay of processing, using max because we don't want negative rest*/ printf("\rIteration took %f%20s", (double) (e_cycle - s_cycle), " "); rest(max(game.delay - (double) (e_cycle - s_cycle), 0)); } fprintf(fpLog, "Running exit scripts...\n"); //destroy all bitmaps destroy_bitmaps(&game, &player, &map, &car); fprintf(fpLog, "Exiting...\n"); return 0; }END_OF_MAIN();
void cmd_handle(void){ unsigned char cmd; unsigned char cmd_param[8]; int i; cmd = uart1_receive(); uart1_send_char(cmd); // uart2_send_char('O'); // uart3_send_char('K'); switch(cmd){ case CMD_FORWARD://前进 car_forward(); break; case CMD_BACK ://后退 car_back(); break; case CMD_LEFT://向左移动 car_left(); break; case CMD_RIGHT://向右移动 car_right(); break; case CMD_STOP://制动 car_stop(); break; case CMD_INIT://初始化 car_init(); break; case CMD_STANDBY://待机 car_standby(); break; case CMD_CIRCLE1://转 car_circle(1); break; case CMD_CIRCLE2://反转 car_circle(0); break; case CMD_MOTOR_SET://设置参数 for(i=0;i<8;i++){ cmd_param[i]=uart1_receive(); } car_set(cmd_param); for(i=0;i<8;i++){ uart1_send_char(cmd_param[i]); } break; case CMD_RESUME://恢复 car_resume(); break; case CMD_POWER_SET: for(i=0;i<2;i++){ cmd_param[i]=uart1_receive(); } power_set(cmd_param); for(i=0;i<2;i++){ uart1_send_char(cmd_param[i]); } break; case CMD_STEER_SET: for(i=0;i<3;i++){ cmd_param[i]=uart1_receive(); } steering_set(cmd_param); for(i=0;i<3;i++){ uart1_send_char(cmd_param[i]); } break; case CMD_STEER_SHOW: steering_show(); break; case CMD_STEER_SET_INIT: steering_set_init(); break; case CMD_PLAY_WAV: cmd_param[0]=uart1_receive(); play_wav(cmd_param[0]); break; default:break; } }