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.

VEXcode IQ Apparatenmenu met een lijst van aangesloten apparaten. Een Smart Motor wordt gemarkeerd, hetgeen betekent dat u deze kunt configureren nadat u deze hebt geselecteerd.

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.

VEXcode IQ blokkeert projecten die wachtende opdrachten gebruiken om eerst de klauwmotor, dan de robot en ten slotte de armmotor te bewegen. Het project luidt als volgt: Wanneer gestart, draai ClawMotor dicht gedurende 90 graden. Rijd vervolgens 200 mm achteruit en draai de ArmMotor vervolgens 180 graden.

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.

VEXcode IQ blokkeert projecten die niet-wachtende opdrachten gebruiken om de inlaatmotor precies 2 seconden te laten draaien. Het project luidt als volgt: Wanneer gestart, draai IntakeMotor in, wacht 2 seconden en stop dan IntakeMotor.

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.

VEXcode IQ blokkeert projecten die een motortime-outblok gebruiken om de klauwmotor 90 graden gesloten te laten draaien of totdat er 2 seconden zijn verstreken voordat de robot wordt verplaatst. Het project luidt als volgt: Wanneer gestart, stel de ClawMotor-time-out in op 2 seconden en draai ClawMotor dicht gedurende 90 graden. Rijd ten slotte 200 mm achteruit.

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.

Het Brain-scherm wordt weergegeven met het Motor Sensor Dashboard geopend via het menu Apparaten. Er wordt informatie over de motor weergegeven, zoals het commando, de snelheid, de positie, de stroom en de Smart Port van de motor.

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.

VEXcode IQ blokkeert projecten die wachtende opdrachten gebruiken om de robot vooruit te laten rijden en vervolgens één voor één naar rechts te laten draaien. Het project luidt als volgt: Rijd bij de start 200 mm vooruit en draai dan 90 graden naar rechts.

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.

VEXcode IQ blokkeert projecten die een niet-wachtend commando gebruiken om de robot vooruit te laten rijden totdat de Bumper wordt ingedrukt, en vervolgens naar rechts te draaien. Het project luidt als volgt: Wanneer gestart, rijd vooruit, wacht tot Bumper3 wordt ingedrukt en draai dan 90 graden naar rechts.

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: