Skip to main content

Ikona panelu nástrojů pro učitele Sada nástrojů pro učitele - Účel této aktivity

Tato aktivita studenty seznámí s používáním příkazu while a  if then, který uvádí, že robot pojede vpřed, pokud není stisknuta obrazovka.

  • Tato aktivita seznámí studenty s podmíněnými podmínkami a pokyny, které vedou robota vpřed, pokud není stisknuta obrazovka.

  • Pro více informací o tom, zda pak a zda pak jinak prohlášení nebo jiné použité v této činnosti, navštivte informace o nápovědě v rámci VEXcode V5. Další informace o tomto vestavěném nástroji nápovědy najdete v těchto článcích o nápovědě v C++ .

Ikona panelu nástrojů pro učitele Sada nástrojů pro učitele

Návrhy na výukové strategie pro tuto část naleznete ve sloupci Dodání průvodce stimulací To Do or Not to Do! (Google Doc / .docx / .pdf)

Clawbot je připraven učinit rozhodnutí!

Toto prozkoumání vám poskytne nástroje, které vám umožní začít vytvářet některé skvělé projekty, které používají výrok if then else.

  • Příkazy VEXcode V5 C++, které budou použity v tomto průzkumu: 
    • Drivevetrain.drive(vpřed);
    • Brain.Screen.pressing()
    • Drivetrain.stop();
    • if (podmínka){}
    • waitUntil();
    • while (podmínka){}  
    • počkejte(1, sekundy);

Informace o nápovědě v kódu VEXcode V5 můžete použít k získání informací o pokynech v jazyce C++.

VEXcode V5 s jednotkou pro příkaz napsanou v pracovním prostoru vlevo a informace nápovědy se otevřou vpravo. Nápověda zobrazuje definici příkazu a informace o tom, jak je používán.

Ujistěte se, že máte potřebný hardware, technický notebook a VEXcode V5 připraven.

Požadované materiály:
Množství Potřebný materiál
1

VEX V5 Classroom Starter Kit (s aktuálním firmwarem)

1

VEXcode V5 (nejnovější verze, Windows, macOS)

1

Technický poznámkový blok

1

Clawbot (hnací ústrojí 2-motor, bez gyroskopu) šablona

Ikona Tipy pro učitele Tipy pro učitele

Pokud je to student poprvé, kdo používá VEXcode V5, může kdykoli během tohoto průzkumu nahlédnout do výukových programů. Výukové programy jsou umístěny na panelu nástrojů.

Panel nástrojů VEXcode V5 s ikonou Tutorial zvýrazněnou v červeném rámečku. Vlevo je na panelu nástrojů zobrazena ikona V5, ikona zeměkoule, Soubor a pak Návody. Vpravo jsou další ikony a funkce.

Krok 1: Začněme pochopením podmíněných prohlášení 

Než začnete programovat s podmíněnými podmínkami, přečtěte si článek knihovny VEX vysvětlující příkazy If Then Else. Článek najdete zde.

Snímek obrazovky z knihovny VEX, zobrazující článek s názvem Použití příkazů if-else ve VEXcode V5.Seznam operátorů, které lze použít v příkazech If Then Else, naleznete v článku knihovny VEX vysvětlujícím booleovské hodnoty. Tento článek najdete zde.Snímek obrazovky z knihovny VEX, zobrazující článek s názvem Použití booleánů ve VEXcode V5.

Krok 2: Začněme programovat s podmíněnými příkazy.

  • Otevřete ukázkový projekt šablony Clawbot (Drivetrain 2-motor, No Gyro).

    Příklad výběru projektu ve VEXcode V5 s červeným rámečkem kolem filtru Šablony nahoře a projektem pohonu Clawbot 2 bez gyroskopu, který označuje, kterou šablonu otevřít.

     

  • Sestavte níže uvedený projekt.
// Start project code
int main() {
  // Inicializace konfigurace robota. NEODSTRAŇUJTE!
  vexcodeInit();

  while (true) {
    Drivetrain.drive(forward);
    if (Brain.Screen.pressing()) {
      Drivetrain.stop();
      waitUntil(!Brain.Screen.pressing());
    }    
  }  
}  

Ve svém technickém notebooku proveďte následující:

  • Vysvětlete, co má projekt Clawbot dělat. Budete muset vysvětlit víc než jen to, že vytváří tlačítko stop. Vysvětlete, které pokyny nutí Clawbota dělat co.
  • Napište shrnutí jedné věty, které zachycuje, co projekt dělá.
  • Otestujte, zda je vaše predikce toho, co má projekt Clawbot udělat, správná.

Dialogové okno Název projektu na panelu nástrojů VEXcode V5 čte Vytvoření tlačítka Stop a ukazuje, že je vybrán slot 1.

  • Uložte a stáhněte projekt jako CreatingAStopButton do slotu 1 na Clawbotu a poté jej spusťte.
  • Nápovědu ke stažení projektu naleznete v tutoriálu ve VEXcode V5, který vysvětluje, jak stáhnout a spustit projekt (C++).
  • Zkontrolujte vysvětlení projektu a přidejte poznámky, které je podle potřeby opraví.

Ikona panelu nástrojů pro učitele Sada nástrojů pro učitele - odpovědi

Tento projekt má robot nepřetržitý pohon vpřed, ale zastaví se, pokud je obrazovka stisknuta. Dělá to pomocí příkazu Forever, který nepřetržitě řídí a kontroluje. Pokud je obrazovka stisknuta (TRUE), pak Clawbot zastaví jízdu.Projekt Vytvoření tlačítka Stop je zobrazen s příkazy označenými jejich účelem. Příkaz if je zakroužkován červeně a označen jako Checks if condition is True - obrazovka je stisknuta. Příkaz Drivetrain dot stop je označen Runs the block if true (Spustí blok, pokud je pravdivý). Počkejte, až bude příkaz označen, řídí rychlost zpracování.

Neočekává se, že studenti pochopí, proč se používá instrukce waitUntil (). Vysvětlete, že instrukce waitUntil () je nezbytná z důvodu rychlosti toku programu robota. Pokud by tam nebyl, motory Clawbota by se chovaly, jako by uživatel znovu a znovu tlačil na obrazovku, když prochází projektem. Místo toho příkaz waitUntil() zastaví tok programu a projekt znovu nespustí věčnou smyčku, dokud uživatel nepřestane stisknout obrazovku.

Řádek pseudokódu může být stejně jednoduchý jako: Jízda vpřed, dokud není obrazovka stisknuta.

Studentské technické notebooky mohou být udržovány a hodnoceny jednotlivě (Google Doc / .docx / .pdf) nebo jako tým (Google Doc / .docx / .pdf). Předchozí odkazy poskytují pro každý přístup jinou rubriku. Kdykoli je rubrika zahrnuta do plánování vzdělávání, je dobrou praxí vysvětlit tuto rubriku nebo alespoň dát kopie studentům před zahájením činnosti.

Krok 3: Pochopení příkazu wait until().

Všimněte si, že pokud je stisknuta obrazovka mozku, tok projektu se rychle pohybuje a projekt se přesune na další instrukci, kterou je instrukce Drivetrain.stop().

Projekt tedy potřebuje instrukci waitUntil(), která řekne robotu, aby zůstal zastaven, dokud se neuvolní obrazovka mozku. V opačném případě by příkaz forever způsobil, že by projekt začal znovu.

waitUntil(!Brain.Screen.pressing());

Instrukce waitUntil() je nutná z důvodu rychlosti toku projektu. Pokud by tam nebyl, projekt by se přesunul na další instrukci dříve, než by měl robot čas reagovat.

Krok 4: Změňte projekt.

Naším dalším krokem je změna příkazu  if then na příkaz if then else.

Dialogové okno Název projektu v panelu nástrojů VEXcode V5 čte Stop nebo Drive a ukazuje, že je vybrán slot 1.

  • Začněte uložením CreatingAStopButton jako nového projektu StopOrDrive.
  • Pokud potřebujete pomoc s uložením projektu, klikněte zde pro C++.
  • Poté vytvořte  projekt StopOrDrive zobrazený níže.
// Start project code
int main() {
  // Inicializace konfigurace robota. NEODSTRAŇUJTE!
  vexcodeInit();

  while (true) {
    Drivetrain.drive(forward);
    if (Brain.Screen.pressing()) {
      Drivetrain.stop();
      waitUntil(!Brain.Screen.pressing());
    } 
    else {
      Drivetrain.drive(forward);
    }   
  }  
}  
  • Stáhněte si StopOrDrive do slotu 2 na svém Clawbot.

Výběr slotu na panelu nástrojů VEXcode V5 je otevřený a slot 2 je vybrán a zvýrazněn červeným rámečkem. Název projektu zní Stop nebo Drive.

  • Nápovědu ke stažení projektu naleznete v tutoriálu ve VEXcode V5, který vysvětluje, jak stáhnout a spustit projekt (C++).
  • Otestujte CreatingAStopButton (slot 1) a poté otestujte StopOrDrive (slot 2) a porovnejte je, abyste zjistili, zda existuje nějaký rozdíl v chování robota. Všimněte si jakýchkoli rozdílů ve vašem technickém notebooku

Ikona panelu nástrojů pro učitele Sada nástrojů pro učitele - odpověď

Pokud jde o chování robota, neměl by existovat rozdíl mezi projekty CreatingAStopButton  a StopOrDrive.

Pokud studenti potřebují další pomoc s porozuměním prohlášení If-Else, klikněte zde.

Oba projekty mají Clawbot chovat stejným způsobem. Jediným rozdílem je použití příkazu if then else v projektu StopOrDrive.

Použití příkazu if then else vám umožní přidat další tlačítka na obrazovku v nadcházejících aktivitách.

Ikona Rozšířit učení Rozšiřte své učení

V průběhu této STEM laboratoře budou studenti vyvíjet projekty, které umožní, aby obrazovka Clawbota fungovala jako uživatelské rozhraní. Při přípravě na to vyzvěte studenty, aby zjistili, jak nakreslit barevný obdélník na obrazovce, který funguje jako tlačítko. Vzhledem k tomu, že stisknutí kdekoli na obrazovce je v současné době podmínkou, tlačítko by mělo zabírat celou obrazovku. Studenti by měli mít projekt vysílat událost, aby nakreslili tlačítko při spuštění.
Nasměrujte studenty, aby se nejprve dozvěděli, jak je obrazovka mozku organizována do souřadnicového systému. Budou to muset pochopit, aby mohli nastavit parametry v rámci pokynů, které budou používat. Použité souřadnice odpovídají počtu pixelů, nikoli počtu sloupce nebo řádku. Zde je rozvržení obrazovky:

Pixelová mřížka obrazovky V5 Brain zobrazuje 12 očíslovaných řádků podél levé strany, přičemž horní řádek je označen jako Řádek 1 a spodní řádek je označen jako Řádek 12. V horní části je 48 očíslovaných sloupců, přičemž sloupec 1 je označen úplně vlevo a sloupec 48 je označen úplně vpravo. Celková velikost pixelů je 480 pixelů široká a 240 pixelů vysoká.

Studenti by měli naplánovat, otestovat a upřesnit tyto změny v projektu a zároveň je zdokumentovat ve svých technických poznámkových blocích. Pro jednotlivé strojírenské poznámkové bloky klikněte na jeden z následujících odkazů (Google Doc / .docx / .pdf), nebo klikněte na jeden z následujících odkazů pro týmové poznámkové bloky (Google Doc / .docx / .pdf).

Zde je příklad řešení:

// Begin project code
event draw = event();

void drawButton () {
  Brain.Screen.setFillColor (red);
  Brain.Screen.drawRectangle (0, 0, 480, 240);
  wait(1, seconds);
}

int main() {
  // Initializing Robot Configuration. NEODSTRAŇUJTE!
  vexcodeInit();

  draw(drawButton);

  while (true) {
    draw.broadcast();
    Drivetrain.drive(forward);
    if (Brain.Screen.pressing()) {
      waitUntil(!Brain.Screen.pressing());
    } 
    else {
      Drivetrain.drive(forward);
    }   
  }  
}  

Jak můžete vidět, tlačítko je nakresleno tak, aby zabralo celou obrazovku od počátku (0, 0) a vyplnilo všech 480 horizontálních pixelů (osa x) a 240 vertikálních pixelů (osa y).