From 095aef2d3fbf8159722bc41586e93d967d16da15 Mon Sep 17 00:00:00 2001 From: Blboun3 <62328614+Blboun3@users.noreply.github.com> Date: Tue, 14 Nov 2023 11:14:18 +0100 Subject: [PATCH] Denk proof backup #too_many --- app | Bin 229208 -> 231444 bytes app.cpp | 108 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 93 insertions(+), 15 deletions(-) diff --git a/app b/app index 77395294bd47d26809b7bb8ef23ac5505e5b7f13..ac9fa118e832f1c55ce9ffdf5555e81de702c922 100644 GIT binary patch delta 58673 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 MbUM!tPC#<}FV9&&p8x;= delta 56957 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 e@9wup(Wz9fF#cpkrnvv&ORs*< diff --git a/app.cpp b/app.cpp index 6c6bc15..3248b33 100644 --- a/app.cpp +++ b/app.cpp @@ -4,10 +4,17 @@ #include #include #include +#include +#include /* Change notes: +0.4.3 - 'HELGA' (#) +Motor problems indicator with colors: + left - red, right - orange, + when motor is stuck change LED color + 0.4.2 - 'HELGA' (#67) Updated run_short() to run_short_side() Added gyro @@ -60,6 +67,13 @@ struct MPWRS int rMotorPWR; }; +// Structure to hold motor powers and speed modifier +struct MPWRSPlus +{ + MPWRS motor_powers; + int SPEED_MODIFIER; +}; + // Structure to hold notes struct note { @@ -100,6 +114,21 @@ void close_door(ev3cxx::Motor hinge) hinge.onForDegrees(25, 200); } +void turn(ev3cxx::MotorTank naVodu, ev3cxx::GyroSensor naklonoMer) +{ + int startAngle = naklonoMer.angle(); + int endAngle = startAngle - 90; + naVodu.onForRotations(-25, 50, 1.25); + if(ev3cxx::abs(naklonoMer.angle()) > ev3cxx::abs(endAngle) + 2 || ev3cxx::abs(naklonoMer.angle()) < ev3cxx::abs(endAngle) - 2) { // !!!! NEFUNGUJEž + ev3_speaker_play_tone(NOTE_C4, 250); + tslp_tsk(250); + ev3_speaker_play_tone(NOTE_C4, 125); + tslp_tsk(125); + ev3_speaker_play_tone(NOTE_D4, 250); + tslp_tsk(250); + } +} + /* Function to pick up all cubes on shorter side return true if ran till the end and false if stopped by middle button @@ -108,7 +137,7 @@ bool run_short_side(ev3cxx::MotorTank motors, MPWRS idealMPWRS, ev3cxx::GyroSens { const int LEFT_THRESHOLD = -2; const int RIGHT_THRESHOLD = 2; - const int CORRECTION_MULTIPLIER = 10; + const int CORRECTION_MULTIPLIER = 20; const int CYCLE_LIMIT = 90; gyro.resetHard(); @@ -184,6 +213,7 @@ bool run_short_side(ev3cxx::MotorTank motors, MPWRS idealMPWRS, ev3cxx::GyroSens run = false; } } + motors.off(true); ev3_speaker_play_tone(NOTE_C4, 250); tslp_tsk(250); ev3_speaker_play_tone(NOTE_C4, 125); @@ -199,19 +229,50 @@ bool run_short_side(ev3cxx::MotorTank motors, MPWRS idealMPWRS, ev3cxx::GyroSens return !error; } +MPWRSPlus calculate_motor_pwrs() +{ + int batteryLevel = ev3_battery_voltage_mV(); + + double squared = (double)0.00003 * (double)(batteryLevel * batteryLevel); + double linear = -0.42 * (double)batteryLevel; + double constant = 1470; + double modifier = squared + linear + constant; + int SPEED_MODIFIER = 30 - ((int)round(modifier)); + // ev3cxx::display.format(4, "Q: % \nL: % \nC: % \nSM: % ") % squared % linear % constant % modifier; + + MPWRS idealMPWRS; + idealMPWRS.lMotorPWR = 85 + SPEED_MODIFIER; + idealMPWRS.rMotorPWR = 70 + SPEED_MODIFIER; + + MPWRSPlus retVal; + retVal.motor_powers = idealMPWRS; + retVal.SPEED_MODIFIER = SPEED_MODIFIER; + return retVal; +} + void main_task(intptr_t unused) { // Create version info // version createVersion(int versionID, const char *codename, int major, int minor, int patch, int day, int month, int year, int hour, int minute) - const version VERSION = createVersion(67, "HELGA", 0, 4, 2, 10, 11, 2023, 14, 40); + const version VERSION = createVersion(70, "HELGA", 0, 4, 2, 10, 11, 2023, 14, 40); // Set-up screen ev3cxx::display.resetScreen(); ev3cxx::display.setFont(EV3_FONT_MEDIUM); + // Set up motor powers + MPWRSPlus calcedPWRS = calculate_motor_pwrs(); + + MPWRS idealMPWRS = calcedPWRS.motor_powers; + const int SPEED_MODIFIER = calcedPWRS.SPEED_MODIFIER; + + MPWRS motor_powers; + motor_powers.lMotorPWR = idealMPWRS.lMotorPWR; + motor_powers.rMotorPWR = idealMPWRS.rMotorPWR; + // Print version information on screen - ev3cxx::display.format(" DOBREMYSL\nVERSION: % .% .% #% \nNAME: % \nBattery: % mV") % VERSION.major % VERSION.minor % VERSION.patch % VERSION.id % VERSION.codename % ev3_battery_voltage_mV(); + ev3cxx::display.format(" DOBREMYSL\n% .% .% #% \nNAME: % \nBattery: % mV % \n % ") % VERSION.major % VERSION.minor % VERSION.patch % VERSION.id % VERSION.codename % ev3_battery_voltage_mV() % SPEED_MODIFIER; ev3cxx::statusLight.setColor(ev3cxx::StatusLightColor::GREEN); @@ -234,16 +295,6 @@ void main_task(intptr_t unused) ev3_speaker_play_tone(NOTE_F4, 75); tslp_tsk(200); - // Set up motor powers - const int SPEED_MODIFIER = 10; - MPWRS idealMPWRS; - idealMPWRS.lMotorPWR = 75 - SPEED_MODIFIER; - idealMPWRS.rMotorPWR = 60 - SPEED_MODIFIER; - - MPWRS motor_powers; - motor_powers.lMotorPWR = idealMPWRS.lMotorPWR; - motor_powers.rMotorPWR = idealMPWRS.rMotorPWR; - // Set up motors ev3cxx::Motor hinge(ev3cxx::MotorPort::A, ev3cxx::MotorType::LARGE); // Hinge motor ev3cxx::MotorTank motors(ev3cxx::MotorPort::B, ev3cxx::MotorPort::C); // Tank motors @@ -255,8 +306,35 @@ void main_task(intptr_t unused) // Start program btnEnter.waitForClick(); - // turn_left(motors); - bool side_1 = run_short_side(motors, motor_powers, gyro); + for (int i = 0; i < 10; i++) + { + turn(motors, gyro); + ev3_speaker_play_tone(NOTE_F4, 100); + tslp_tsk(200); + ev3_speaker_play_tone(NOTE_A4, 100); + tslp_tsk(200); + ev3_speaker_play_tone(NOTE_C4, 100); + tslp_tsk(200); + ev3_speaker_play_tone(NOTE_F4, 50); + tslp_tsk(100); + ev3_speaker_play_tone(NOTE_A4, 50); + tslp_tsk(100); + ev3_speaker_play_tone(NOTE_C4, 50); + tslp_tsk(100); + ev3_speaker_play_tone(NOTE_F4, 25); + tslp_tsk(50); + ev3_speaker_play_tone(NOTE_A4, 25); + tslp_tsk(50); + ev3_speaker_play_tone(NOTE_C4, 25); + tslp_tsk(50); + ev3_speaker_play_tone(NOTE_F4, 12); + tslp_tsk(25); + ev3_speaker_play_tone(NOTE_A4, 12); + tslp_tsk(25); + ev3_speaker_play_tone(NOTE_C4, 12); + tslp_tsk(25); + } + bool side_1 = false;//run_short_side(motors, motor_powers, gyro); if (!side_1) {