Kodning med VEX IQ Smart Motors

VEX IQ Smart Motor har många funktioner att använda vid kodning i VEXcode IQ. Detta kan vara praktiskt vid kodning av armar, klor och insug samt drivlinor och andra mekanismer som skapats med VEX IQ. Att förstå hur motorerna kan kodas hjälper till att lindra problem som att projekt stannar eller att motorer inte fungerar som avsett.

Motorkodare

VEX IQ Smart Motor omvandlar inte bara elektrisk energi till mekanisk energi, som de flesta motorer gör, den har också funktioner som de flesta motorer inte har, vilket gör den "smart". En av dess huvudfunktioner är kvadraturkodaren. Denna kodare är monterad på insidan av motorn för att spåra motoraxelns hastighet och/eller position.

Rapporter från VEX IQ Smart Motors kodare gör det möjligt att veta:

  • Motorns rotationsriktning (framåt/bakåt eller öppen/stängd)
  • Motorns position och motorns vridmoment och position (antingen i varv eller grader)
  • Motorns rotationshastighet (baserat på kodarens position över tid)

Eftersom kodaren rapporterar motorns tillstånd kan de användas i beräkningar bakom kulisserna för att få många av rörelse- och avkänningskommandona att fungera inom VEXcode IQ.

Kodning av enskilda motorer

Innan du börjar koda enskilda smarta motorer i VEXcode IQ måste du konfigurera motorn. Enskilda motorer används ofta för ytterligare mekanismer som insug, armar och klor. All information gäller dock fortfarande för andra mekanismer som använder enskilda motorer.

VEXcode IQ-enheternas meny med en lista över anslutna enheter. En smart motor är markerad, vilket indikerar att den kan konfigureras efter att den har valts.

Följ stegen i den här artikeln för att konfigurera din individuella motor i VEXcode IQ.

Med en enda motor konfigurerad kommer kommandon för att styra den motorn att visas i verktygslådan. Du kommer att märka att det finns olika typer av kommandon: väntande och icke-väntande.

Väntande kontra icke-väntande kommandon

Observera att alla bilder här visar block. Alla dessa projekt kan byggas om i Python eller C++ och innehåller samma funktionalitet som block.

VEXcode IQ-blockprojekt som använder väntekommandon för att flytta klomotorn, sedan roboten och sedan armmotorn en efter en. Projektet lyder När den startas, vrida ClawMotorn tills den är stängd i 90 grader. Kör sedan bakåt i 200 mm och vrid sedan ArmMotor till position 180 grader.

Väntekommandon blockerar projektet från att fortsätta tills beteendet är slutfört. Dessa inkluderar kommandon som [Snurra för] och [Snurra till position].

Projektet som visas här använder en Clawbot-mall (2-motorer) och alla kommandon väntar. Så i serie skulle klomotorn stänga 90 grader, roboten skulle köra baklänges, sedan skulle armen snurra upp för att nå position 180 grader.

VEXcode IQ-blockprojekt som använder icke-väntande kommandon för att snurra insugningsmotorn i exakt 2 sekunder. Projektet läser När den startas, snurra in IntakeMotor, vänta 2 sekunder och stoppa sedan IntakeMotor.

Däremot finns det kommandon som inte väntar. Ett kommando som inte väntar kommer att utföra beteendet på obestämd tid eller tills det får en uppmaning att byta till ett annat beteende. Dessa inkluderar kommandon som [Snurra].

Projektet som visas här använder en BaseBot med ett tillagt insug. Här skulle insugningsmotorn börja snurra. Kommandot [Vänta] är ett väntekommando, så insuget fortsätter att snurra tills de 2 sekunderna har gått, och går sedan vidare till nästa kommando i projektet, vilket är ett [Stopp]-kommando. Då skulle motorn sluta snurra.

Motor Timeouts

När man kodar en motor som en del av en arm eller klo är det viktigt att komma ihåg skillnaden mellan väntande och icke-väntande block och hur dessa påverkar robotens rörelse. Motortimeouts låter dig ställa in en tidsgräns för motorn att nå den avsedda målpositionen. Om den inte har nått den positionen när tiden löper ut, kommer motorn att sluta försöka snurra och projektet går vidare till nästa kommando.

VEXcode IQ-blockprojekt som använder ett motortimeout-block för att snurra klomotorn stängd i 90 grader eller tills 2 sekunder har gått innan roboten flyttas. Projektet visar När den startas, sätt ClawMotor-timeout till 2 sekunder och snurra ClawMotor 90 grader för att stänga den. Kör slutligen bakåt i 200 mm.

I det här exemplet är motorns timeout inställd på 2 sekunder. Om klon inte stänger sig till 90 grader inom 2 sekunder, slutar motorn att snurra vid 2-sekundersmarkeringen och går sedan vidare till nästa kommando och kör framåt.

Hjärnskärmen visas med Motor Sensor Dashboard öppen från Enheter-menyn. Information visas om motorn, såsom dess kommando, hastighet, position, ström och motorns Smart Port.

Om du är osäker på hur långt du ska flytta en motor kan du använda sensorpanelen. Instrumentpanelen rapporterar motorns position i grader och varv, så när du rör en motor (som att öppna och stänga en klo) kommer siffrorna att ändras. Använd detta test för att avgöra hur många grader eller rotationer som behövs för att stänga en klo, höja en arm, snurra ett intag etc.

Se dessa artiklar för att lära dig hur du använder sensorpanelen.

Kodning av smarta motorer som en del av en drivlina

Innan du börjar koda en drivlina i VEXcode IQ måste du konfigurera drivlinan inklusive de motorer som används. Motorerna är konfigurerade i drivlinan för att säkerställa att de styrs med samma kommandon som [Kör] och [Kör för].

Vänte- och icke-väntekommandon

Vid kodning av en drivlina finns väntekommandon och icke-väntekommandon tillgängliga för att styra robotens rörelse.

VEXcode IQ-blockprojekt som använder väntekommandon för att köra roboten framåt och sedan svänga höger en efter en. Projektet lyder När du startat, kör framåt i 200 mm och sväng sedan höger i 90 grader.

Väntekommandon blockerar projektet från att fortsätta tills beteendet är slutfört. Dessa inkluderar kommandon som [Kör för] [Sväng för] och [Sväng mot kurs].

Projektet som visas här använder en Clawbot-mall (2-motorer) och alla kommandon väntar. Så i serie skulle roboten köra framåt i 200 millimeter och sedan svänga åt höger, allt med hjälp av drivlinan.

VEXcode IQ blockerar ett projekt som använder ett icke-väntekommando för att köra roboten framåt tills stötfångaren trycks in, och sedan svänger åt höger. Projektet lyder När du startat, kör framåt, vänta tills Bumper3 tryckts in och sväng sedan höger i 90 grader.

Däremot finns det kommandon som inte väntar. Ett kommando som inte väntar kommer att utföra beteendet på obestämd tid eller tills det får en uppmaning att byta till ett annat beteende. Dessa inkluderar kommandon som [Drive].

Projektet som visas här använder en BaseBot. Här skulle roboten köra framåt i all oändlighet tills stötfångarknappen trycktes ner. Sedan skulle projektet gå vidare till nästa kommando och roboten skulle sluta köra och svänga höger i 90 grader.

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

Last Updated: