diff --git a/spinnyboy_rust/src/bin/main.rs b/spinnyboy_rust/src/bin/main.rs index db46560..5faba26 100644 --- a/spinnyboy_rust/src/bin/main.rs +++ b/spinnyboy_rust/src/bin/main.rs @@ -62,8 +62,7 @@ extern crate alloc; //target RPM const DEFAULT_TARGET_RPM: u32 = 4000; //in seconds -const DEFAULT_SPIN_TIME: u64 = 10; -const DEFAULT_DRY_SPIN_TIME: u64 = 10; +const DEFAULT_SPIN_TIME: u32 = 10; // This creates a default app-descriptor required by the esp-idf bootloader. // For more information see: esp_bootloader_esp_idf::esp_app_desc!(); @@ -130,7 +129,7 @@ fn main() -> ! { let loop_time = Duration::from_micros(10); let cfg = pid::PidConfigBuilder::default() .kp(2.0) - .ki(0.4) + .ki(0.0) .output_limits(100.00, 400.00) .sample_time(loop_time) .filter_tc(0.1) @@ -138,6 +137,8 @@ fn main() -> ! { .expect("Failed to build a PID configuration"); let controller = pid::FuncPidController::new(cfg); let mut ctx = PidContext::new(Millis(0), 0.0, 0.0); + let set_point = DEFAULT_TARGET_RPM; + let mut rpm = 0; let mut control: f32 = 200.0; let mut timg0 = TimerGroup::new(peripherals.TIMG0); let coat_timer = timg0.timer0; @@ -176,10 +177,8 @@ fn main() -> ! { let mut display = Nextion::new(&mut uart0); //we just set it to page0 to be sure display.send_command(b"page page0"); - let mut target_rpm = DEFAULT_TARGET_RPM; - let mut timer: u64 = DEFAULT_SPIN_TIME; - let mut target_dry_rpm = DEFAULT_DRY_SPIN_TIME; - let mut dry_timer: u64 = DEFAULT_SPIN_TIME; + let mut _rpm = DEFAULT_TARGET_RPM; + let mut _timer = DEFAULT_SPIN_TIME; let mut started = false; loop { if display.read_ready() { @@ -199,19 +198,11 @@ fn main() -> ! { } Ok(Command::SetRpm(x)) => { rprintln!("SET_RPM with {}", x); - target_rpm = x; + _rpm = x; } Ok(Command::SetTimer(x)) => { rprintln!("SETTING TIMER {}", x); - timer = x as _; - } - Ok(Command::SetRpm2(x)) => { - rprintln!("SET_RPM with {}", x); - target_dry_rpm = x.try_into().expect("Couldn't cast RPM2 to u64"); - } - Ok(Command::SetTimer2(x)) => { - rprintln!("SETTING TIMER {}", x); - dry_timer = x as _; + _timer = x; } Ok(Command::SendConfig) => { rprintln!("SEND CONFIG"); @@ -233,28 +224,26 @@ fn main() -> ! { if started { rprintln!("STARTING!"); let _ = coat_timer - .load_value(esp_hal::time::Duration::from_secs(timer)) + .load_value(esp_hal::time::Duration::from_secs(10)) .expect("TODO: Could not set timer for coating! "); dshot_esc.arm(); let mut rpm_fail_ctr = 0; - let set_point = target_rpm; coat_timer.start(); - let mut current_rpm = 0; while !coat_timer.is_interrupt_set() { dshot_esc.process(); //let control_val = dc_driver:: //this bad boy needs floats, this will be fun :) control = 200.00; dshot_esc.set_throttle(control as _); - current_rpm = match dshot_esc.get_rpm() { + rpm = match dshot_esc.get_rpm() { Some(x) => { // rprintln!("GOT RPM {}", x); x } None => { - rpm_fail_ctr += 1; + rpm_fail_ctr+=1; // rprintln!("NO RPM!"); - current_rpm + rpm } }; // rprintln!("RPM:{}",rpm); @@ -263,28 +252,24 @@ fn main() -> ! { let timestamp = esp_hal::time::Instant::now() .duration_since_epoch() .as_millis(); - (control, ctx) = controller.compute( - ctx, - current_rpm as _, - set_point as _, - Millis(timestamp), - None, - ); + (control, ctx) = + controller.compute(ctx, rpm as _, set_point as _, Millis(timestamp), None); let dumped_context = ctx.last_time().expect("LAST TIME!"); - rprintln!("control:{},rpm:{}", control, current_rpm); + rprintln!("control:{},rpm:{}", control,rpm); //first we send the RPM! - if display.write_ready() { - let running_rpm = format!("rpm.val={}", current_rpm); + if display.write_ready(){ + let running_rpm = format!("rpm.val={}", rpm); display.send_command(running_rpm.to_string().as_bytes()); } - if display.write_ready() { + if display.write_ready(){ let counter = format!("counter.val={}", 1234); display.send_command(counter.to_string().as_bytes()); + } } rprintln!("COATING done!"); - rprintln!("RPM_READ_FAILS {}", rpm_fail_ctr); + rprintln!("RPM_READ_FAILS {}",rpm_fail_ctr); started = false; display.send_command(b"page page0"); } diff --git a/spinnyboy_rust/src/bin/peripherals/mod.rs b/spinnyboy_rust/src/bin/peripherals/mod.rs index 4f881e2..5998a6e 100644 --- a/spinnyboy_rust/src/bin/peripherals/mod.rs +++ b/spinnyboy_rust/src/bin/peripherals/mod.rs @@ -7,8 +7,6 @@ pub enum Command { Stop, SendConfig, CommandSuccess, - SetRpm2(u32), - SetTimer2(u32), } #[derive(Debug)] pub enum ErrCommand { diff --git a/spinnyboy_rust/src/bin/peripherals/nextion.rs b/spinnyboy_rust/src/bin/peripherals/nextion.rs index d96a6a7..ce11981 100644 --- a/spinnyboy_rust/src/bin/peripherals/nextion.rs +++ b/spinnyboy_rust/src/bin/peripherals/nextion.rs @@ -116,14 +116,6 @@ impl<'a> Nextion<'a> { Ok(Command::SetTimer(time)) } 05 => Ok(Command::SendConfig), - 06 => { - let rpm = u32::from_le_bytes(buf[1..5].try_into().expect("failed to parse rpm!")); - Ok(Command::SetRpm2(rpm)) - } - 07 => { - let time = u32::from_le_bytes(buf[1..5].try_into().expect("failed to parse rpm!")); - Ok(Command::SetTimer2(time)) - } 00 => Ok(Command::CommandSuccess), _ => Err(ErrCommand::NoValidCmd), }