Skip to main content

Icona della cassetta degli attrezzi del docente Cassetta degli attrezzi per insegnanti - Schema delle attività

  • Questa esplorazione introdurrà gli studenti alla programmazione di comportamenti ripetitivi utilizzando cicli ripetitivi o per sempre.

  • Imparare a programmare utilizzando loop ripetuti e per sempre consente agli studenti di risparmiare tempo durante la creazione di un progetto che utilizza le stesse azioni ripetute. Per ulteriori informazioni sulle istruzioni utilizzate in un progetto di testo, visita le informazioni di aiuto.

Il Clawbot V5 è pronto a muoversi!

Questa esplorazione ti fornirà gli strumenti per poter iniziare a creare alcuni progetti interessanti che utilizzano i loop.

  • Istruzioni VEXcode V5 che verranno utilizzate in questa esplorazione:

    • Drivetrain.driveFor(avanti, 300, mm);

    • Drivetrain.turnFor(destra, 90, gradi);

    • ClawMotor.spinFor(retromarcia, 70, gradi);

    • ArmMotor.spinFor(avanti, 360, gradi);

    • while (true) {}

    • ripeti (4) {}

    • wait(5, secondi);

Per accedere a ulteriori informazioni, fare clic con il pulsante destro del mouse sul nome di un comando nell'area di lavoro per visualizzare la Guida per tale comando.

Icona Suggerimenti per l'insegnante Suggerimenti per l'insegnante

Se è la prima volta che lo studente utilizza VEXcode V5, può leggere una varietà di articoli nella VEX Library.

Icona Suggerimenti per l'insegnante Suggerimenti per l'insegnante - Utilizzo del completamento automatico

Il completamento automatico è una funzionalità di VEXcode V5 che prevede il resto del comando che stai digitando. Mentre gli studenti lavorano in VEXcode V5, incoraggiali a utilizzare la funzione di completamento automatico per facilitare la sintassi.

L' articolo Completamento automatico - Esercitazioni spiega come utilizzare la funzione Completamento automatico. Per ulteriori informazioni, esplora i video tutorial all'interno di VEXcode V5.

Seleziona il tutorial Completamento automatico.

 

Assicurati di avere l'hardware necessario, il tuo quaderno di ingegneria e VEXcode V5 scaricati e pronti.

Materiali necessari:
Quantità Materiali necessari
1

Starter Kit VEX V5 Classroom (con firmware aggiornato)

1

VEXcode V5 (ultima versione, Windows, macOS)

1

Taccuino tecnico

1

Progetto di esempio Clawbot Template (Drivetrain 2-motor, No Gyro)

Passaggio 1:  iniziamo a programmare con i loop

  • Prima di iniziare il progetto, seleziona il modello di progetto corretto. Il progetto di esempio Clawbot Template (Drivetrain 2-motor, No Gyro) contiene la configurazione del motore di Clawbot. Se il modello non viene utilizzato, il robot non eseguirà correttamente il progetto.

    Immagine che mostra il menu File aperto in VEXcode V5 che mostra l'opzione Apri esempi

     

  • Seleziona File e Apri esempi.
  • Scorri i diversi progetti di esempio. Questi progetti dimostrano una varietà di azioni che il tuo Clawbot può eseguire. Selezionare e aprire il progetto di esempio Clawbot Template (Drivetrain 2-motor, No Gyro).

     

  • Assegnare un nome al progetto RepeatingActions.

    Immagine che mostra il nome del progetto Azioni ripetute in VEXcode V5

  • Digita il seguente codice:

    int main() {
      // Inizializzazione della configurazione del robot. NON RIMUOVERE!
      vexcodeInit();
    
      // Guida in avanti e gira di 90 gradi per 4 iterazioni 
      repeat(4)
        {Drivetrain.driveFor (avanti, 300, mm)
        ; Drivetrain.turnFor (destra, 90, gradi);
        wait(5, secondi);
    
      }
    }

Esamina il progetto e poi fai quanto segue nel tuo quaderno di ingegneria.

  1. Prevedi cosa farà il Clawbot nel progetto. Spiega più del fatto che il progetto si ripete.

    Cosa si ripete? Cosa sta facendo il Clawbot?

  2. Scrivi la tua previsione, ma non dividere il breve progetto in più di due parti.

Icona della cassetta degli attrezzi del docente Teacher Toolbox - Risposte

  1. Questo progetto avrà il robot: guidare in avanti per 300 millimetri , girare a destra di 90 gradi, quindi attendere 5 secondi 4 volte per completare un quadrato. Invece di utilizzare le stesse 3 istruzioni 4 volte, l' istruzione di ripetizione riduce la quantità a solo 1 volta. L' istruzione repeat ripete le azioni di avanzare e poi girare.

  2. La previsione potrebbe essere semplicemente "Il Clawbot si muove in un quadrato". Questo sarebbe un modo succinto per catturare i movimenti ripetuti del Clawbot senza alcun contesto.

I quaderni di ingegneria degli studenti possono essere mantenuti e valutati individualmente o in gruppo. I link precedenti forniscono una pagella diversa per ogni approccio. Ogni volta che una rubrica è inclusa nella pianificazione educativa, è buona pratica spiegare la rubrica o almeno dare copie agli studenti prima dell'inizio dell'attività.

  • Salvare, scaricare ed eseguire il progetto Azioni ripetute.

    Immagine del nome del progetto Azioni ripetute nella barra degli strumenti in VEXcode V5

  • Controlla le spiegazioni del progetto nel tuo quaderno di ingegneria e aggiungi note per correggerle, se necessario.

Passaggio 2: Esegui il progetto e osserva il robot

Un confronto tra due frammenti di codice C++ in VEXcode. Il frammento sinistro utilizza l'ingresso del sensore per determinare quando girare, con un ciclo while che controlla se l'interruttore del paraurti è premuto; se premuto, il robot gira a destra di 90 gradi, altrimenti avanza. Lo snippet destro utilizza una distanza fissa per determinare quando girare, con un loop di ripetizione che guida il robot in avanti per 300 mm, gira a destra per 90 gradi e attende 5 secondi, ripetendo questa sequenza quattro volte

Guarda di nuovo il progetto Azioni ripetute (a destra). Questo progetto ripeterà l'avanzamento e poi ruoterà il comportamento quattro volte. Una struttura a ciclo "ripetuto" viene utilizzata quando si desidera utilizzare un insieme di comportamenti un certo numero di volte.

Se la struttura di ripetizione viene sostituita con una struttura ad anello "while", il robot ripeterà i comportamenti in avanti e quindi ruoterà "while" la condizione è vera. È inoltre possibile impostare la condizione su "true" per far sì che il ciclo "while" continui per sempre.

Nel progetto a sinistra, l'ingresso di un sensore viene utilizzato per determinare quando iniziare a girare. Il progetto a destra utilizza una distanza fissa del Drivetrain per determinare quando iniziare a girare.

Al fine di controllare continuamente l'ingresso di un sensore, un'istruzione "if/else" viene utilizzata insieme a un ciclo "while". Nel progetto a sinistra, il robot girerà a destra quando viene premuto il sensore "BumperB", altrimenti il robot avanzerà per sempre se il sensore "BumperB" non viene premuto. Per controllare continuamente il valore del sensore BumperB, l'istruzione "if" è all'interno di un ciclo "while true".

Il progetto di cui sopra a sinistra è un caso d'uso pratico di una struttura che si ripete per sempre - usando i cicli while e  if insieme. Immagina una spazzatrice a guida autonoma che continua a guidare in avanti fino a quando non si imbatte in un muro o in un oggetto, quindi gira prima di continuare a guidare.

Icona Estendi il tuo apprendimento Estendi il tuo apprendimento

Per esplorare ulteriormente come utilizzare i loop con i condizionali, chiedi agli studenti di costruire un progetto Floor Sweeper in VEXcode V5.

  • Iniziare facendo montare e cablare agli studenti gli interruttori del paraurti.
  • Chiedere agli studenti di aprire il progetto di esempio Clawbot Template (Drivetrain 2-motor, No Gyro).

     

  • Chiedi agli studenti di nominare il progetto come Spazzapavimenti.

  • Chiedi agli studenti di costruire il seguente progetto.

    // Include the V5 Library
    #include "vex.h"
      
    // Consente un utilizzo più semplice della libreria VEX
    utilizzando lo spazio dei nomi vex;
    
    // La funzione pickRandom restituisce un numero intero casuale tra i valori min e
    // max passati come parametri.
    int pickRandom(int min, int max) {
      return min + rand() / (RAND_MAX / (max - min + 1));
    }
    
    int main() {
      // Inizializzazione configurazione robot. NON RIMUOVERE!
      vexcodeInit();
    
      //Inizializza il generatore di numeri casuali.
      srand(randomSeed);
    
      while (true) {
        while (!BumperB.pressing()) {
          Drivetrain.drive(forward);
          wait(5, msec);
        }
        Drivetrain.stop();
        Drivetrain.turnFor((90 + pickRandom(0, 90)), degrees);
        wait(5, msec);
      }
    }

Se gli studenti hanno bisogno di aiuto con una qualsiasi delle istruzioni, fare riferimento alle informazioni della Guida.

Chiedi agli studenti di 
scaricare ed eseguire il progetto per osservare come si muove il robot. Quindi, inizia una discussione in classe e chiedi agli studenti di spiegare perché è stata utilizzata la struttura Forever invece di una struttura ripetuta.

Gli studenti dovrebbero notare che viene utilizzata una struttura Forever perché questo progetto controlla continuamente se viene premuto l'interruttore del paraurti.

Passaggio 3: Sfida Cicli Quadrati!

Un diagramma che mostra un percorso quadrato verde con frecce che indicano la direzione del movimento intorno al quadrato. Ulteriori frecce arancioni all'esterno del punto quadrato in diverse direzioni, corrispondenti alle svolte e ai movimenti necessari per seguire il percorso

  • Fai guidare il tuo Clawbot in una piazza.
  • Prima di ogni giro, l'artiglio deve essere aperto e chiuso e il braccio deve essere sollevato e abbassato.
  • Il Clawbot non può guidare lungo un lato della piazza più di una volta.
  • È possibile utilizzare il progetto RepeatingActions dall'alto come punto di partenza, ma salvarlo come SquaredLoops prima di apportare modifiche.

Immagine del nome del progetto Squared Loops nella barra degli strumenti VEXcode V5

Nel tuo quaderno di ingegneria, pianifica quanto segue:

  • Pianifica la tua soluzione e prevedi cosa farà il Clawbot per ogni istruzione del tuo progetto.
  • Scarica ed esegui il tuo progetto per testarlo prima di inviarlo.
  • Apportare le modifiche necessarie al progetto e prendere appunti su ciò che è stato modificato durante il test.

Icona della cassetta degli attrezzi del docente Teacher Toolbox - Soluzione

Di seguito è riportata una potenziale soluzione alla Squared Loops Challenge:

int main() {
  // Inizializzazione della configurazione del robot. NON RIMUOVERE!
  vexcodeInit();

  repeat(4){
    Drivetrain.driveFor (forward, 300, mm);
    ClawMotor.spinFor (reverse, 70, degrees);
    ArmMotor.spinFor (forward, 360, degrees);
    ClawMotor.spinFor (forward, 70, degrees);
    ArmMotor.spinFor (reverse, 360, degrees);
    Drivetrain.turnFor (right, 90, degrees);
    wait(5, msec);
  }
}

Puoi fornire agli studenti una rubrica di programmazione per valutare i loro progetti. I quaderni di ingegneria degli
studenti possono essere mantenuti e valutati individualmente o in gruppo.