void __nxtAssert(const char *file, int line, const char *exp) { display_clear(0); display_goto_xy(0, 0); display_string("assert"); display_goto_xy(0, 1); display_string("File: "); display_string(file); display_goto_xy(0, 2); display_string("Line: "); display_int(line,0); display_goto_xy(0, 3); display_string(exp); display_update(); #ifdef NXT_WARN_ASSERT display_goto_xy(0, 3); display_string("Press ENTER"); #endif while(true) { #ifdef NXT_WARN_ASSERT if(ecrobot_is_ENTER_button_pressed()) { display_clear(0); display_goto_xy(0, 0); return; } #endif } }
int UI::courseSelect(){ int course = -1; display_goto_xy(4, 1); while(1){ if(ecrobot_is_RUN_button_pressed()){ course = course * (-1); if(course == 1){ display_string(" IN COURSE"); display_goto_xy(4, 1); } else{ display_string("OUT COURSE"); display_goto_xy(4, 1); } } if(ecrobot_is_ENTER_button_pressed()){ display_goto_xy(6, 3); display_string("READY"); break; } display_update(); // 500msecウェイトする systick_wait_ms(500); } display_update(); return course; }
void sonar_sensor_measurement(void) { // Variables used for distance measurement S32 distance_left = 0; S32 distance_right = 0; int measurements = 0; // Display menu reset_sonar_measurement_menu(); while(true) { // Update values distance_left += ecrobot_get_sonar_sensor(SONAR_SENSOR_FRONT); distance_right += ecrobot_get_sonar_sensor(SONAR_SENSOR_REAR); // Calculate average of new and previous distance_left /= 2; distance_right /= 2; // Wait when over some measurements if(measurements++ % MEASUREMENT_WAIT_INTERVAL == 0) { // Update the display display_sonar_sensor_measurements(distance_left, distance_right); systick_wait_ms(MEASUREMENT_WAIT); } // Chek if the enter button is pressed for long enough time to exit if(ecrobot_is_ENTER_button_pressed()) { // Time when the button was pressed int enter_button_pressed_start_time = systick_get_ms(); // Continusly check if enought time has past to exit while(ecrobot_is_ENTER_button_pressed()) { if(enter_button_pressed_start_time + ENTER_BUTTON_EXIT_TIMEOUT < systick_get_ms()) { return; } } } } }