From b01c8b2dafc23b95b0e2beb8f8f6fa0aed74aacb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20K=C3=A4nner?= Date: Sun, 29 Jan 2023 16:08:18 +0100 Subject: [PATCH] Make motor and Sensor selection dynamic --- src/main.rs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main.rs b/src/main.rs index 7accc2f..41beec8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,11 +3,7 @@ mod display; use buttons::SmartEv3Buttons; use display::{draw_calibration, draw_driving, draw_finished, draw_settings, font, Parameter}; -use ev3dev_lang_rust::{ - motors::{LargeMotor, MotorPort}, - sensors::{ColorSensor, SensorPort}, - Ev3Error, Ev3Result, Screen, -}; +use ev3dev_lang_rust::{motors::LargeMotor, sensors::ColorSensor, Ev3Error, Ev3Result, Screen}; use pid::Pid; use rand::{thread_rng, Rng}; use rusttype::Font; @@ -19,9 +15,9 @@ use std::{ use thiserror::Error; fn main() -> Result<(), Box> { - let left_motor = LargeMotor::get(MotorPort::OutB)?; - let right_motor = LargeMotor::get(MotorPort::OutC)?; - let sensor = ColorSensor::get(SensorPort::In3)?; + let motors = LargeMotor::list()?; + let [right_motor, left_motor] = &motors[..] else {println!("motors: {motors:?}"); Err("need two motors")?}; + let sensor = ColorSensor::find()?; let mut buttons = SmartEv3Buttons::new()?; let mut screen = Screen::new()?; let font = font(); @@ -42,7 +38,7 @@ fn main() -> Result<(), Box> { draw_driving(&mut screen, &font); let result = follow_line( - (&left_motor, &right_motor), + (left_motor, right_motor), &sensor, &mut buttons, setpoint,