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.
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.
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.
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.
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.
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.
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.
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.