Loop-block

Loop-blocket är en behållare som kan innehålla en sekvens av programmeringsblock. Det får blocksekvensen som ingår att upprepas. Du kan välja om blocken ska upprepas i oändlighet, ett visst antal gånger, tills ett sensortest utförs eller tills något annat villkor är Sant.

Det är bara blocken inuti loopen som upprepas. När loopen är slut fortsätter programmet med de block som följer efter loopen.
Tips och trick
Dra block för att flytta dem inuti en loop. Loop-blocket utökas så att blocken får plats inuti.
Välj loop-läget


Lägesväljare
Indata
Utdata för räknare
Loop-namn

Använd lägesväljaren om du vill styra hur loopen ska upprepas. De olika lägena anger vilket villkor som ska avbryta loopen. Du kan till exempel få loopen att upprepas ett visst antal gånger, att upprepas tills ett datavärde från sensorn når ett visst tröskelvärde eller att upprepas i oändlighet. Vilka indata som är tillgängliga beror på vilket läge som har valts. Lägena beskrivs nedan.

Du kan ange ett namn för loopen i fältet Loop-namn högst upp i Loop-blocket. Namnet används sedan av blocket Loop-avbrott för att erbjuda dig ett alternativt sätt att avbryta loopen.

Block inuti loopen kan använda utdatavärdet Räkna för att tala om hur många gånger loopen har upprepats. Mer information finns under Använda utdatavärdet Räkna.
Lägen
Obegränsat


I läget Obegränsat upprepas blocken inuti loopen i oändlighet. Programmet når aldrig eventuella block som placeras efter loopen.
Exempel 1
Med det här programmet körs en robot i en omväxlande rak-/sväng-sekvens om och om igen tills programmet stoppas.
Tips och trick
Använd Tillbaka-knappen på EV3-enheten om du vill stoppa ett program.
Exempel 2
Med det här programmet visas en stängd mun på EV3-enhetens display varje gång trycksensorn trycks in. Annars visas en öppen mun. Loopen gör att sensortestet i blocket Förgrening upprepas kontinuerligt.
Räkna


I läget Räkna specificerar indatavärdet Räkna hur många gånger blocken ska upprepas inuti loopen.
Exempel
Med det här programmet säger en robot ”Hello” (hej) en gång, sedan ”Go” (kör) sex gånger och sedan ”Bravo” en gång. Loop-blocket innehåller ett Ljud-block och konfigureras så att det upprepas sex gånger.
Tid


I läget Tid kan du ange en viss tid som loopen ska upprepas i indatavärdet Sekunder. Tiden mäts från där loopen börjar.

Tidsgränsen testas bara i slutet av loopsekvensen. Loopsekvensen körs alltid minst en gång, och loopen återvänder bara till startpunkten om den förflutna tiden är mindre än värdet Sekunder vid det aktuella tillfället.
Logik


I läget Logik upprepas loopen tills indatavärdet Tills är Sant i slutet av loopsekvensen. Loopsekvensen körs alltid minst en gång och tills indatavärdet Tills testas i slutet av varje loop-iteration.

Använd en dataledning för att koppla indatavärdet Tills till ett logiskt utdatavärde i ett programmeringsblock som ingår i loopen. Utdatavärdet ska vara Sant när du vill att loopen ska sluta.
Exempel
Med det här programmet körs en robot framåt tills trycksensorn trycks in eller tills färgsensorn detekterar svart (beroende på vad som inträffar först). Utdatavärdet från ett block av typen Logiska operationer används för indatavärdet Tills i loopen. När loopen är slut stoppas roboten.
Tips och trick
Många sensortester som bara omfattar en sensor kan testas direkt av Loop-blocket med hjälp av de sensorlägen som beskrivs nedan.
Sensorlägen
Loop-blocket innehåller flera lägen som läser av sensordata och jämför dem med ett indatavärde. Det finns flera olika lägen för varje sensortyp. Vissa typer av sensordata går att jämföra med ett tröskelvärde. Andra typer av data kan bara jämföras med specifika värden.
Jämföra sensordata med ett tröskelvärde
I ett läge med indatavärdet Tröskelvärde upprepar Loop-blocket blocksekvensen inuti loopen tills tröskeljämförelsen har värdet Sant. Du kan till exempel få en loop att upprepas till färgsensorn detekterar ett värde för Reflekterad ljusstyrka som är mindre än ett tröskelvärde som du anger.



Lägesväljare
Portväljare
Jämför typ som indata
Tröskelvärde som indata

Använd lägesväljaren om du vill välja ett sensorläge med indatavärdet Tröskelvärde. Om en port används i läget, använder du portväljaren för att kontrollera att porten motsvarar den EV3-enhetsport som sensorn eller motorn är ansluten till.

I listan Jämför typ väljer du en typ av jämförelse som ska användas. Ange ett tröskelvärde.

Varje gång blocksekvensen inuti loopen tar slut, läser Loop-blocket av sensorns data och testar tröskelvärdet. Om testet ger Falskt upprepas loopen. Om testet ger Sant avbryts loopen och programmet fortsätter med nästa block efter loopen.

Mer information om olika typer av sensorer och vilka data de genererar finns under ”Använda sensorer”.
Exempel
Med det här programmet körs en robot framåt samtidigt som den upprepar tre olika ljud, ända tills färgsensorn detekterar en reflekterad ljusstyrka som är lägre än 30. Då stoppas roboten.
Tips och trick
Sensorns tröskelvärde testas bara i slutet av loopsekvensen. Om färgsensorn passerar snabbt över en mörk färg i mitten av loopen i exemplet ovan, kan det hända att roboten inte ser den. Då stannar den inte
Jämföra sensordata med specifika värden
Följande sensorlägen gör det möjligt för en loop att jämföra sensordata med specifika indatavärden. Loopen upprepas till sensorns data motsvarar ett angivet indatavärde.
LägeKommentarer
Enhetsknappar Loopen upprepas tills någon av de valda knapparna utför den valda åtgärden.

Se Använda enhetsknapparna.
Färgsensor – färg Loopen upprepas tills någon av de valda färgerna detekteras.

Se Använda färgsensorn.
IR-sensor – fjärr Loopen upprepas tills någon av de valda knapparna på IR-sändaren trycks in.

Se Använda läget Fjärr på IR-sensorn.
Trycksensor Loopen upprepas tills trycksensorn har den valda statusen.

Se Använda trycksensorn.
Ultraljudssensor – förekomst Loopen upprepas tills en ultraljudssignal detekteras.

Se Använda ultraljudssensorn.
Meddelanden Loopen upprepas tills den specificerade meddelandetypen tas emot.

Se Blocket Meddelanden.
Tips och trick
Sensorn testas bara i slutet av loopsekvensen. Om sensorns data bara matchar det specificerade indatavärdet under en mycket kort stund medan loopsekvensen körs, är det inte säkert att loopen avbryts.
Använda utdatavärdet Räkna
Utdatavärdet Räkna i början av ett Loop-block talar om hur många gånger loop-sekvensen har körts. Du kan använda värdet Räkna inuti loopen om du vill att loopsekvensen ska utföra olika åtgärder varje gång loopen upprepas.

Värdet Räkna är 0 första gången loopen körs och ökar med 1 för varje gång den upprepas.
Exempel
Med det här programmet visas en räkning av antalet tillfällen då trycksensorn har tryckts in (tryckts in och sedan släppts) på EV3-enhetens display. Ett Vänta-block inuti loopen får loopen att invänta varje snabbtryckning av trycksensorn innan den upprepas, medan värdet Räkna används för indatavärdet Text i Display-blocket.
Ändra loopstorlek
Loop-blocket utökas oftast automatiskt för att ge plats åt nya programmeringsblock som du drar dit. Du kan också ändra storlek på ett Loop-block manuellt om du behöver det. Om du vill ändra storlek på en loop väljer du Loop-blocket och drar sedan handtagen för storleksändring som visas kring ytterkanterna.
Exempel
Det här Loop-blocket utökas för att ge plats åt ytterligare en blocksekvens inuti.
Indata och utdata
Vilka indatavärden som är tillgängliga för Loop-blocket beror på vilket läge som har valts. Du kan fylla i indatavärdena direkt i blocket. Det går också att ange indatavärdena med hjälp av dataledningar från utgångarna för andra programmeringsblock.
IndataTypAnteckningar
Räkna NumeriskAntal gånger som loopen ska upprepas i läget Räkna.
Sekunder NumeriskAntal sekunder som loopen ska upprepas i läget Tid.
Tills LogikI läget Logik avbryts loopen när det här indatavärdet är Sant.
Jämför typ NumeriskJämförelsetyp för ett sensorläge med ett tröskelvärde.
0: = (lika med)
1: ≠ (inte lika med)
2: > (större än)
3: ≥ (större än eller lika med)
4: < (mindre än)
5: ≤ (mindre än eller lika med)
Tröskelvärde NumeriskVärde att jämföra sensordata med för ett sensorläge med ett tröskelvärde.
(Indata för enstaka sensortyper)Mer information om sensordata finns i hjälpavsnitten för de olika typerna av sensorer.
Loop-blockets utdatavärde är antalet gånger som loopen har upprepats. Om du vill använda utdatavärdet drar du en dataledning till ett annat programmeringsblock.
UtdataTypAnteckningar
Räkna NumeriskAntalet gånger som loopen har fullföljts. Värdet Räkna är 0 under loopens första iteration.
Loop
Snabblänkar