# --- SCAN DELLE PORTE A–F: CHE DISPOSITIVO C'È COLLEGATO? (fix senza p.name) --- from pybricks.parameters import Port # costanti delle porte fisiche: A, B, C, D, E, F from pybricks.pupdevices import ( ColorDistanceSensor, # sensore colore+distanza (SPIKE Essential / PUP combo) ColorSensor, # sensore colore (SPIKE Prime) ForceSensor, # sensore di forza/pulsante Motor, # motori con encoder UltrasonicSensor, # sensore ultrasuoni ) from pybricks.tools import wait # piccole attese per non “martellare” il bus # Mapping esplicito: da oggetto Port alla sua etichetta stringa PORT_LABEL = { Port.A: "A", Port.B: "B", Port.C: "C", Port.D: "D", Port.E: "E", Port.F: "F", } def scan_ports() -> list[tuple[str, str]]: """ Ritorna una lista di coppie (porta, cosa_c'è). Esempio: [("A","Motor"), ("B","vuota"), ...] """ # elenco delle porte esterne da scandire in ordine ports: list[Port] = [Port.A, Port.B, Port.C, Port.D, Port.E, Port.F] # accumulatore risultati (stringa etichetta porta, descrizione) results: list[tuple[str, str]] = [] # analizza ogni porta for p in ports: descr: str = "-" # predefinito: niente collegato/riconosciuto # prova come MOTORE (se fallisce, solleva OSError -> proviamo altro) try: _ = Motor(p) descr = "Motor" except OSError: # prova come COLOR SENSOR “classico” try: _ = ColorSensor(p) descr = "ColorSensor" except OSError: # prova come COLOR+DISTANCE (combo sensor) try: _ = ColorDistanceSensor(p) descr = "ColorDistanceSensor" except OSError: # prova come ULTRASONIC try: _ = UltrasonicSensor(p) descr = "UltrasonicSensor" except OSError: # prova come FORCE SENSOR try: _ = ForceSensor(p) descr = "ForceSensor" except OSError: # nessun device riconosciuto: lasciamo "vuota" pass # aggiungi la riga risultato con etichetta porta (dal mapping) e descrizione results.append((PORT_LABEL[p], descr)) # piccola pausa (facoltativa) per stabilità del bus wait(5) # ritorna la lista completa return results # --- Esempio d'uso minimale (stampa la lista) --- print(scan_ports()) # otterrai qualcosa tipo: [('A','Motor'), ('B','vuota'), ...]