TechLab - Laboratórium budúcnosti

        • 8c. Joystick:bit – Rozšírenie – Lekcia 3

        • Ovládanie XGO psa, kombinované scénare, vlastný ovládač

          Trvanie: 90 minút
          Vek: 10–15 rokov
          Potrebné vybavenie: Micro:bit v2 (2 ks), Joystick:bit, XGO Lite, (voliteľne: Cutebot), USB kábel, notebook
          Software: MakeCode editor – makecode.microbit.org
          Predchádzajúce znalosti: Joystick:bit Lekcie 1 a 2, Micro:bit Úvod


          Čo sa dnes naučíš

          • Ovládať XGO robotického psa joystickom
          • Prepínať režimy ovládania tlačidlami (chôdza / rameno / postoje)
          • Navrhnúť vlastný ovládací protokol
          • Skombinovať viac zariadení na jednom joysticku (voliteľne)

          Časť A – XGO Lite: Základné ovládanie joystickom

          Krok A1 – Pridaj rozšírenie XGO (5 minút)

          1. Rozšírenia → vyhľadaj XGO alebo URL: https://github.com/elecfreaks/pxt-xgo
          2. Nová kategória XGO sa pridá do menu
          3. Skontroluj dostupné bloky:
            • XGO move forward speed X time Y
            • XGO turn left speed X time Y
            • XGO stand / sit / lie
            • XGO set arm x X y Y
            • XGO set gripper open/close

          Krok A2 – Prvý ovládač pre XGO: chôdza (25 minút)

          Cieľ: Joystickom ovládať smer pohybu psa. Tlačidlami C a D meniť postoj.

          Odosielateľ (Joystick:bit) – rovnaký ako v Lekcii 2, len iná skupina rádia:

          pri spustení:
            nastaviť skupinu rádia 20
          
          stále opakovať:
            rádio odošli hodnotu "jx" = joystickbit X value
            rádio odošli hodnotu "jy" = joystickbit Y value
            pauza 100ms
          
          on joystickbit button C pressed:
            rádio odošli text "sit"
          
          on joystickbit button D pressed:
            rádio odošli text "stand"
          
          on joystickbit button E pressed:
            rádio odošli text "lie"
          
          on joystickbit button F pressed:
            rádio odošli text "crawl"
          

          Prijímač (micro:bit v XGO):

          pri spustení:
            nastaviť skupinu rádia 20
            XGO stand
            nastav jx = 512
            nastav jy = 512
          
          pri prijatí rádiového páru (name, value):
            ak name = "jx": nastav jx = value
            ak name = "jy": nastav jy = value
          
          pri prijatí rádiového textu (receivedString):
            ak receivedString = "sit":   XGO sit
            ak receivedString = "stand": XGO stand
            ak receivedString = "lie":   XGO lie
            ak receivedString = "crawl": XGO crawl
          
          stále opakovať:
            ak jy < 400:
              XGO move forward speed 50 time 200
            inak ak jy > 620:
              XGO move backward speed 50 time 200
            inak ak jx < 400:
              XGO turn left speed 50 time 200
            inak ak jx > 620:
              XGO turn right speed 50 time 200
            // keď je joystick v strede – nerob nič, pes stojí
            pauza 50ms
          

          💡 Parameter time 200 znamená že každý pohybový príkaz trvá 200ms. Pri rýchlom opakovaní v slučke to vytvára plynulý pohyb. Ak pes „zakopáva" – skús zvýšiť time na 300ms.

          Testuj:

          • Chôdza všetkými 4 smermi
          • Tlačidlo C → pes si sadne
          • Tlačidlo D → pes vstane
          • Pustenie joysticku → pes stojí (nepohybuje sa)

          Krok A3 – Režim ovládania ramena (20 minút)

          Cieľ: Prepínať medzi režimom chôdze a režimom ovládania ramena stlačením tlačidla.

          Prečo režimy?

          Joystick má len 2 osi a 4 tlačidlá. XGO má chôdzu (potrebuje 2 osi) aj rameno (potrebuje 2 osi). Riešenie: prepínanie režimov – ako gear shift v aute.

          Pridaj premennú rezim na odosielateľ:

          pri spustení:
            nastaviť skupinu rádia 20
            nastav rezim = "walk"        ← štartovací režim: chôdza
            zobraziť text "W"            ← "W" = walk, informuje užívateľa
          
          on joystickbit button C pressed:
            nastav rezim = "walk"
            zobraziť text "W"
            rádio odošli text "mode_walk"
          
          on joystickbit button D pressed:
            nastav rezim = "arm"
            zobraziť text "A"
            rádio odošli text "mode_arm"
          
          stále opakovať:
            nastav jx = joystickbit X value
            nastav jy = joystickbit Y value
          
            ak rezim = "walk":
              rádio odošli hodnotu "jx" = jx
              rádio odošli hodnotu "jy" = jy
          
            ak rezim = "arm":
              rádio odošli hodnotu "ax" = jx    ← iné meno = prijímač vie že je to pre rameno
              rádio odošli hodnotu "ay" = jy
          
            pauza 100ms
          

          Upravený prijímač:

          pri prijatí rádiového páru (name, value):
            ak name = "jx": nastav jx = value
            ak name = "jy": nastav jy = value
            ak name = "ax": nastav ax = value    ← poloha ramena X
            ak name = "ay": nastav ay = value    ← poloha ramena Y
          
          pri prijatí rádiového textu (receivedString):
            ak receivedString = "mode_walk": nastav rezim = "walk"
            ak receivedString = "mode_arm":  nastav rezim = "arm"
            ak receivedString = "sit":       XGO sit
            ak receivedString = "stand":     XGO stand
          
          stále opakovať:
            ak rezim = "walk":
              // rovnaká logika chôdze ako predtým
              ak jy < 400: XGO move forward speed 50 time 200
              inak ak jy > 620: XGO move backward speed 50 time 200
              inak ak jx < 400: XGO turn left speed 50 time 200
              inak ak jx > 620: XGO turn right speed 50 time 200
          
            ak rezim = "arm":
              // mapuj hodnoty joysticku na súradnice ramena
              nastav cielX = mapovať ax z 0–1023 do 80–180
              nastav cielY = mapovať ay z 0–1023 do -50–50
              XGO set arm x cielX y cielY
          
            pauza 80ms
          

          Testuj:

          • Štart → displej micro:bitu v Joystick:bit ukazuje "W"
          • Pohyb joysticku → pes chodí
          • Stlač D → displej ukazuje "A"
          • Pohyb joysticku → rameno sa hýbe, pes nestojí na mieste
          • Stlač C → späť na chôdzu

          Krok A4 – Pridaj tlačidlo grippera (5 minút)

          V režime ramena pridaj:

          on joystickbit button E pressed:
            ak rezim = "arm":
              rádio odošli text "grip_close"
          
          on joystickbit button F pressed:
            ak rezim = "arm":
              rádio odošli text "grip_open"
          

          Na prijímači:

          ak receivedString = "grip_close": XGO set gripper close
          ak receivedString = "grip_open":  XGO set gripper open
          

          Časť B – Vlastný ovládací protokol (voliteľné, 20 minút)

          Cieľ: Navrhnúť vlastný systém skratiek a príkazov. Toto je otvorená úloha – niet jedinej správnej odpovede.

          Prečo si navrhnúť vlastný protokol?

          Doteraz si používal mená ako "jx", "jy", "forward", "sit". Toto sú len reťazce – mohol si použiť čokoľvek. V praxi programátori navrhujú protokol – dohodnutý formát správ medzi zariadeniami.

          Výzva:

          Navrhni ovládač pre jedno alebo viac zariadení podľa týchto pravidiel:

          1. Definuj všetky príkazy – napíš na papier zoznam čo chceš ovládať a aký príkaz mu priradiš
          2. Priraď tlačidlá a osi – nakresli si schému joysticku a označ čo čo robí
          3. Implementuj – naprogramuj odosielateľa aj prijímača podľa svojho návrhu
          4. Testuj – overí či všetko funguje podľa plánu

          Príklady možných projektov:

          Projekt 1 – Záchranný robot

          • XGO chodí a hľadá predmet
          • Keď ho nájde, zastaví, prepne na režim ramena
          • Ramenom uchopí predmet a odnesie ho na určené miesto

          Projekt 2 – Pretekárske auto

          • Cutebot ovládaný plynulou rýchlosťou (nie zapni/vypni)
          • Tlačidlo C = turbo (krátkodobý nárast rýchlosti)
          • Tlačidlo D = brzda (okamžitý stop)
          • LED svetlá sviecia pri brzdení červeno

          Projekt 3 – Kombinovaný ovládač (ak máte 2 autá alebo auto + pes)

          • Skupina rádia 20 → XGO pes
          • Skupina rádia 21 → Cutebot
          • Tlačidlo E prepína ktoré zariadenie joystick ovláda
          • Displej micro:bitu ukazuje aktívne zariadenie ("P" = pes, "C" = cutebot)

          Krok B1 – Šablóna vlastného projektu

          Vyplň si pred programovaním:

          Názov projektu: ______________________________
          
          Zariadenie(a): ______________________________
          
          Skupina rádia: ______________________________
          
          Mapa ovládania:
            Os X (doľava/doprava): _____________________
            Os Y (dopredu/dozadu): _____________________
            Tlačidlo C: ________________________________
            Tlačidlo D: ________________________________
            Tlačidlo E: ________________________________
            Tlačidlo F: ________________________________
          
          Príkazy (text cez rádio):
            "__________" → _____________________________
            "__________" → _____________________________
            "__________" → _____________________________
          
          Hodnoty (čísla cez rádio):
            "__________" = os X alebo Y pre: ___________
            "__________" = os X alebo Y pre: ___________
          

          Zhrnutie celého modulu Joystick:bit s rozšírením

          Po troch lekciách vieš:

          Lekcia Čo si sa naučil
          1 Inštalácia rozšírenia, čítanie osí a tlačidiel, ovládanie LED displeja
          2 Cutebot 4-smerový + plynulý ovládač, Wonder Rugged Car 8-smerový
          3 XGO pes, prepínanie režimov (chôdza / rameno), vlastný protokol

          Kľúčové pojmy:

          Pojem Vysvetlenie
          Rozšírenie (Extension) Balík blokov pre konkrétny HW, pridávaš ho do MakeCode
          Protokol Dohodnutý formát správ medzi zariadeniami
          Mŕtva zóna Oblasť okolo stredu joysticku kde sa nič nedeje – predchádza náhodným pohybom
          Prepínanie režimov Jedno tlačidlo mení čo ostatné vstupy robia
          Diferenciálny pohon Ovládanie otáčania zmenou rýchlosti ľavého a pravého motora (Cutebot)
          Mecanum kolieska Špeciálne kolieska umožňujúce pohyb do strany (Wonder Rugged Car)

          Kam ďalej

          • Cutebot – autonómne vozidlo – sledovanie čiary, ultrazvuk, AI kamera
          • XGO Lite – pokročilé pohyby, choreografia, Python cez SSH
          • Dobot Magician – Python, Linux, priemyselný robot
    • Kontakty

      • Základná škola s materskou školou
      • 0915 880 931 - ZÁKLADNÁ ŠKOLA
        0911 348 727 - MATERSKÁ ŠKOLA
        0915 595 176 - ŠKOLSKÁ JEDÁLEŇ
        0908 030 931 - RIADITEĽ
        0940 629 872 - EKONÓMKA
      • Šarišské Dravce 20
        082 73 Šarišské Dravce
        Slovakia
      • sardravce.ms@gmail.com
        sardravce.sj@gmail.com
      • 37876856
    • Prihlásenie