Ramię CTE#

Wstęp#

Klasa arm zapewnia sterowanie ramieniem 6-osiowym używanym w komórce roboczej CTE. W VEX EXP C++ ramię 6-osiowe może przesuwać efektor końcowy do pozycji w przestrzeni trójwymiarowej, obracać efektor końcowy, sprawdzać, czy ruchy są możliwe, oraz sterować dołączonymi narzędziami, takimi jak narzędzie z magnesem lub uchwyt na długopis.

Przykłady na tej stronie wykorzystują skonfigurowane ramię 6-osiowe o nazwie Arm.

Konstruktorzy#

arm#

arm tworzy obiekt ramienia 6-osiowego.

Dostępna funkcja

arm(int32_t index);

Parametr

Typ

Opis

index

int32_t

Port Smart Port, do którego podłączony jest 6-osiowy uchwyt, zapisany jako PORTx, gdzie x to numer portu. Na przykład: PORT1.

Przykład

// Create a 6-Axis Arm named Arm on Port 1
arm Arm = arm(PORT1);

Burzyciel#

~arm#

~arm niszczy obiekt arm i uwalnia powiązane zasoby.

Dostępna funkcja

~arm();

Funkcje członkowskie#

Klasa arm zawiera następujące funkcje członkowskie:

Działania — przesuwanie ramienia 6-osiowego do różnych pozycji lub orientacji.

  • moveTo — Przesuwa efektor końcowy do określonej współrzędnej x, y i z.

  • moveInc — Przesuwa efektor końcowy o określoną odległość od jego bieżącej pozycji.

  • moveEndEffectorTo — Obraca efektor końcowy o określony kąt odchylenia, przechyłu i pochylenia.

  • moveEndEffectorInc — Obraca efektor końcowy o określoną wartość odchylenia, przechyłu i pochylenia.

Mutatory — konfiguracja ustawień ruchu, narzędzi i sterowania.

  • setSpeed — Ustawia prędkość ruchu używaną przez ramię 6-osiowe.

  • setEndEffectorType — Ustawia typ efektora końcowego przymocowanego do ramienia 6-osiowego.

  • setEndEffectorMagnet — Włącza lub wyłącza narzędzie do odbioru magnesów.

  • setPenOffset — Ustawia przesunięcie osi Z używane z narzędziem uchwytu pióra.

  • setControlStop — Włącza lub wyłącza zatrzymanie sterowania ramieniem 6-osiowym.

  • setTimeout — Ustawia limit czasu używany przez funkcje ruchu ramienia 6-osiowego.

Gettery — zwracają wartości stanu ruchu, pozycji, orientacji i połączenia.

  • isDone — Zwraca informację, czy ramię 6-osiowe zakończyło ruch.

  • isCrashed — Zwraca informację, czy ramię 6-osiowe uległo awarii podczas ruchu.

  • getX — Zwraca aktualną pozycję x efektora końcowego.

  • getY — Zwraca aktualną pozycję y efektora końcowego.

  • getZ — Zwraca aktualną pozycję z efektora końcowego.

  • getYaw — Zwraca aktualne odchylenie efektora końcowego.

  • getRoll — Zwraca aktualny obrót efektora końcowego.

  • getPitch — Zwraca aktualny skok efektora końcowego.

  • canArmReachTo — Zwraca informację, czy ramię 6-osiowe może osiągnąć określoną pozycję.

  • canArmReachInc — Zwraca informację, czy ramię 6-osiowe może się poruszać o określoną odległość.

  • canEndEffectorReachTo — Zwraca informację, czy efektor końcowy może osiągnąć określoną orientację.

  • canEndEffectorReachInc — Zwraca informację, czy efektor końcowy może obracać się o określoną wartość.

  • isConnected — Zwraca informację, czy ramię 6-osiowe jest połączone z mózgiem EXP.

  • timestamp — Zwraca znacznik czasu ostatniego odebranego pakietu stanu z ramienia 6-osiowego.

  • zainstalowanoinstalled — Zwraca informację, czy ramię 6-osiowe jest podłączone.

Wywołania zwrotne — uruchamiają funkcje, gdy wystąpią zdarzenia arm.

  • controlStopped — Rejestruje funkcję, która ma zostać uruchomiona po włączeniu zatrzymania sterowania.

  • crashed — Rejestruje funkcję, która ma zostać uruchomiona po wykryciu awarii.

Akcje#

moveTo#

moveTo przesuwa ramię 6-osiowe do określonej współrzędnej x, y i z.

Współrzędne x, y i z opisują położenie efektora końcowego w przestrzeni trójwymiarowej. Przed tą funkcją należy użyć canArmReachTo, jeśli położenie docelowe może znajdować się poza dostępnym obszarem roboczym ramienia 6-osiowego.

Dostępna funkcja

bool moveTo(
  double x,
  double y,
  double z,
  bool   waitForCompletion = true
);

Parametr

Typ

Opis

x

double

Współrzędna x pozycji docelowej w milimetrach.

y

double

Współrzędna y pozycji docelowej w milimetrach.

z

double

Współrzędna z pozycji docelowej w milimetrach.

waitForCompletion

bool

Opcjonalnie. true (domyślnie) czeka, aż ruch się zakończy, zanim będzie kontynuowany. false rozpoczyna ruch i natychmiast przechodzi do następnego wiersza kodu.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Ramię 6-osiowe osiągnęło pozycję docelową.

  • false — Ramię 6-osiowe nie osiągnęło pozycji docelowej lub waitForCompletion zostało ustawione na false.

Przykłady

// Move the 6-Axis Arm to (200, 0, 100)
Arm.moveTo(200, 0, 100);

// Start moving, then print the y-position while the arm moves
Arm.moveTo(-100, 200, 100, false);

while (!Arm.isDone()) {
  Brain.Screen.print(Arm.getY());
  Brain.Screen.newLine();
  wait(0.25, seconds);
}

moveInc#

moveInc przesuwa ramię 6-osiowe o określoną odległość od jego bieżącej pozycji wzdłuż osi x, y i z.

Użyj tej funkcji, aby przesunąć się względem miejsca, w którym obecnie znajduje się efektor końcowy. Użyj canArmReachInc przed tą funkcją, jeśli ruch może umieścić ramię 6-osiowe poza jego dostępnym obszarem roboczym.

Dostępna funkcja

bool moveInc(
  double x,
  double y,
  double z,
  bool   waitForCompletion = true
);

Parametr

Typ

Opis

x

double

Odległość, jaką należy pokonać wzdłuż osi x, podana w milimetrach.

y

double

Odległość, jaką należy pokonać wzdłuż osi Y, podana w milimetrach.

z

double

Odległość, jaką należy pokonać wzdłuż osi Z, podana w milimetrach.

waitForCompletion

bool

Opcjonalnie. true (domyślnie) czeka, aż ruch się zakończy, zanim będzie kontynuowany. false rozpoczyna ruch i natychmiast przechodzi do następnego wiersza kodu.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Ramię 6-osiowe osiągnęło żądaną pozycję.

  • false — Ramię 6-osiowe nie osiągnęło żądanej pozycji lub waitForCompletion zostało ustawione na false.

Przykład

// Move the 6-Axis Arm 100 millimeters along the y-axis
Arm.moveInc(0, 100, 0);

moveEndEffectorTo#

moveEndEffectorTo obraca efektor końcowy ramienia 6-osiowego o określony kąt odchylenia, przechyłu i pochylenia.

Orientacja opisuje sposób obracania efektora końcowego. yaw oznacza obrót wokół osi z, roll oznacza obrót wokół osi x, a pitch.

Dostępna funkcja

bool moveEndEffectorTo(
  double yaw,
  double roll = 0,
  double pitch = 0,
  bool   waitForCompletion = true
);

Parametr

Typ

Opis

yaw

double

Docelowy kąt odchylenia w stopniach.

roll

double

Opcjonalnie. Docelowy kąt przechyłu w stopniach. Wartość domyślna to 0.

pitch

double

Opcjonalnie. Docelowy kąt nachylenia w stopniach. Wartość domyślna to 0.

waitForCompletion

bool

Opcjonalnie. true (domyślnie) czeka, aż ruch się zakończy, zanim będzie kontynuowany. false rozpoczyna ruch i natychmiast przechodzi do następnego wiersza kodu.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Efektor końcowy osiągnął orientację docelową.

  • false — Efektor końcowy nie osiągnął orientacji docelowej lub waitForCompletion zostało ustawione na false.

Przykład

// Rotate the end effector to 90 degrees of roll
Arm.moveEndEffectorTo(0, 90, 0);

moveEndEffectorInc#

moveEndEffectorInc obraca efektor końcowy ramienia 6-osiowego o określoną wartość odchylenia, przechyłu i pochylenia od jego bieżącej orientacji.

Użyj tej funkcji, aby obrócić się względem aktualnego odchylenia, pochylenia lub pochylenia efektora końcowego.

Dostępna funkcja

bool moveEndEffectorInc(
  double yaw,
  double roll = 0,
  double pitch = 0,
  bool   waitForCompletion = true
);

Parametr

Typ

Opis

yaw

double

Zmiana odchylenia w stopniach.

roll

double

Opcjonalnie. Zmiana przechyłu w stopniach. Wartość domyślna to 0.

pitch

double

Opcjonalnie. Zmiana wysokości dźwięku w stopniach. Domyślnie 0.

waitForCompletion

bool

Opcjonalnie. true (domyślnie) czeka, aż ruch się zakończy, zanim będzie kontynuowany. false rozpoczyna ruch i natychmiast przechodzi do następnego wiersza kodu.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Efektor końcowy osiągnął żądaną orientację.

  • false — Efektor końcowy nie osiągnął żądanej orientacji lub waitForCompletion zostało ustawione na false.

Przykład

// Rotate the end effector -50 degrees in pitch
Arm.moveEndEffectorInc(0, 0, -50);

Mutatory#

setSpeed#

setSpeed ustawia prędkość ruchu używaną przez ramię 6-osiowe.

Dostępna funkcja

void setSpeed(uint32_t speed);

Parametr

Typ

Opis

speed

uint32_t

Prędkość, z jaką powinno poruszać się ramię 6-osiowe, w milimetrach na sekundę.

Wartość zwracana

Ta funkcja nie zwraca wartości.

Przykład

// Set the 6-Axis Arm movement speed
Arm.setSpeed(100);

setEndEffectorType#

setEndEffectorType ustawia typ efektora końcowego przymocowanego do ramienia 6-osiowego.

Po zmianie typu chwytaka ramię 6-osiowe automatycznie dostosowuje przesunięcie w osi Z do wybranego narzędzia.

Dostępna funkcja

bool setEndEffectorType(
  endEffectorType type,
  bool            waitForCompletion = true
);

Parametr

Typ

Opis

type

endEffectorType

Narzędzie przymocowane do ramienia 6-osiowego: magnet (narzędzie do podnoszenia magnesu) lub pen (narzędzie do trzymania długopisu).

waitForCompletion

bool

Opcjonalnie. true (domyślnie) czeka na zakończenie zmiany przed kontynuowaniem. false rozpoczyna zmianę i natychmiast przechodzi do następnego wiersza kodu.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Żądany typ został ustawiony.

  • false — Żądany typ nie został ustawiony lub waitForCompletion został ustawiony na false.

Przykład

// Set the end effector type to the Magnet Pickup Tool
Arm.setEndEffectorType(magnet);

setEndEffectorMagnet#

setEndEffectorMagnet włącza lub wyłącza narzędzie do pomiaru magnesu.

Dostępna funkcja

void setEndEffectorMagnet(bool enabled);

Parametr

Typ

Opis

enabled

bool

true umożliwia magnesowi podnoszenie i przytrzymywanie obiektów. false wyłącza magnes i upuszcza trzymane obiekty.

Wartość zwracana

Ta funkcja nie zwraca wartości.

Przykład

// Pick up objects and then drop them
Arm.setEndEffectorType(magnet);
Arm.setEndEffectorMagnet(true);
wait(2, seconds);
Arm.setEndEffectorMagnet(false);

setPenOffset#

setPenOffset ustawia przesunięcie osi Z używane, gdy uchwyt na pióro jest przymocowany do ramienia 6-osiowego.

Przed użyciem tej funkcji ustaw typ efektora końcowego na pen . Jeśli narzędzie uchwytu pióra nie jest wybrane, ta funkcja nie będzie działać.

Przesunięcie pióra to odległość od górnej części uchwytu pióra do końcówki markera suchościeralnego. Dodatnia wartość osi Z przesuwa przesunięcie w górę od punktu mocowania narzędzia.

Dostępna funkcja

void setPenOffset(double zOffset);

Parametr

Typ

Opis

zOffset

double

Wartość przesunięcia pióra w milimetrach.

Wartość zwracana

Ta funkcja nie zwraca wartości.

Przykład

// Set the end effector type to the Pen Holder Tool and set the pen offset
Arm.setEndEffectorType(pen);
Arm.setPenOffset(25);

setControlStop#

setControlStop włącza lub wyłącza zatrzymanie sterowania ramieniem 6-osiowym.

Po włączeniu zatrzymania sterowania ramię 6-osiowe natychmiast zatrzymuje ruch i zapobiega dalszym ruchom liniowym lub przegubowym.

Dostępna funkcja

void setControlStop(bool state = true);

Parametr

Typ

Opis

state

bool

Opcjonalnie. true (domyślnie) włącza zatrzymanie sterowania i zapobiega dalszym ruchom liniowym lub stawowym. false wyłącza zatrzymanie sterowania.

Wartość zwracana

Ta funkcja nie zwraca wartości.

Przykład

// Stop the 6-Axis Arm and prevent further movement
Arm.setControlStop();

setTimeout#

setTimeout ustawia wartość limitu czasu używaną podczas przesuwania ramienia 6-osiowego.

Jeśli ruch nie zakończy się przed upływem limitu czasu, projekt przechodzi do następnego wiersza kodu.

Dostępna funkcja

void setTimeout(
  int32_t   timeout,
  timeUnits units
);

Parametr

Typ

Opis

timeout

int32_t

Nowa wartość limitu czasu.

units

timeUnits

Jednostka czasu: sec (sekundy) lub msec (milisekundy).

Wartość zwracana

Ta funkcja nie zwraca wartości.

Przykład

// Set the 6-Axis Arm timeout to 2 seconds
Arm.setTimeout(2, sec);

Getters#

isDone#

isDone zwraca informację o tym, czy ramię 6-osiowe zakończyło ruch.

Funkcja ta jest użyteczna po wywołaniu funkcji ruchu z wartością waitForCompletion ustawioną na false.

Dostępna funkcja

bool isDone();

Parametry

Ta funkcja nie ma parametrów.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Ramię 6-osiowe zakończyło ruch.

  • false — Ramię 6-osiowe nadal się porusza.

Przykład

// Display the 6-Axis Arm's y-position while it moves
Arm.moveTo(-100, 200, 100, false);

while (!Arm.isDone()) {
  Brain.Screen.print(Arm.getY());
  Brain.Screen.newLine();
  wait(0.25, seconds);
}

isCrashed#

isCrashed zwraca informację, czy ramię 6-osiowe uległo awarii podczas ruchu.

W przypadku wykrycia zderzenia, ramię 6-osiowe zatrzymuje ruch silnika i może sprawiać wrażenie bezwładnego. Zmniejsza to obciążenie i pomaga chronić silniki przed przypadkowym uszkodzeniem.

Dostępna funkcja

bool isCrashed();

Parametry

Ta funkcja nie ma parametrów.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Ramię 6-osiowe uległo awarii.

  • false — Ramię 6-osiowe nie uległo awarii.

Przykład

// Quickly move to a new location
Arm.setSpeed(100);
Arm.moveTo(-40, 250, 40, false);

// While moving, check for a crash
while (true) {
  if (Arm.isCrashed()) {
    // Indicate a crash with the Signal Tower and Brain screen
    Brain.Screen.print("Crash Detected");
    SignalTower6.setColor(signaltower::green, signaltower::off);
    SignalTower6.setColor(signaltower::red, signaltower::on);
    break;
  }

  wait(5, msec);
}

getX#

getX zwraca aktualną pozycję x efektora końcowego w milimetrach.

Użyj tej funkcji, aby odczytać aktualne położenie efektora końcowego na osi x.

Dostępna funkcja

float getX();

Parametry

Ta funkcja nie ma parametrów.

Wartość zwracana

Zwraca wartość zmiennoprzecinkową float reprezentującą położenie x efektora końcowego w milimetrach.

Przykład

// Print the current x position of the 6-Axis Arm
Brain.Screen.print(Arm.getX());

getY#

getY zwraca aktualną pozycję y efektora końcowego w milimetrach.

Użyj tej funkcji, aby odczytać aktualne położenie efektora końcowego na osi Y.

Dostępna funkcja

float getY();

Parametry

Ta funkcja nie ma parametrów.

Wartość zwracana

Zwraca wartość zmiennoprzecinkową float reprezentującą położenie y efektora końcowego w milimetrach.

Przykład

// Print the current y position of the 6-Axis Arm
Brain.Screen.print(Arm.getY());

getZ#

getZ zwraca aktualną pozycję z efektora końcowego w milimetrach.

Użyj tej funkcji, aby odczytać aktualne położenie efektora końcowego wzdłuż osi Z.

Dostępna funkcja

float getZ();

Parametry

Ta funkcja nie ma parametrów.

Wartość zwracana

Zwraca wartość zmiennoprzecinkową float reprezentującą położenie z efektora końcowego w milimetrach.

Przykład

// Print the current z position of the 6-Axis Arm
Brain.Screen.print(Arm.getZ());

getYaw#

getYaw zwraca aktualne odchylenie efektora końcowego w stopniach.

Dostępna funkcja

float getYaw();

Parametry

Ta funkcja nie ma parametrów.

Wartość zwracana

Zwraca wartość zmiennoprzecinkową float reprezentującą bieżące odchylenie efektora końcowego w stopniach.

Przykład

// Print the current yaw of the end effector
Brain.Screen.print(Arm.getYaw());

getRoll#

getRoll zwraca aktualny obrót efektora końcowego w stopniach.

Dostępna funkcja

float getRoll();

Parametry

Ta funkcja nie ma parametrów.

Wartość zwracana

Zwraca wartość zmiennoprzecinkową float reprezentującą bieżący obrót efektora końcowego w stopniach.

Przykład

// Print the current roll of the end effector
Brain.Screen.print(Arm.getRoll());

getPitch#

getPitch zwraca aktualny skok efektora końcowego w stopniach.

Dostępna funkcja

float getPitch();

Parametry

Ta funkcja nie ma parametrów.

Wartość zwracana

Zwraca wartość zmiennoprzecinkową float reprezentującą aktualny skok efektora końcowego w stopniach.

Przykład

// Print the current pitch of the end effector
Brain.Screen.print(Arm.getPitch());

canArmReachTo#

canArmReachTo zwraca informację, czy ramię 6-osiowe może przesunąć efektor końcowy do określonej współrzędnej x, y i z.

Użyj tej funkcji, aby sprawdzić pozycję docelową przed użyciem moveTo.

Dostępna funkcja

bool canArmReachTo(
  double x,
  double y,
  double z
);

Parametr

Typ

Opis

x

double

Współrzędna x pozycji docelowej w milimetrach.

y

double

Współrzędna y pozycji docelowej w milimetrach.

z

double

Współrzędna z pozycji docelowej w milimetrach.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Ramię 6-osiowe może osiągnąć żądaną pozycję.

  • false — Ramię 6-osiowe nie może osiągnąć żądanej pozycji.

Przykład

// Move the 6-Axis Arm to (100, -20, 50) if it can reach
if (Arm.canArmReachTo(100, -20, 50)) {
  Arm.moveTo(100, -20, 50);
}

canArmReachInc#

canArmReachInc zwraca informację, czy ramię 6-osiowe może przesunąć efektor końcowy o określoną odległość x, y i z od jego bieżącej pozycji.

Użyj tej funkcji, aby sprawdzić względny ruch przed użyciem moveInc.

Dostępna funkcja

bool canArmReachInc(
  double x,
  double y,
  double z
);

Parametr

Typ

Opis

x

double

Odległość, jaką należy pokonać wzdłuż osi x, podana w milimetrach.

y

double

Odległość, jaką należy pokonać wzdłuż osi Y, podana w milimetrach.

z

double

Odległość, jaką należy pokonać wzdłuż osi Z, podana w milimetrach.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Ramię 6-osiowe może wykonać żądany ruch.

  • false — Ramię 6-osiowe nie może wykonać żądanego ruchu.

Przykład

// Increment the 6-Axis Arm 100 mm along the x-axis if possible
if (Arm.canArmReachInc(100, 0, 0)) {
  Arm.moveInc(100, 0, 0);
}

canEndEffectorReachTo#

canEndEffectorReachTo zwraca informację, czy efektor końcowy może obracać się do określonego odchylenia, przechyłu i pochylenia.

Użyj tej funkcji, aby sprawdzić orientację celu przed użyciem moveEndEffectorTo.

Dostępna funkcja

bool canEndEffectorReachTo(
  double yaw,
  double roll = 0,
  double pitch = 0
);

Parametr

Typ

Opis

yaw

double

Docelowy kąt odchylenia w stopniach.

roll

double

Opcjonalnie. Docelowy kąt przechyłu w stopniach. Wartość domyślna to 0.

pitch

double

Opcjonalnie. Docelowy kąt nachylenia w stopniach. Wartość domyślna to 0.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Efektor końcowy może osiągnąć żądaną orientację.

  • false — Efektor końcowy nie może osiągnąć żądanej orientacji.

Przykład

// Rotate the end effector to 90 degrees of roll if possible
if (Arm.canEndEffectorReachTo(0, 90, 0)) {
  Arm.moveEndEffectorTo(0, 90, 0);
}

canEndEffectorReachInc#

canEndEffectorReachInc zwraca informację, czy efektor końcowy może obracać się o określoną wartość odchylenia, przechyłu i pochylenia od bieżącej orientacji.

Użyj tej funkcji, aby sprawdzić względny ruch orientacji przed użyciem moveEndEffectorInc.

Dostępna funkcja

bool canEndEffectorReachInc(
  double yaw,
  double roll = 0,
  double pitch = 0
);

Parametr

Typ

Opis

yaw

double

Zmiana odchylenia w stopniach.

roll

double

Opcjonalnie. Zmiana przechyłu w stopniach. Wartość domyślna to 0.

pitch

double

Opcjonalnie. Zmiana wysokości dźwięku w stopniach. Domyślnie 0.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Efektor końcowy może wykonać żądany obrót.

  • false — Efektor końcowy nie może wykonać żądanego obrotu.

Przykład

// Increment the end effector by 10 degrees of pitch if possible
if (Arm.canEndEffectorReachInc(0, 0, 10)) {
  Arm.moveEndEffectorInc(0, 0, 10);
}

isConnected#

isConnected zwraca informację, czy ramię 6-osiowe jest połączone z mózgiem EXP.

Jest to funkcja zgodności, która zwraca tę samą wartość co installed.

Dostępna funkcja

bool isConnected();

Parametry

Ta funkcja nie ma parametrów.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Ramię 6-osiowe jest połączone z mózgiem EXP.

  • false — Ramię 6-osiowe nie jest połączone z mózgiem EXP.

Przykład

// Print whether the 6-Axis Arm is connected
Brain.Screen.print(Arm.isConnected());

timestamp#

timestamp zwraca znacznik czasu ostatniego odebranego pakietu stanu z ramienia 6-osiowego.

Dostępna funkcja

uint32_t timestamp();

Parametry

Ta funkcja nie ma parametrów.

Wartość zwracana

Zwraca znacznik czasu ostatniego pakietu stanu jako uint32_t w milisekundach.

installed#

installed zwraca informację, czy ramię 6-osiowe jest podłączone.

Dostępna funkcja

bool installed();

Parametry

Ta funkcja nie ma parametrów.

Wartość zwracana

Zwraca wartość logiczną.

  • true — Ramię 6-osiowe jest podłączone.

  • false — Ramię 6-osiowe nie jest podłączone.

Wywołania zwrotne#

controlStopped#

controlStopped rejestruje funkcję, która jest uruchamiana po włączeniu funkcji zatrzymania sterowania.

Dostępna funkcja

void controlStopped(void (* callback)(void));

Parametr

Typ

Opis

callback

void (*)(void)

Funkcja uruchamiana po włączeniu funkcji zatrzymania sterowania.

Wartość zwracana

Ta funkcja nie zwraca wartości.

Przykład

// Called when the 6-Axis Arm is control stopped
void onControlStopped() {
  Brain.Screen.print("Arm control stopped");
}

int main() {
  vexcodeInit();

  Arm.controlStopped(onControlStopped);
}

crashed#

crashed rejestruje funkcję uruchamianą, gdy ramię 6-osiowe ulegnie awarii podczas ruchu.

W przypadku wykrycia zderzenia, ramię 6-osiowe zatrzymuje ruch silnika i może sprawiać wrażenie bezwładnego. Zmniejsza to obciążenie i pomaga chronić silniki przed przypadkowym uszkodzeniem.

Dostępna funkcja

void crashed(void (* callback)(void));

Parametr

Typ

Opis

callback

void (*)(void)

Funkcja uruchamiana w przypadku, gdy ramię 6-osiowe ulegnie uszkodzeniu podczas ruchu.

Wartość zwracana

Ta funkcja nie zwraca wartości.

Przykład

// Called when the 6-Axis Arm crashes while moving
void onArmCrashed() {
  Brain.Screen.print("Crash detected");
  SignalTower6.setColor(signaltower::green, signaltower::off);
  SignalTower6.setColor(signaltower::red, signaltower::on);
}

int main() {
  vexcodeInit();

  Arm.crashed(onArmCrashed);
}