pub(crate) async fn self_test(motors: &mut Motors<'_>)
Une passe de self-test : chaque moteur monte en rampe puis s’éteint. Un seul moteur actif à la fois → toujours sous le plafond 500 mA USB.