Anpassad styrenhetskod i VEXcode V5

Att använda kontrollenheten kan göra det enklare att köra och flytta din robot för att slutföra en uppgift. Det finns dock begränsningar med att använda Drive-programmet, och beroende på din robotkonstruktion eller uppgiften kan du vilja ha olika kontroller. Genom att koda styrenheten kan du optimera den så att den passar din robot och den aktuella uppgiften bättre. Det finns flera sätt att koda regulatorn i VEXcode V5. Var och en har sina fördelar och begränsningar, och vissa metoder är bättre lämpade för vissa situationer beroende på önskat resultat.

Den här artikeln går igenom tre olika alternativ för anpassad kodning av styrenheten i VEXcode V5. Varje metod kommer att beskrivas med dess fördelar, begränsningar och ett exempel på användningsfall som kan hjälpa dig att välja en metod. I den här artikeln skapades alla visade kodexempel för Clawbot. Samma koncept skulle dock kunna tillämpas på många andra byggen som finns på builds.vex.com, och anpassade byggen.

Alternativ 1: Tilldela knappar i enhetskonfigurationen

Det här alternativet är utmärkt när du använder en standardversion, som en Speedbot eller Clawbot, och vill komma igång snabbt.

Med det här alternativet kan du tilldela motorer, en drivlina eller motorgrupper till knappar på styrenheten i enhetskonfigurationen. För mer information om hur man tilldelar knappar till kontrollenheten i enhetskonfigurationen, se den här artikeln.

Diagram som illustrerar V5-block för programmering, och visar olika blocktyper och deras kopplingar i ett visuellt format för att underlätta förståelsen av blockbaserade kodningshandledningar.

Sammanfattning av alternativ 1: Tilldela knappar i enhetskonfigurationen

Fördelar

Begränsningar

Exempelsituation

  • Snabb installation utan kodning
  • Enklaste metoden
  • Lätt justerbar
  • Kan tilldela enskilda motorer, en standarddrivlina och motorgrupper till knappar
  • Knapptilldelningar är begränsade till antalet knappar på kontrollenheten.
  • Drivlinan får inte överstiga 4 motorer eller vara anpassad (endast en standarddrivning stöds, inte en H-drivning, holonomisk eller annan anpassad drivlina)
  • Manipulera en standardversion som en Speedbot, Clawbot eller en enkel modifiering av dessa standardversioner. Till exempel en Speedbot med ett insug fäst på framsidan som styrs av en motorgrupp.
  • Manipulera vilka knappar som motsvarar olika beteenden på roboten snabbt utan mycket kodning

Alternativ 2: Använda en Forever Loop

Om du använder en anpassad version istället för en standardversion, eller vill kunna anpassa din kontrollenhet mer, är det här alternativet ett bra alternativ. Att använda en Forever-loop är en bra introduktion till att skapa anpassad kod för din Controller.

Det här alternativet placerar alla villkor för kontrollenheten och dess tillhörande knappar i en Forever-loop. Detta ger mer flexibilitet, särskilt med anpassade byggdesigner, men kräver också viss kodningserfarenhet. En faktor att beakta när man använder det här alternativet är dock projektets längd och komplexitet. Ju fler villkor som läggs till, desto längre kan kodstacken bli. Det här innebär att flera block måste exekveras i ordning, och när det finns många block kan detta sakta ner projektkörningen. Långsammare projektkörning kan skapa en fördröjning mellan att trycka på kontrollknapparna och att se robotens beteende.

Det specifika exemplet som visas nedan är ett sätt att använda en Forever-loop med en specialdesignad robot (till exempel en robot med en specialdesignad drivlina) för att driva roboten och manipulera klon och armen för att interagera med objekt.

Diagram som illustrerar V5-blockhandledningar, som visar olika blocktyper och deras kopplingar i en tydlig och organiserad layout för förbättrad förståelse av VEX-robotprogrammering.

Ladda ner VEXcode V5-projektfilen "Alternativ 2" >

Förklaring av alternativ 2-kod.

Kodbit

Förklaring

Diagram som illustrerar V5-blockkomponenter och deras funktioner i ett handledningsformat, som visar olika blocktyper och kopplingar för utbildningsändamål.

En Clawbot användes för detta kodexempel. När knapparna på kontrollenheten används för att höja och sänka armen, kommer armen på grund av gravitationen att falla ner igen så snart knappen släpps. Genom att ställa in både armen och klon på "håll" säkerställs att både armen och klon förblir på plats även efter att knapparna på kontrollenheten har släppts.

Diagram som illustrerar V5-blockkomponenter och deras funktioner, som används i avsnittet Blocks Tutorials i VEX Knowledge Base, och visar olika blocktyper och deras kopplingar för utbildningsändamål. Diagram som illustrerar V5-block med märkta komponenter och anslutningar, som används i handledningar för att förstå blockprogrammering i VEX-robotik.

En Clawbot användes för detta kodexempel. När knapparna på kontrollenheten används för att höja och sänka armen, kommer armen på grund av gravitationen att falla ner igen så snart knappen släpps. Genom att ställa in både armen och klon på "håll" säkerställs att både armen och klon förblir på plats även efter att knapparna på kontrollenheten har släppts.

En Forever-slinga används för att kontinuerligt kontrollera vilka knappar som trycks ned på kontrollenheten.

Blocken [Ställ in motorhastighet] används för att ställa in motorhastigheten till den aktuella regulatorns position längs 2:ans och 3:ans axlar. Detta motsvarar att sätta en bil i körläge. Det behöver inte nödvändigtvis få bilen att röra sig, det bara sätter igång den.

Varje joystickaxel returnerar ett värde mellan -100 och +100, och returnerar värdet noll när den är centrerad. Detta innebär då att joystickens axlar, när de trycks ned, motsvarar -100 % till 100 %. Ju längre mot 100 eller -100 axlarna trycks, desto snabbare snurrar motorn.

Blocket [Spin] används sedan för att faktiskt röra motorn. Detta motsvarar att gasa på bilen när riktningen har ställts in. Detta gör att varje motor kan styras av en av de fyra styrenhetens axlar.

Diagram som illustrerar V5-block för programmeringshandledningar, som visar olika blocktyper och deras kopplingar, utformat för att förbättra förståelsen av kodningskoncept i utbildningssammanhang.

En Clawbot användes för detta kodexempel. När knapparna på kontrollenheten används för att höja och sänka armen, kommer armen på grund av gravitationen att falla ner igen så snart knappen släpps. Genom att ställa in både armen och klon på "håll" säkerställs att både armen och klon förblir på plats även efter att knapparna på kontrollenheten har släppts.

Blocket [If then else if then else] används för att mappa vissa beteenden till knappar som trycks ned eller släpps på kontrollenheten. I det här kodexemplet är villkoren som ställs in om Upp- eller Ner-knapparna trycks ned. Om så är fallet kommer vissa beteenden att inträffa, som att höja och sänka armen. Det finns också den andra delen av villkoret, om ingen av knapparna trycks ner är armen inställd på att sluta röra sig.

Observera att följande kodavsnitt i projektet för Claw följer samma förklaring.

Sammanfattning av alternativ 2: Använda en Forever Loop

Fördelar

Begränsningar

Exempelsituation

  • Kan anpassas efter behov, särskilt drivlinor med fler än fyra motorer.
  • Kan tilldela flera beteenden till en enda knapp
  • Kan tilldela beteenden till olika axlar på kontrollenheten (i motsats till de enda alternativen Vänster Arkad, Höger Arkad, Delad Arkad och Tankdrift i Enhetskonfigurationen)
  • Kräver en viss mängd kodningskunskaper (villkorskommandon, loopar och kunskap om knappar/joysticks på handkontrollen)
  • Potential för långsammare projektkörning, eller fördröjd knappresponstid. Eftersom alla kommandon finns i en enda Forever-loop kan kodkörningen gå långsamt beroende på de inställda villkoren och kodens längd.
  • Använda styrenheten med en specialbyggd robot, särskilt med en icke-standardiserad drivlina
  • När man vill tilldela flera beteenden till en enda knapp. Till exempel, när uppknappen trycks ner kan klon öppnas, köra framåt och sedan stängas runt ett föremål.

Alternativ 3: Använda händelser

Om du vill ha många anpassningsmöjligheter för din Controller är Använda Events det bästa alternativet för dig. Ett knapptryck kan utlösa flera robotbeteenden, som att trycka på en knapp för att öppna klon, höja armen och köra framåt ett visst avstånd. Att försöka koda flera beteenden per knapp inom en Forever-loop skulle göra att projektkörningen saktar ner dramatiskt – med hjälp av Events kan du göra detta mer effektivt.

Det här alternativet använder händelser för att dela upp projektflödet. Detta liknar att använda en Forever-loop, men gör att koden kan vara mer organiserad, så att knappkörningen har en snabbare svarstid. Snabbare svarstid innebär att du inte kommer att se någon fördröjning mellan att trycka på kontrollknapparna och att du ser robotens beteende. Det här exemplet visar samma beteenden som det föregående projektet, men utfört med hjälp av Events istället för Forever Loop.

Illustration av V5-block som används i handledningar, som visar olika blocktyper och deras kopplingar, samt demonstrerar hur man bygger och programmerar med VEX V5-robotteknik.

Ladda ner VEXcode V5-projektfilen "Alternativ 3" >

Förklaring av alternativ 3-kod.

Kodbit

Förklaring

Diagram som illustrerar olika V5-block som används i robotikhandledningar, och visar deras funktioner och kopplingar för utbildningsändamål.

En Clawbot användes för detta kodexempel. När knapparna på kontrollenheten används för att höja och sänka armen, kommer armen på grund av gravitationen att falla ner igen så snart knappen släpps. Genom att ställa in både armen och klon på "håll" säkerställs att både armen och klon förblir på plats även efter att knapparna på kontrollenheten har släppts.

Diagram som illustrerar V5-block i en robothandledning, som visar olika blocktyper och deras kopplingar för programmeringsuppgifter. Diagram som illustrerar V5-block med märkta komponenter och anslutningar, som används i handledningar för att förstå blockprogrammering i VEX-robotik.

En Clawbot användes för detta kodexempel. När knapparna på kontrollenheten används för att höja och sänka armen, kommer armen på grund av gravitationen att falla ner igen så snart knappen släpps. Genom att ställa in både armen och klon på "håll" säkerställs att både armen och klon förblir på plats även efter att knapparna på kontrollenheten har släppts.

{When controller axis} Händelseblock används för att utlösa vissa beteenden när en av de fyra axlarna på kontrollenheten ändras med hjälp av joystickarna.

Blocken [Ställ in motorhastighet] används för att ställa in motorhastigheten till den aktuella regulatorns position längs A- och D-axlarna. Detta motsvarar att sätta en bil i körläge. Det behöver inte nödvändigtvis få bilen att röra sig, det bara sätter igång den.

Varje joystickaxel returnerar ett värde mellan -100 och +100, och returnerar värdet noll när den är centrerad. Detta innebär då att joystickens axlar, när de trycks ned, motsvarar -100 % till 100 %. Ju längre mot 100 eller -100 axlarna trycks, desto snabbare snurrar motorn.

Blocket [Spin] används sedan för att faktiskt röra motorn. Detta motsvarar att gasa på bilen när riktningen har ställts in. Detta gör att varje motor kan styras av en av de fyra styrenhetens axlar.

Diagram som illustrerar V5-blocken som används i programmeringshandledningar, och visar olika blocktyper och deras funktioner inom VEX Robotics-systemet.

En Clawbot användes för detta kodexempel. När knapparna på kontrollenheten används för att höja och sänka armen, kommer armen på grund av gravitationen att falla ner igen så snart knappen släpps. Genom att ställa in både armen och klon på "håll" säkerställs att både armen och klon förblir på plats även efter att knapparna på kontrollenheten har släppts.

{When controller axis} Händelseblock används för att koppla vissa beteenden till knappar som trycks ned eller släpps på kontrollenheten. I det här kodexemplet är villkoren som ställs in om Upp- eller Ner-knapparna trycks ned. Om så är fallet kommer vissa beteenden att inträffa, som att höja, sänka eller stanna upp armen.

Observera att den sista koden i projektet för Claw följer samma förklaring.

Sammanfattning av alternativ 3: Använda händelser

Fördelar

Begränsningar

Exempelsituation

  • Kan anpassas efter behov, särskilt drivlinor med fler än fyra motorer.
  • Kan tilldela flera beteenden till en enda knapp
  • Kan tilldela beteenden till olika axlar på kontrollenheten (i motsats till de enda alternativen Vänster Arkad, Höger Arkad, Delad Arkad och Tankdrift i Enhetskonfigurationen)
  • Snabbare kodkörning och därmed knappresponsivitet (eftersom varje villkor anropas separat och inte är inbäddat i en enda kodstack)
  • Kräver mest kodningskunskap om alternativen (villkor, loopar, händelser och kunskap om knappar/joysticks på kontrollenheten)
  • Använda styrenheten med en specialbyggd robot, särskilt med en icke-standardiserad drivlina
  • När man vill tilldela flera beteenden till en enda knapp utan fördröjning. Till exempel, när uppknappen trycks ner kan klon öppnas, köra framåt och sedan stängas runt ett föremål.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: