Het gebruik van de controller kan het gemakkelijker maken om uw robot te besturen en te verplaatsen om een taak te voltooien. Er zijn echter beperkingen aan het gebruik van het Drive-programma, en afhankelijk van uw robotconstructie of de taak die u moet uitvoeren, wilt u mogelijk andere bedieningselementen. Door de controller te coderen, kunt u de controller optimaliseren, zodat deze beter bij uw robot en de uit te voeren taak past. Er zijn verschillende manieren om de Controller te coderen in VEXcode V5. Elk heeft zijn voordelen en beperkingen, en sommige methoden zijn beter geschikt voor bepaalde situaties, afhankelijk van het gewenste resultaat.
Dit artikel begeleidt u door drie verschillende opties voor het op maat coderen van de controller in VEXcode V5. Elke methode wordt beschreven met zijn voordelen, beperkingen en een gebruiksvoorbeeld om u te helpen bij het kiezen van een methode. Voor de doeleinden van dit artikel zijn alle getoonde codevoorbeelden gemaakt voor de Clawbot. Dezelfde concepten kunnen echter worden toegepast op tal van andere builds die te vinden zijn op builds.vex.comen op maat gemaakte builds.
Optie 1: knoppen toewijzen in de apparaatconfiguratie
Deze optie is geweldig als u een standaardversie gebruikt, zoals een Speedbot of Clawbot, en snel aan de slag wilt.
Met deze optie kunt u motoren, een aandrijflijn of motorgroepen toewijzen aan knoppen op de controller in de apparaatconfiguratie. Voor meer informatie over het toewijzen van knoppen aan de controller in de apparaatconfiguratie, bekijk dit artikel.
Samenvatting van optie 1: knoppen toewijzen in de apparaatconfiguratie
Voordelen |
Beperkingen |
Voorbeeld situatie |
|
|
|
Optie 2: een Forever Loop gebruiken
Als je een custom build gebruikt in plaats van een standaard build, of als je meer maatwerk in je controller wilt hebben, is deze optie een goede keuze. Het gebruik van een Forever-lus is een geweldige introductie om aangepaste code voor je controller te maken.
Deze optie plaatst alle voorwaarden voor de controller en de bijbehorende knoppen in een Forever-lus. Dit biedt meer flexibiliteit, vooral bij op maat gemaakte ontwerpen, maar vereist ook enige codeerervaring. Een overweging bij het gebruik van deze optie is echter de lengte en complexiteit van uw project. Hoe meer voorwaarden er worden toegevoegd, hoe langer de codestapel kan worden. Dit betekent dat meerdere blokken achter elkaar moeten worden uitgevoerd, en als er veel blokken zijn, kan dit de uitvoering van het project vertragen. Een langzamere projectuitvoering kan een vertraging veroorzaken tussen het indrukken van de controllerknoppen en het zien van het robotgedrag.
Het specifieke voorbeeld hieronder is één manier waarop u een Forever-lus kunt gebruiken met een robot met een aangepast ontwerp (zoals een robot met een aangepaste aandrijflijn) om de robot aan te drijven en de klauw en arm te manipuleren om met objecten te communiceren.
Download het "Optie 2" VEXcode V5 projectbestand >
Uitleg van optie 2-code.
Codestuk |
Uitleg |
Voor dit codevoorbeeld is een Clawbot gebruikt. Wanneer de knoppen op de controller worden gebruikt om de arm omhoog en omlaag te brengen, zal de arm, zodra de knop wordt losgelaten, door de zwaartekracht weer naar beneden vallen. Als u zowel de arm als de klauw op “vasthouden” zet, zorgt u ervoor dat zowel de arm als de klauw op hun plaats blijven, zelfs nadat de knoppen op de controller zijn losgelaten. |
|
Voor dit codevoorbeeld is een Clawbot gebruikt. Wanneer de knoppen op de controller worden gebruikt om de arm omhoog en omlaag te brengen, zal de arm, zodra de knop wordt losgelaten, door de zwaartekracht weer naar beneden vallen. Als u zowel de arm als de klauw op “vasthouden” zet, zorgt u ervoor dat zowel de arm als de klauw op hun plaats blijven, zelfs nadat de knoppen op de controller zijn losgelaten. Er wordt gebruik gemaakt van een Forever-lus om continu te controleren welke knoppen op de Controller worden ingedrukt. De blokken [Set motor speed] worden gebruikt om de motorsnelheid in te stellen op de huidige positie van de controller langs de 2 en 3 assen. Dit komt overeen met het in de rij zetten van een auto. Dat zorgt er niet noodzakelijkerwijs voor dat de auto in beweging komt, het zet hem alleen maar in beweging. Elke joystickas retourneert een waarde tussen -100 en +100, en retourneert een waarde nul wanneer deze gecentreerd is. Dit betekent dan dat de assen van de joystick, wanneer ingedrukt, gelijk zijn aan -100% tot 100%. Hoe verder richting 100 of -100 de assen worden geduwd, hoe sneller de motor zal draaien. Het [Spin]-blok wordt dan gebruikt om de motor daadwerkelijk te laten bewegen. Dit komt overeen met het indrukken van het gaspedaal op de auto zodra de richting is bepaald. Hierdoor kan elke motor worden bestuurd door een van de vier controller-assen. |
|
Voor dit codevoorbeeld is een Clawbot gebruikt. Wanneer de knoppen op de controller worden gebruikt om de arm omhoog en omlaag te brengen, zal de arm, zodra de knop wordt losgelaten, door de zwaartekracht weer naar beneden vallen. Als u zowel de arm als de klauw op “vasthouden” zet, zorgt u ervoor dat zowel de arm als de klauw op hun plaats blijven, zelfs nadat de knoppen op de controller zijn losgelaten. Het blok [Als dan anders als dan anders] wordt gebruikt om bepaald gedrag toe te wijzen aan knoppen die op de controller worden ingedrukt of losgelaten. In dit codegedeelte gelden de ingestelde voorwaarden als de knoppen Omhoog of Omlaag worden ingedrukt. Als dat zo is, zullen bepaalde gedragingen plaatsvinden, zoals het omhoog en omlaag brengen van de arm. Er is ook het else-gedeelte van de voorwaarde: als geen van beide knoppen wordt ingedrukt, stopt de arm met bewegen. Merk op dat het volgende codegedeelte in het project voor de Claw dezelfde uitleg volgt. |
Samenvatting van optie 2: een Forever Loop gebruiken
Voordelen |
Beperkingen |
Voorbeeld situatie |
|
|
|
Optie 3: Gebeurtenissen gebruiken
Als je veel maatwerk aan je Controller wilt, is het gebruik van Events de beste optie voor jou. Eén druk op de knop kan meerdere robotgedragingen activeren, zoals het indrukken van een knop om de klauw te openen, de arm op te heffen en een bepaalde afstand vooruit te rijden. Als u probeert meerdere gedragingen per knop binnen een Forever-lus te coderen, zou de uitvoering van het project dramatisch vertragen. Door Gebeurtenissen te gebruiken, kunt u dit effectiever doen.
Deze optie gebruikt gebeurtenissen om de projectstroom op te splitsen. Dit is vergelijkbaar met het gebruik van een Forever-lus, maar zorgt ervoor dat de code beter georganiseerd is, zodat de uitvoering van de knop een snellere responstijd heeft. Een snellere responstijd betekent dat u geen vertraging zult zien tussen het indrukken van de controllerknoppen en het zien van het robotgedrag. Dit voorbeeld toont hetzelfde gedrag als het vorige project, maar uitgevoerd met behulp van de gebeurtenissen in plaats van de Forever Loop.
Download het "Optie 3" VEXcode V5 projectbestand >
Uitleg van Optie 3-code.
Codestuk |
Uitleg |
Voor dit codevoorbeeld is een Clawbot gebruikt. Wanneer de knoppen op de controller worden gebruikt om de arm omhoog en omlaag te brengen, zal de arm, zodra de knop wordt losgelaten, door de zwaartekracht weer naar beneden vallen. Als u zowel de arm als de klauw op “vasthouden” zet, zorgt u ervoor dat zowel de arm als de klauw op hun plaats blijven, zelfs nadat de knoppen op de controller zijn losgelaten. |
|
Voor dit codevoorbeeld is een Clawbot gebruikt. Wanneer de knoppen op de controller worden gebruikt om de arm omhoog en omlaag te brengen, zal de arm, zodra de knop wordt losgelaten, door de zwaartekracht weer naar beneden vallen. Als u zowel de arm als de klauw op “vasthouden” zet, zorgt u ervoor dat zowel de arm als de klauw op hun plaats blijven, zelfs nadat de knoppen op de controller zijn losgelaten. {When controller axis} Gebeurtenisblokken worden gebruikt om bepaald gedrag te activeren wanneer een van de vier assen op de controller wordt gewijzigd met behulp van de joysticks. De blokken [Set motor speed] worden gebruikt om de motorsnelheid in te stellen op de huidige positie van de controller langs de A- en D-assen. Dit komt overeen met het in de rij zetten van een auto. Dat zorgt er niet noodzakelijkerwijs voor dat de auto in beweging komt, het zet hem alleen maar in beweging. Elke joystickas retourneert een waarde tussen -100 en +100, en retourneert een waarde nul wanneer deze gecentreerd is. Dit betekent dan dat de assen van de joystick, wanneer ingedrukt, gelijk zijn aan -100% tot 100%. Hoe verder richting 100 of -100 de assen worden geduwd, hoe sneller de motor zal draaien. Het [Spin]-blok wordt dan gebruikt om de motor daadwerkelijk te laten bewegen. Dit komt overeen met het indrukken van het gaspedaal op de auto zodra de richting is bepaald. Hierdoor kan elke motor worden bestuurd door een van de vier controller-assen. |
|
Voor dit codevoorbeeld is een Clawbot gebruikt. Wanneer de knoppen op de controller worden gebruikt om de arm omhoog en omlaag te brengen, zal de arm, zodra de knop wordt losgelaten, door de zwaartekracht weer naar beneden vallen. Als u zowel de arm als de klauw op “vasthouden” zet, zorgt u ervoor dat zowel de arm als de klauw op hun plaats blijven, zelfs nadat de knoppen op de controller zijn losgelaten. {When controller axis} Gebeurtenisblokken worden gebruikt om bepaald gedrag toe te wijzen aan knoppen die op de controller worden ingedrukt of losgelaten. In dit codegedeelte gelden de ingestelde voorwaarden als de knoppen Omhoog of Omlaag worden ingedrukt. Als dat zo is, zullen bepaalde gedragingen plaatsvinden, zoals het omhoog brengen, laten zakken of stoppen van de arm. Merk op dat het laatste codegedeelte in het project voor de Claw dezelfde uitleg volgt. |
Samenvatting van optie 3: Gebeurtenissen gebruiken
Voordelen |
Beperkingen |
Voorbeeld situatie |
|
|
|