Skip to main content

Lezione 3: Ingresso con sensori multipli

Nella lezione precedente, il sensore di distanza è stato utilizzato per determinare se il robot VR ha rilevato o meno un oggetto e, in tal caso, ha guidato in avanti verso l'oggetto. Tuttavia, non sono stati utilizzati valori del sensore per determinare se il robot VR fosse vicino al bordo del parco giochi per fermarlo. Fermare il robot VR quando era vicino al bordo del parco giochi gli impedirebbe di allontanarsi lateralmente.

Il progetto VEXcode VR della lezione precedente utilizzando il sensore di distanza sul robot per rilevare i castelli, quindi guidarli per bloccarli, è mostrato a sinistra. Sulla destra c'è la finestra del parco giochi che mostra un progetto in corso, con diversi castelli che si sono schiantati, ma il robot VR sta per allontanarsi dal bordo del parco giochi.

Così com'è, il progetto ripete i comportamenti di andare avanti e girare, per sempre. Tuttavia, non vi è alcuna condizione per verificare la presenza del bordo rosso intorno al Parco Giochi. Pertanto, il robot VR può cadere dal parco giochi quando si guida in avanti.

Una vista laterale del robot VR sul Dynamic Castle Crasher Playground, che spinge un pezzo di un castello fuori dal lato e sta per allontanarsi dal bordo stesso.

È necessario un altro sensore affinché il robot VR sia in grado di determinare se è vicino al bordo del parco giochi o meno. I comportamenti di guida in avanti e di svolta devono solo ripetersi fino a quando non viene rilevato il bordo rosso. Pertanto, il blocco [Forever] può essere sostituito con il blocco [Repeat until], al fine di ripetere i comportamenti di guida in avanti e di rotazione fino a quando non viene soddisfatta la condizione di rilevamento del bordo rosso. Il sensore Down Eye può essere utilizzato per determinare se il robot VR è vicino al bordo del parco giochi rilevando il bordo rosso intorno al parco giochi.

Un blocco di rilevamento del colore VEXcode VR legge Down Eye rileva il rosso?.
  • Caricare il progetto Unit9Lesson2 dalla lezione precedente.
Il progetto della lezione 2 dell'Unità 9. Il progetto inizia con un blocco Quando iniziato con un blocco per sempre allegato. All'interno del blocco Forever c'è un blocco If then con la Distanza Frontale ha trovato un oggetto come parametro. Il ramo If then ha un commento che dice Knock over the building found using the Distance Sensor and a Drive forward block. Il ramo else ha un commento che dice Gira per trovare un edificio utilizzando il sensore di distanza e un blocco di svolta a destra.
  • Rinominare il progetto Unit9Lesson3.
La casella del nome del progetto al centro della barra degli strumenti VEXcode VR, evidenziata con una casella rossa, a sinistra del pulsante Seleziona parco giochi. Il nome del progetto recita Unità 9 Lezione 3.
  • È necessario un blocco per controllare continuamente il sensore Down Eye. Il robot VR dovrà ripetere questi comportamenti fino a quando il sensore Down Eye non rileverà il colore rosso. Per prima cosa, rimuovere il blocco [Forever].
Una panoramica sulla rimozione del blocco Forever dal progetto. Il nuovo progetto si sposta dal blocco When started al blocco If then else, senza la presenza del ciclo Forever.
  • Aggiungere un blocco [Ripeti fino a].
Una panoramica dell'aggiunta del blocco Ripeti fino a intorno all'intero blocco If then else. Il nuovo progetto inizia con un blocco Quando avviato, quindi ha un blocco Ripeti fino a con il parametro aperto. All'interno della C del blocco Repeat until c'è il blocco If then else.
  • Aggiungere un <Color sensing> blocco all'interno del blocco [Repeat until] e impostare i parametri su ‘DownEye’ rileva ‘red’.
Lo stesso progetto con Down Eye Detects red impostato come parametro del blocco Repeat until.

In questo progetto viene utilizzato un blocco [Ripeti fino a] anziché un blocco [Attendi fino a]. Questo perché un blocco [Wait until] è un blocco di attesa che metterà in pausa il flusso del progetto fino a quando non viene soddisfatta la condizione. Se viene utilizzato un blocco [Wait until], il blocco [If then else] non verrà eseguito fino a quando non verrà soddisfatta la condizione del blocco [Wait until] e il blocco [If then else] verrà eseguito una sola volta.

Un diagramma del flusso del progetto se è stato utilizzato un blocco Attendi invece di un ciclo Ripeti fino a. Il progetto sarebbe rimasto in attesa fino al blocco, fino a quando la condizione non fosse stata segnalata come vera, e solo allora sarebbe passato al blocco If then else.

Utilizzando un blocco [Repeat until], la condizione [If then else] viene costantemente controllata ed eseguita.

Un diagramma del flusso di progetto con il blocco Repeat Until, che mostra che la condizione del blocco If then else viene continuamente controllata ed eseguita in base al fatto che l'oggetto venga trovato (True) o non trovato (false).
  • Aggiungi un commento per annotare lo scopo dell'utilizzo del blocco [Ripeti fino a].
Lo stesso progetto costruito in precedenza, con un blocco Comment aggiunto tra il blocco When started e il blocco Repeat until. Il commento recita "Cerca edifici fino a quando non viene rilevato il bordo rosso".
  • Apri il parco giochi Dynamic Castle Crasher e gestisci il progetto.
  • Quando questo progetto viene eseguito, il robot VR si dirigerà verso un oggetto rilevato e girerà a destra in caso contrario. Tuttavia, anche se il sensore Down Eye sta cercando il bordo rosso, al robot VR non viene detto cosa fare una volta rilevato il rosso, quindi continua a guidare e alla fine cade dal parco giochi.

    Una vista dall'alto verso il basso della Dynamic Castle Crasher Playground Window mentre il progetto è in corso, con diversi castelli schiantati e il robot VR che si allontana dal bordo superiore destro del parco giochi alla ricerca di un pezzo di castello.

Una volta soddisfatta la condizione del blocco [Repeat until], il flusso del progetto verrà eseguito dal blocco [Repeat until].

Selezionare il pulsante Avanti per continuare con il resto della lezione.