Legorobot Lär dig programmera en legorobot. Teknikåttan 2009 Ola Ringdahl Lena Kallin Westin
Legorobot Sid 2 (6)
Legorobot Sid 3 (6) LEGOROBOT Syfte Syftet med denna praktiska uppgift är att man ska få en insikt i hur en robot kan styras med hjälp av enkel programmering med ikoner. Uppgiften kommer också ge tillfälle till reflektion kring hur man ger en robot ett beteende och vilka beteenden som är enkla att programmera och vilka som är svårare. Uppgift När uppgiften startar finns två ljussensorer kopplade på roboten, dessa är kopplade till ingång 1 och 3 på RCX-modulen. Det finns också en trycksensor kopplad till ingång 2. Det finns två motorer på roboten som styr vänster respektive högre hjulpar. Motorerna är kopplade till utgångarna A och C. På utgång B sitter en lampa som man kan tända och släcka i programmet. Deluppgift 1 Arbeta med utdata - styr roboten Ni ska nu skapa olika beståndsdelar för att styra roboten. Ni börjar med att utveckla delarna mellan trafikljusen. Skapa program som gör att roboten åker framåt roboten åker bakåt roboten svänger vänster roboten svänger höger Exempel 1: Såhär får man roboten att köra rakt fram i 2 sekunder och sedan stanna. Notera att vänster- och högersvängarna kan göras på tre olika sätt. Två sätt där roboten står stilla och svänger och ett sätt där roboten kör framåt samtidigt som den svänger (det bli en lite större svängradie). Implementera (skapa ett program för) alla tre sätten och undersök vad som skiljer dem åt. Deluppgift 2 Kör runt i en hockeyrink Skapa ett program som gör att roboten kör runt i en "hockeyrink" med ett hinder i mitten utan att köra in i väggarna eller i hindret. Roboten ska klara minst ett varv. Om ni vill göra det lite svårare kan ni göra en labyrint som roboten ska ta sig igenom. Nästa steg är att göra samma sak men med en trycksensor. Låt roboten köra rakt fram tills trycksensorn känner av väggen. Stanna roboten, sväng åt lämpligt håll och låt sedan roboten fortsätta till nästa vägg. Upprepa tills roboten tar sig runt hela banan. Följande exempel är en bit på väg (två sätt olika att göra samma sak): Exempel 2: I det här exemplet kör roboten rakt fram tills trycksensorn (kopplad till port 2) trycks in. Då stannar den. Exempel 3: Här används en loop som kör roboten framåt så länge som trycksensorn inte är intryck. När den trycks in hoppar programmet ur loppen och roboten stannar.
Legorobot Sid 4 (6) Deluppgift 3 Gör en robot som kan följa en snitslad bana I laborationssalen finns en vit och/eller svart bana upptejpad på golvet. Skriv ett program till roboten som med hjälp av ljussensorerna gör att roboten automatiskt rör sig längs banan. Exempel 4: Ett nästan färdigt program för att följa en snitslad bana. Först kör roboten rakt fram. Om ljussensorn på port 1 får ett värde mindre än 42 görs nånting (som ni ska komma på). Motsvarande händer när den andra ljussensorn (på port 3) får ett värde mindre än 42. Frivilliga extrauppgifter Gör en robot som rör sig på området innanför banan. Gör en robot som kan köra på ett bord utan att ramla ned. Tips! Använd trycksensorn och låt den vara nedtryckt när den kör omkring och stanna när den släpps upp. Kom på nånting roligt som ni tycker roboten ska göra och skriv ett program för det. Introduktion till systemet Till höger visas en detaljbild av RCX-enheten. Dess knappar och portar beskrivs i tabellen nedan. Portar Etikett Färg Namn Funktion 1,2,3 Grå Input Här kopplar man in sensorer, t.ex. ljus, tryck, temperatur och rotationssensor A, B, C Svart Output Här kopplar man in motorer och andra outputenheter som t.ex. lampor Knappar Etikett Färg Namn Funktion Beskrivning On-Off Röd On-off Slår av och på RCX-enheten Programmen finns kvar i RCXenheten så länge det finns batterier i den. View Svart View Låter användaren se en ports värden i displayfönstret En pil kommer fram och pekar på den port som man kollar värdet på. Prgm Grå Program Väljer vilket program (1-5) som RCX ska köra. Run Grön Run-Stop Startar och stoppar körningen av ett RCX-program Om man trycker ned knappen flera gånger så byts programnumret. Nummer 1 och 23 är låsta program När ett program körs ser det ut som att den lilla personen springer.
Legorobot Sid 5 (6) Några av ikonerna förklarade i detalj: Begin End Stop A Stop all Outputs Början på ett program, måste finnas med i alla program. Slutet på ett program, måste finnas med i alla program. Stoppar strömmen till port A (dvs. om en motor är kopplad dit så stannar motorn). Finns motsvarande för port B och C. Stoppar strömmen till portarna A, B och C Motor A, Forward Startar porten framåt full fart. Finns motsvarande för port B och C. Motor A, Reverse Startar porten bakåt full fart. Finns motsvarande för port B och C. Wait-For? Sub-menu Modifiers Sub-menu Klicka på denna ikon så öppnar en undermeny med kommandon som stannar körningen. Stanna körningen 1 sekund (finns också 2, 4, 6, 8 och 10 sekunder samt tiondelar och hundradelar). Vänta ett slumpmässigt antal sekunder (default 1-5 sekunder). Den här undermenyn använder man när man vill använda specifika portar, kraftnivåer, och värden i andra kommandoikoner. Koppla in denna modifierare för att välja input Port 1. Koppla in denna modifierare för att välja output Port A. Denna modifierare ställer in en motor (eller lampa) på kraftnivå 4. Structures Sub-menu Loops SubSub-menu Denna modifierare används för att skicka ett konstant värde till en sensor eller en tid till tidskommandoknappar. I denna undermeny finns kommandoknappar för loopar, (upprepningar i programmet), forkar (val i programmet) och andra sätt att strukturera programmet. I undermenyn Structures finns ikonen Loops som öppnar en undermeny som hanterar olika upprepningar i programmet. Loopar så länge trycksensorn INTE är intryckt. Loopar så länge trycksensorn är intryckt. Loopar så länge ljussensorn är mindre än ett visst värde. Slutet på en loop, hoppar tillbaka till början av loopen. Forks SubSub-menu I undermenyn Structures finns ikonen Forks som öppnar en undermeny som hanterar olika val i programmet. Programmet kommer att välja mellan två vägar i programmet och sedan gå ihop i en enda väg igen. Trycksensorfork. Om trycksensorn INTE är intryckt så körs den övre programtråden och är den intryckt körs den undre programtråden. Ljussensorfork. Om ljussensorns värde är över det givna körs den övre programtråden. Är värdet under det givna körs den undre programtråden. För samman två programtrådar till en enda.
Legorobot Sid 6 (6) Man kan slå på en kontextberoende hjälp genom att i menyn Help kryssa för Show Contect Help eller genom att trycka på Ctrl-H. När man sedan arbetar med en ikon på skrivbordet får man hjälp med hur ikonen fungerar. Till exempel får man följande hjälp för Motor A, Forward -ikonen: Här ser man följande: Ikonen har tre ställen där man kan koppla trådar. Begin och End används för själva programmet. Begin på denna ikon ska kopplas till End på den föregående ikonen i programmet och End på denna ikon ska kopplas till Begin på nästa ikon. Power Level är det tredje stället och där kan man koppla in en kraftnivå på motorn. Men det står också att default är full fart så man behöver inte koppla in ett värde här om man inte vill. Hjälpen för ljusssensorforken ser ut så här: