Fjernstyr en robot. Steg 1: Forberedelser. Redigere filer utenfor ComputerCraft. Introduksjon

Like dokumenter
Fjernstyr en robot. Introduksjon. Steg 1: Forberedelser. Skrevet av: Teodor Heggelund

Robotinvasjon Introduksjon ComputerCraft PDF

Vi har sett enkle datamaskiner. Nå skal vi leke oss med roboter, og finne ut hvordan vi kan få dem til å gjøre forskjellige ting for oss.

Hendelser Apprentice ComputerCraft PDF

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Hendelser. Introduksjon. Steg 1: Skattejakt. Skrevet av: Geir Arne Hjelle

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

Steg 1: Vår første datamaskin

Introduksjon til ComputerCraft Introduksjon ComputerCraft PDF

Sprettball Erfaren ComputerCraft PDF

Steg 1: Vår første datamaskin

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

Skilpaddekunst. Steg 1: Møt skilpadden. Sjekkliste. Introduksjon. Turtles

Repetisjon Novice Videregående Python PDF

Skilpaddefraktaler Erfaren Python PDF

JS: Grunnleggende JavaScript Nybegynner

Bygge en pyramide. Introduksjon. Steg 1: Lage en ny mod. Sjekkliste. Skrevet av: Pål G. Solheim

HTML: Publiser nettsiden din. Publiser nettsiden din på Internett. Github. Brukernavn.github.io

Bygge en kube. Introduksjon. Steg 1: Lage en ny mod. Skrevet av: Pål G. Solheim

Bygge en kube. Steg 1: Lage en ny mod. Sjekkliste. Introduksjon

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

Skilpaddetekst. Steg 1: Tekst på flere linjer. Sjekkliste. Introduksjon

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Bygge en pyramide. Steg 1: Lage en ny mod. Sjekkliste. Introduksjon

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

Læringsmål og pensum. v=nkiu9yen5nc

Skilpaddekunst. Introduksjon. Skrevet av: Geir Arne Hjelle

Løpende strekmann Erfaren Videregående Python PDF

Sprettball. Introduksjon. Skrevet av: Geir Arne Hjelle

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Steg 1: Tekst på flere linjer

JS: Grunnleggende JavaScript

Kom i gang med Python

Mattespill Nybegynner Python PDF

Komme igang med App Inventor Introduksjon App Inventor PDF

Tell sekunder. Introduksjon. Skrevet av: Teodor Heggelund. I denne oppgaven skal vi lage vårt eget spill!

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Tell sekunder. Steg 0: Hva er forskjellig fra før? Introduksjon. I denne oppgaven skal vi lage vårt eget spill!

Finne ut om en løsning er helt riktig og korrigere ved behov

Steg 1: Animasjons-attributtet

Sprettende ball Introduksjon Processing PDF

Verden. Steg 1: Vinduet. Introduksjon

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Steg 0: Installere Pygame Zero

Steg 1: Husker du skilpadden?

CSS: Animasjon Nybegynner

Hvis Python allerede er installert på maskinen din er det bare å begynne.

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

Hangman. Level. Introduksjon

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Installasjonsmanual for 1 st part TAPI

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

Om du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.

1. Rullende navn, s 3 2. Smilefjes, s 5 3. Skritteller, s 7 4. Orakel, s 9 5. Stein, saks og papir, s Kompass, s 14

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

Skilpadder Introduksjon Python PDF

Finn en partner å prøve spillet sammen med. Det er OK å være tre personer og bytte på hvilke to som spiller.

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

"Dette skjer når jeg trykker på denne knappen" "Når jeg skriver i dette feltet, ser jeg at det andre forandrer seg"

Øving 0 - Xcode TDT4102

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Kanter, kanter, mange mangekanter

the web Introduksjon Lesson

Skilpadder. Introduksjon: Steg 1: Hei, Skilpadde! Sjekkliste. Skrevet av: Oversatt fra Code Club UK (//codeclub.org.uk)

Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

PGZ - Hangman Ekspert Python Lærerveiledning

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Steg 1: Hvordan fungerer spillet?

Sprettende ball. Introduksjon: Steg 1: Vindu. Sjekkliste. Skrevet av: Sigmund Hansen

Fra Python til Java, del 2

Skilpadder hele veien ned

Forkurs i informatikk Python. Andreas Færøvig Olsen

Skilpadder hele veien ned. Steg 1: Tegn et fjell. Sjekkliste. Introduksjon. Hent frem skilpaddene dine, åpne IDLE, det er på tide å tegne igjen.

Straffespark Introduksjon Scratch Lærerveiledning

Kom i gang med programmering i Java

Steg 1: Få noe på skjermen

Kjenner du alle funksjonene på tastaturet?

Denne oppgaven innfører funksjoner, og viser hvordan vi kan skrive og teste funksjoner i Ellie.

Kryptering med vigenere-metoden

6105 Windows Server og datanett

Ping pong. Steg 1: Sprettende ball. Sjekkliste. Introdusjon:

Tegnespillet. Introduksjon:

Steg 1: Katten og fotballbanen

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon:

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Hvordan en prosessor arbeider, del 1

Del 1 En oversikt over C-programmering

Hvordan installere Java og easyio på Windows

Steg 1: Regneoperasjoner på en klokke

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

1. NetBeans IDE: Lage en enkel mobilapplikasjon

Skilpadder hele veien ned

Transkript:

Fjernstyr en robot Erfaren ComputerCraft Introduksjon I denne oppgaven skal vi fjernstyre en robot fra en annen datamaskin. Til dette får vi bruk for både å hente tastetrykk fra brukeren, se disse til en annen datamaskin, og tolke disse som en kommando. For avanserte ComputerCraft-ere! Steg 1: Forberedelser Denne oppgaven bygger videre på andre oppgaver: S en beskjed over nettverk beskriver hvordan vi ser og mottar meldinger over rednet. Helser -- Steg 1: Skattejakt viser hvordan vi kan gjenkjenne hvilken tast brukeren har trykket på. Bygg et Hus -- Steg 4: Funksjoner forklarer hvordan vi kan skrive egne funksjoner. Gå tilbake og kikk på disse to oppgavene hvis denne blir vanskelig. Redigere filer utenfor ComputerCraft edit -programmet i ComputerCraft fungerer fint med små programmer, men blir tungvindt for store programmer. Det er for eksempel ikke lett å klippe og lime kode. Nå skal vi lære hvordan vi redigerer ComputerCraft-filer utenfor ComputerCraft. Filene vi lager i ComputerCraft har forskjellig plassering på forskjellige operativsystemer: Windows: %AppData%\Roaming\.minecraft\saves\navn-på-din-save\computer\id Linux: ~/.minecraft/saves/navn-på-din-save/computer/id Mac: ~/Library/Application Support/.minecraft/saves/navn-på-din-save/computer/id

Vil du redigere filen hello fra spillet "Kodeklubben 2016" på datamskin #3 på Windows finner du den altså på AppData\Roaming\.minecraft\saves\Kodeklubben 2016\computer\3\hello. Finn filene på Mac For å åpne filene på Mac kan du bruke Finder: Åpne Finder fra menyen Trykk på Gå og så Gå til mappe Skriv inn filplasseringen ( ~/Library/Application Support/.minecraft/saves/navn-på-din-save/computer/id )

Her finnes programmene du har skrevet som egne filer. Åpne så programmet ditt i en egen teksteditor: Notepad++ er god og enkel. Støtter Windows. Github Atom er noe mer avansert. Støtter Windows, Mac og Linux. Atom har en egen pakke for Lua-programmering. For å installere denne, gå til Edit -> Preferences -> Install, søk etter lua og installer pakken language-lua. Gratulerer! Du kan nå klippe og lime kode mellom datamskiner. Eller vil du flytte et prgram til en ny save? Skriv koden selv! Skriv koden du leser nå selv! Du blir ikke vant med et programmeringsspråk uten å skrive kode selv. Når jeg leser en guide på internett, bruker jeg ikke klipp-og-lim. I stedet leser jeg et stykke kode, og skriver selv. Da leser jeg den grundigere, og får med meg hvor det skal være kommaer,, then og andre småting som Lua kan klage på. Og etter du har skrevet koden -- prøv litt fram og tilbake! Trenger jeg egentlig denne biten? Hva skjer om jeg fjerner denne setningen? Eller om jeg putter inn et annet tall her? Programmering er lek! Ikke la noen fortelle deg noe annet! Steg 2: Tastetrykk på fjernkontroll Først programmerer vi kommandosentralen vår! Den må lytte etter tastetrykk, oversette disse til kommandoer og se til roboten. Vi bygger først kontroller. Craft en Advanced Wireless Pocket Computer. Denne kan vi bruke mens vi går rundt, og er ikke bundet til én plass.

Filtyper Filer har ofte etternavn som sier filtypen. Lua programmer heter ofte program.lua Nettsider heter ofte nettside.html : Nettsider skrives i et språk som heter HTML dokument.docx er et Word-dokument Kjenner du til andre filtyper? Vi kaller kontroller-programmet vårt remote.lua edit remote.lua La oss starte med å lese inn hva brukeren trykker på: function remotemove() local action, keycode = os.pullevent('key') if keycode == keys.w then return {"Go", "forward!"} elseif keycode == keys.a then return {"Denne", "må", "du", "fikse", "selv!"} else return {"Hjelp! Ukjent tast! Hva skal jeg gjøre???"} function main( ) print("venter på kommando...") rednet.open("back") -- Hvor har du modemet ditt? while true do local command = remotemove() print(unpack(command)) main() Prøv! Hva skjer når du trykker på w? Hva skjer når du trykker på noe annet? Roboten vår skal gjerne kunne svinge og gå bakover i tillegg. Legg til if-setninger dersom brukeren trykker på a, s eller d! Roboten kan i tillegg fly opp og ned. I Minecraft brukes space for å fly opp, og shift for å fly ned. Sjekk ComputerCraft Wiki for hvordan du bruker disse! Nå kjenner vi igjen tastene for å bevege seg rundt. Neste steg er å se disse til roboten som skal bevege på seg. Steg 3: Kommandotabell Vi skal bruke en tabell til å lagre kommandoen vår. Lua kaller en tabell for table, tabell på engelsk. La oss først leke oss litt med en robot.

Pass på at roboten har nok kull! Åpne lua-tolkeren, og lag en tabell: > lua lua> tabell = {"hei", "på", "deg"} lua> print(tabell) lua> print(unpack(tabell)) lua> print(tabell[1]) lua> print(tabell[2]) lua> print(tabell[3]) Tabeller Prøver vi skrive ut en tabell alene, får vi adressen til tabellen Unpack lar oss bruke tabellen i en funksjon: print(unpack({1, 2})) er det samme som print(1, 2). Vil vi ha ut et element fra tabellen, setter vi inn indeksen til elementet med firkantklammer: tabell[2]. Nå skal vi se på to måter å styre en robot på. Start CraftOS på en robot, og kjør først kommandoen på "vanlig" vis: > go forward 5 > turn left... men vi vil da ikke løpe etter roboten og skrive inn nye kommandoer dagen lang! La oss programmere dette. Åpne lua-tolkeren og lag tabeller for kommandoene over: > lua lua> command1 = {"go", "forward", "5"} lua> command2 = {"turn", "left"} lua> shell.run(unpack(command1)) -- Hva gjør unpack? Kan du gjøre dette på noen annen måte? lua> shell.run(unpack(command2)) Hva gjør unpack? Hvordan kan vi bruke shell.run() til å gå frem uten unpack()? Nøtt Åpne et nytt program: edit many.lua (Du kan bruke en annen editor hvis du vil) cmd = {"go", "forward", "5"} Kan du lage en funksjon som kjører kommandoen cmd 2 ganger?

Ekstra vanskelig: kan du lage en funksjon som kjører kommandoen i en tabell n ganger, der n ses inn i funksjonen? Du kan starte med dette: function manytimes( command, times ) for i=1,times do -- Hva skal du gjøre mange ganger? command1 = {"go forward 5"} manytimes(command1, 7) Nå skal vi re på koden på fjernkontrollen vår så den faktisk ser kommandoer til roboten. Hva er forskjellig fra koden over? Forklar til en annen programmerer eller voksen! Hva gjør programmet nå forskjellig? Åpne igjen filen remote.lua på kontrolleren Endre koden til: workerid = 5 -- Hvilket nummer er din robot? Hvordan finner du nummeret? -- OBS: Ny fuksjon som inneholder deler av gamle remotemove! function tomovecommand(keycode) if keycode == keys.w then return {"go", "forward"} -- OBS! Nå må disse matche kommandoer! elseif keycode == keys.a then return {"Denne", "må", "du", "fikse", "selv!"} else return nil --... og nye remotemove ser nå kommandoen dit den skal! function remotemove() local action, keycode = os.pullevent('key') command = tomovecommand(keycode) if command == nil then print("unknown key: ".. keycode) else print("sing ".. unpack(command)) rednet.s(workerid, command) -- Denne er ret litt function main( ) print("listening for move commands...") rednet.open("back") while true do -- Her skal vi ikke lenger skrive ut, men flytte på roboten remotemove() main() Steg 4: Motta kommando på robot

Gratulerer! Du har nå bygd en fjernkontroll! Hva skal vi bruke denne til, mon tro? Noe å styre? Jepp, jeg er helt enig. La oss gjøre det! Åpne react.lua på roboten Egne filer Husker du hvordan vi finner filene på vår egen datamaskin, så vi kan bruke Notepad++ eller Atom? Se over! Hvis datamaskinen ikke har noen filer ennå, har den heller ikke noen mappe. Lag en tom fil i CraftOS for å få mappen til å dukke opp! Fyll så på med koden! function main() -- Hva sier pheripherals? Hvilken side er modemet på? rednet.open("left") while true do ser, message = rednet.receive(99999) print("message from ".. ser.. " received: ") print(message) shell.run(unpack(message)) main() main() Metoden main() er ofte inngangsporten til et program. I for eksempel Lua og Python kan vi velge selv om vi vil ha en main-metode eller ikke. I andre språk må main være med. Eksempler på programmeringsspråk vi må ha main i er C, Java og Haskell. Hva brukes 99999 til? Hvorfor bruker vi en while -løkke? Hva skjer om vi ikke har en while-løkke? Steg 5: Kjør robot! Gratulerer! Du har gjennomført en utfordre programmeringsoppgave, og st meningsfulle beskjeder over rednet! Vær stolt!

Nå skal vi prøve det selv! Start react.lua på din robot Start remote.lua på din Portable Computer Trykk w for å gå fremover! Legg til andre kommandoer du savner! Forslag: Angrip Bygg blokk foran Kjør excavate 4 her du er Steg 6: Du vil ha mer? Du har spilt ComputerCraft lenge og begynner å få et utall forskjellige roboter du må styre. Da er det kjekt å kunne kjøre andre kommandoer på roboten! Programmet vi har skrevet for å motta og kjøre kommandoer, react.lua kan kjøre andre kommandoer enn de vi har definert for å bevege seg rundt, for eksempel excavate og dance. Åpne kontrolleren Endre følge i ssh.lua : -- Starter jeg programmet sånn: -- > ssh.lua 5 arguments =... --... blir arguments = "5" remoteid = tonumber(arguments) --... og remoteid = 5! function pack(...) return arg function remotecommand() io.write("ssh@".. remoteid.. "> ") local intputstring = io.read() local commandtable = pack(intputstring) print("sing: ") print(unpack(commandtable)) rednet.s(remoteid, commandtable) function main( ) print("listening for move commands...") rednet.open("back") while true do remotecommand() main()

Start react.lua på roboten Start ssh.lua på kontrolleren Fjernstyrt graverobot er nyttig! En graverobot kan craftes fra en annen turtle med pickaxe på ledig side. Dette er hva min gjorde: Graveroboten er klar til høyre i bildet. Flytter den til der den skal begynne å grave...

... Og der har den kommet et stykke på vei! Lisens: CC BY-SA 4.0 Forfatter: Teodor Heggelund