Codering met VEX IQ Smart Motors

De VEX IQ Smart Motor heeft veel functies die u kunt gebruiken bij het coderen in VEXcode IQ. Dit kan van pas komen bij het coderen van armen, klauwen en inlaten, maar ook van aandrijflijnen en andere mechanismen die met VEX IQ zijn gemaakt. Als u begrijpt hoe de motoren kunnen worden gecodeerd, kunt u problemen oplossen, zoals het vastlopen van projecten of het niet werken van motoren zoals bedoeld.

Motor-encoder

De VEX IQ Smart Motor zet niet alleen elektrische energie om in mechanische energie, zoals de meeste motoren doen, maar heeft ook eigenschappen die de meeste motoren niet hebben, waardoor hij ‘slim’ is. Een van de belangrijkste kenmerken is de kwadratuur-encoder. Deze encoder wordt aan de binnenkant van de motor gemonteerd om het toerental en/of de positie van de motoras te volgen.

Rapporten van de encoder van de VEX IQ Smart Motor maken het mogelijk om te weten:

  • De draairichting van de motor (vooruit/achteruit of open/gesloten)
  • De positie van de motor en de hoeveelheid draaiing en positie van de motor (in bochten of graden)
  • De snelheid waarmee de motor draait (gebaseerd op de positie van de encoder in de loop van de tijd)

Omdat de encoder de toestanden van de motor rapporteert, kunnen deze worden gebruikt bij berekeningen achter de schermen om veel van de Motion- en Sensing-commando's binnen de VEXcode IQ te laten werken.

Coderen van individuele motoren

Voordat u begint met het coderen van individuele slimme motoren in VEXcode IQ, moet u de motor configureren. Individuele motoren worden vaak gebruikt voor aanvullende mechanismen zoals inlaten, armen en klauwen. Alle informatie is echter nog steeds van toepassing op andere mechanismen die gebruik maken van individuele motoren.

afbeelding7.png

Volg de stappen in dit artikel om uw individuele motor in VEXcode IQ te configureren.

Als er één enkele motor is geconfigureerd, verschijnen er opdrachten om die motor te besturen in de Toolbox. U zult merken dat er verschillende soorten opdrachten zijn: wachtend en niet-wachtend.

Wachtende versus niet-wachtende opdrachten

Merk op dat alle afbeeldingen hier blokken tonen. Al deze projecten kunnen opnieuw worden opgebouwd in Python of C++ en bevatten dezelfde functionaliteit als blokken.

afbeelding3.png

Wachtende opdrachten zorgen ervoor dat het project niet kan worden voortgezet totdat het gedrag is voltooid. Deze omvatten opdrachten zoals [Spin ​​for] en [Spin ​​to position].

Het hier getoonde project maakt gebruik van een Clawbot-sjabloon (2 motoren) en alle opdrachten wachten. Dus in serie sluit de klauwmotor 90 graden, de robot rijdt achteruit en vervolgens draait de arm omhoog om een ​​positie van 180 graden te bereiken.

afbeelding6.png

Daarentegen zijn er niet-wachtende commando's. Een niet-wachtend commando zal het gedrag voor onbepaalde tijd uitvoeren of totdat wordt verteld dat het naar een ander gedrag moet veranderen. Deze omvatten opdrachten zoals [Spin].

Het hier getoonde project maakt gebruik van een BaseBot waaraan een intake is toegevoegd. Hier zou de inlaatmotor beginnen te draaien. Het [Wacht]-commando is een wachtcommando, dus de intake zou blijven draaien totdat de 2 seconden voorbij waren, en dan naar het volgende commando in het project gaan dat een [Stop]-commando is. Dan stopte de motor met draaien.

Motortime-outs

Bij het coderen van een motor als onderdeel van een arm of klauw is het belangrijk om het verschil te onthouden tussen wachtende en niet-wachtende blokken en hoe deze de beweging van uw robot zullen beïnvloeden. Met motortime-outs kunt u een tijdslimiet instellen waarna de motor de beoogde doelpositie bereikt. Als de motor deze positie niet heeft bereikt wanneer de tijd verstrijkt, stopt hij met draaien en gaat het project naar het volgende commando.

afbeelding2.png

In dit voorbeeld is de motortime-out ingesteld op 2 seconden. Als de klauw niet binnen 2 seconden tot 90 graden sluit, stopt de motor met draaien na de 2 secondenmarkering en gaat dan naar het volgende commando en rijdt vooruit.

afbeelding4.png

Als u niet zeker weet hoe ver u een motor moet verplaatsen, gebruikt u het sensordashboard. Het dashboard rapporteert de positie van de motor in graden en omwentelingen, dus als je een motor beweegt (zoals het openen en sluiten van een klauw), veranderen de cijfers. Gebruik deze test om te bepalen hoeveel graden of rotaties nodig zijn om een ​​klauw te sluiten, een arm op te heffen, een inlaat te laten draaien, enz.

Bekijk deze artikelen voor meer informatie over het gebruik van het sensordashboard.

Slimme motoren coderen als onderdeel van een aandrijflijn

Voordat u begint met het coderen van een aandrijflijn in VEXcode IQ, moet u de aandrijflijn inclusief de gebruikte motoren configureren. De motoren zijn binnen de aandrijflijn geconfigureerd om ervoor te zorgen dat ze worden bestuurd met dezelfde commando's als [Drive] en [Drive for].

Wacht- en niet-wachtopdrachten

Bij het coderen van een aandrijflijn zijn wachtende en niet-wachtende commando's beschikbaar om de beweging van de robot te besturen.

afbeelding1.png

Wachtende opdrachten zorgen ervoor dat het project niet kan worden voortgezet totdat het gedrag is voltooid. Deze omvatten opdrachten zoals [Rijd naar] [Turn for] en [Turn to headline].

Het hier getoonde project maakt gebruik van een Clawbot-sjabloon (2 motoren) en alle opdrachten wachten. Dus in serie zou de robot 200 millimeter vooruit rijden en vervolgens naar rechts draaien, allemaal met behulp van de aandrijflijn.

afbeelding8.png

Daarentegen zijn er niet-wachtende commando's. Een niet-wachtend commando zal het gedrag voor onbepaalde tijd uitvoeren of totdat wordt verteld dat het naar een ander gedrag moet veranderen. Deze omvatten opdrachten zoals [Drive].

Het hier getoonde project maakt gebruik van een BaseBot. Hier zou de robot voor onbepaalde tijd vooruit rijden totdat de bumperschakelaar werd ingedrukt. Dan zou het project naar het volgende commando gaan en zou de robot stoppen met rijden en 90 graden naar rechts draaien.

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

Last Updated: