Wieża sygnałowa#

Wstęp#

Klasa wieży sygnalizacyjnej signaltower służy do zmiany świateł i wykrywania interakcji z wieżą sygnalizacyjną CTE.

Konstruktory klas#

signaltower( 
  int32_t  index );

Destruktor klasy#

Niszczy obiekt wieży sygnałowej signaltower i uwalnia powiązane zasoby.

virtual ~signaltower();

Parametry#

Parametr

Typ

Opis

index

int32_t

Inteligentny port, do którego podłączona jest wieża sygnałowa, zapisany jako PORTx, gdzie x to numer portu (na przykład PORT1).

Przykłady#

// Create a signal tower instance in Port 1
signaltower SignalTower = signaltower(PORT1);

Funkcje członkowskie#

Klasa signaltower udostępnia następujące funkcje członkowskie:

  • setColor - Steruje kolorami i stanami diod LED na wieży sygnalizacyjnej przy użyciu różnych metod wprowadzania danych.

  • setColors - Ustawia stan wszystkich diod LED na wieży sygnalizacyjnej indywidualnie.

  • setBlink - Ustawia stan migania diody LED na wieży sygnalizacyjnej na podstawie identyfikatora diody LED.

  • setBlinkTime - Ustawia czas pomiędzy mignięciami diod LED na wieży sygnalizacyjnej.

  • enableBlink - Włącza miganie wielu diod LED na wieży sygnalizacyjnej według ich identyfikatorów.

  • disableBlink - Wyłącza miganie wielu diod LED na wieży sygnalizacyjnej według ich identyfikatorów.

  • naciśnięcie - Zwraca informację, czy zderzak wieży sygnalizacyjnej jest aktualnie wciśnięty.

  • naciśnięty – rejestruje funkcję, która ma zostać wywołana po naciśnięciu zderzaka wieży sygnalizacyjnej.

  • released – Rejestruje funkcję, która ma zostać wywołana po zwolnieniu zderzaka wieży sygnalizacyjnej.

setColor#

Steruje kolorami i stanami diod LED na wieży sygnalizacyjnej za pomocą różnych metod wprowadzania danych. Diody te mogą służyć do śledzenia, na jakim etapie projektu znajduje się robot, lub do sygnalizowania spełnienia określonych warunków.

Available Functions

1 — Ustawia kolor wieży sygnałowej za pomocą vex::color.

void setColor( 
  vex::color         color, 
  signaltower::state state = signaltower::state::on );

2 — Ustawia kolory diod LED przy użyciu 32-bitowych wartości RGB i YW.

void setColor( 
  uint32_t rgb, 
  uint32_t yw );

3 — Ustawia indywidualną jasność diody LED na podstawie identyfikatora LED.

void setColor( 
  ledId id, 
  uint32_t value );

4 — Ustawia poziomy jasności dla wszystkich diod LED indywidualnie.

void setColor( 
  uint8_t r, 
  uint8_t y, 
  uint8_t g, 
  uint8_t b, 
  uint8_t w );

Parameters

Parametr

Typ

Opis

color

vex::color

Kolor do użycia:

  • red
  • yellow
  • green
  • blue
  • white
  • all

state

signaltower::state

Stan diody LED:

  • on (domyślna) – włącza diodę LED.
  • off – wyłącza diodę LED.
  • blink – powoduje miganie diody LED.

rgb

uint32_t

Jasność czerwonej, zielonej i niebieskiej diody LED wyrażona wartością 32-bitową (np. czerwona = 0xFF0000, zielona = 0x00FF00, a niebieska = 0x0000FF).

yw

uint32_t

Jasność żółtej i białej diody LED wyrażona wartością 32-bitową (np. żółty = 0xFF00 , a biały = 0x00FF).

id

ledId

Indeks diody LED do sterowania:

  • 0 – czerwony
  • 1 – zielony
  • 2 – niebieski
  • 3 – biały
  • 4 – żółty

value

uint32_t

Jasność diody LED można regulować w zakresie od 0 do 255, przy czym 0 oznacza wyłączenie, a 255 maksymalną jasność.

r

uint8_t

Jasność czerwonej diody LED można regulować w zakresie od 0 do 255, przy czym 0 oznacza wyłączenie, a 255 maksymalną jasność.

y

uint8_t

Jasność żółtej diody LED waha się od 0 do 255, przy czym 0 oznacza wyłączenie, a 255 maksymalną jasność.

g

uint8_t

Jasność zielonej diody LED waha się od 0 do 255, przy czym 0 oznacza wyłączenie, a 255 maksymalną jasność.

b

uint8_t

Jasność niebieskiej diody LED można regulować w zakresie od 0 do 255, przy czym 0 oznacza wyłączenie, a 255 maksymalną jasność.

w

uint8_t

Jasność białej diody LED waha się od 0 do 255, przy czym 0 oznacza wyłączenie, a 255 maksymalną jasność.

Return Values

Ta funkcja nie zwraca wartości.

Examples
// Set the Signal Tower to start blinking blue
SignalTower.setColor(vex::color::blue, signaltower::blink);

// Set the red, blue and white LEDs using hex values
SignalTower.setColor(0xFF00FF, 0x00FF);

// Set the green LED to full brightness by ID
SignalTower.setColor(1, 255);

// Set all LEDs to full brightness
SignalTower.setColor(255, 255, 255, 255, 255);

setColors#

Ustawia indywidualnie stan wszystkich diod LED na wieży sygnalizacyjnej. Diody te mogą służyć do śledzenia etapu projektu, na którym znajduje się robot, lub do sygnalizowania spełnienia określonych warunków.

Available Functions
void setColors( 
  signaltower::state rs, 
  signaltower::state ys, 
  signaltower::state gs, 
  signaltower::state bs, 
  signaltower::state ws );

Parameters

Parametr

Typ

Opis

rs

signaltower::state

Stan czerwonej diody LED:

  • on – włącza diodę LED.
  • off – wyłącza diodę LED.
  • blink – powoduje miganie diody LED.

ys

signaltower::state

Stan żółtej diody LED:

  • on – włącza diodę LED.
  • off – wyłącza diodę LED.
  • blink – powoduje miganie diody LED.

gs

signaltower::state

Stan zielonej diody LED:

  • on – włącza diodę LED.
  • off – wyłącza diodę LED.
  • blink – powoduje miganie diody LED.

bs

signaltower::state

Stan niebieskiej diody LED:

  • on – włącza diodę LED.
  • off – wyłącza diodę LED.
  • blink – powoduje miganie diody LED.

ws

signaltower::state

Stan białej diody LED:

  • on – włącza diodę LED.
  • off – wyłącza diodę LED.
  • blink – powoduje miganie diody LED.

Return Values

Ta funkcja nie zwraca wartości.

Examples
// Turn on all LEDs
SignalTower.setColors(signaltower::on, signaltower::on, signaltower::on, signaltower::on, signaltower::on);

setBlinkTime#

Ustawia czas pomiędzy mignięciami diod LED na wieży sygnalizacyjnej.

Available Functions
void setBlinkTime( 
  uint32_t onTime, 
  uint32_t offTime = 0 );

Parameters

Parametr

Typ

Opis

onTime

uint32_t

Czas w milisekundach, przez jaki dioda LED powinna migać. Maksymalnie 2500 ms. Wartość 0 oznacza domyślnie 500 ms.

offTime

uint32_t

Czas w milisekundach, przez który dioda LED powinna być wyłączona podczas migania. Maksymalnie 2500 ms. Wartość 0 powoduje użycie wartości onTime. Wartość domyślna to 0.

Return Values

Ta funkcja nie zwraca wartości.

pressing#

Zwraca informację, czy zderzak wieży sygnalizacyjnej jest aktualnie wciśnięty. Można go użyć jako awaryjnego zatrzymania.

Available Functions
bool pressing();

Parameters

Ta funkcja nie ma parametrów.

Return Values

Zwraca wartość logiczną wskazującą, czy zderzak wieży sygnalizacyjnej jest aktualnie wciśnięty.

  • true — Zderzak wieży sygnałowej jest obecnie naciskany.

  • false — Zderzak wieży sygnałowej nie jest wciśnięty.

pressed#

Rejestruje funkcję, która ma zostać wywołana po naciśnięciu zderzaka wieży sygnalizacyjnej.

Available Functions
void pressed( void (* callback)(void) );

Parameters

Parametr

Typ

Opis

callback

void (*)(void)

Wskaźnik do funkcji, która zostanie wywołana po naciśnięciu zderzaka.

Return Values

Ta funkcja nie zwraca wartości.

Examples

Zdefiniuj funkcję wywołania zwrotnego (poza int main())

// Display a message when bumper is pressed
void towerBumperPressed() {
  Brain.Screen.print("tower bumper pressed");
}

Zarejestruj wywołanie zwrotne wewnątrz int main()

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

  // Run towerBumperPressed when the tower bumper 
  // is pressed
  SignalTower.pressed(towerBumperPressed);
}

released#

Rejestruje funkcję, która ma zostać wywołana po zwolnieniu zderzaka wieży sygnałowej.

Available Functions
void released( void (* callback)(void) );

Parameters

Parametr

Typ

Opis

callback

void (*)(void)

Wskaźnik do funkcji, która zostanie wywołana po zwolnieniu zderzaka.

Return Values

Ta funkcja nie zwraca wartości.

Examples

Zdefiniuj funkcję wywołania zwrotnego (poza int main())

// Display a message when bumper is pressed
void towerBumperReleased() {
  Brain.Screen.print("tower bumper pressed");
}

Zarejestruj wywołanie zwrotne wewnątrz int main()

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

  // Run towerBumperReleased when the tower bumper 
  // is released
  SignalTower.released(towerBumperReleased);
}