訊號塔#

介紹#

signaltower 類用於改變燈光並偵測與 CTE 訊號塔的交互作用。

類別建構函數#

signaltower( 
  int32_t  index );

類別析構函數#

摧毀 signaltower 物件並釋放相關資源。

virtual ~signaltower();

參數#

範圍

類型

描述

index

int32_t

訊號塔連接的智慧型端口,記為 PORTx,其中 x 是端口號(例如, PORT1)。

範例#

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

成員功能#

signaltower 類別提供以下成員函數:

  • setColor - 使用各種輸入方法控制訊號塔上的 LED 顏色和狀態。

  • setColors - 分別設定訊號塔上所有 LED 的狀態。

  • setBlink - 根據 LED 的 ID 設定訊號塔上 LED 的閃爍狀態。

  • setBlinkTime - 設定訊號塔上 LED 燈的閃爍間隔時間。

  • enableBlink - 啟用訊號塔上多個 LED 的閃爍功能,並指定它們的 ID。

  • disableBlink - 根據 ID 停用訊號塔上多個 LED 的閃爍。

  • pressing - 返回信號塔保險桿目前是否被按下。

  • pressed - 註冊一個在信號塔保險桿被按下時要呼叫的函數。

  • released - 註冊一個在信號塔保險桿釋放時要呼叫的函數。

setColor#

透過多種輸入方式控制訊號塔上的 LED 燈顏色和狀態。這些燈可用於追蹤機器人在專案中的位置,或顯示何時滿足特定條件。

Available Functions

1 — 使用 vex::color 將訊號塔設定為某種顏色。

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

2 — 使用 32 位元 RGB 和 YW 值設定 LED 顏色。

void setColor( 
  uint32_t rgb, 
  uint32_t yw );

3 — 根據 LED ID 設定單一 LED 的亮度。

void setColor( 
  ledId id, 
  uint32_t value );

4 — 分別設定所有 LED 的亮度等級。

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

Parameters

範圍

類型

描述

color

vex::color

使用的顏色:

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

state

signaltower::state

The state for the LED:

  • on (Default) – Turns the LED on.
  • off – Turns the LED off.
  • blink – Makes the LED blink.

rgb

uint32_t

使用 32 位元值來表示紅色、綠色和藍色 LED 的亮度(例如,紅色開啟 = 0xFF0000,綠色開啟 = 0x00FF00,藍色開啟 = 0x0000FF)。

yw

uint32_t

使用 32 位元值來表示黃色和白色 LED 的亮度(例如,黃色開啟 = 0xFF00 ,白色開啟 = 0x00FF)。

id

ledId

待控制LED的索引:

  • 0 – 紅色
  • 1 – 綠色
  • 2 – 藍色
  • 3 – 白色
  • 4 – 黃色

value

uint32_t

LED 的亮度範圍為 0 到 255,其中 0 為關閉,255 為最大亮度。

r

uint8_t

紅色 LED 的亮度範圍為 0 到 255,其中 0 為關閉,255 為最大亮度。

y

uint8_t

黃色 LED 的亮度範圍為 0 到 255,其中 0 為關閉,255 為最大亮度。

g

uint8_t

綠色 LED 的亮度範圍為 0 到 255,其中 0 為關閉,255 為最大亮度。

b

uint8_t

藍色 LED 的亮度範圍為 0 到 255,其中 0 為關閉,255 為最大亮度。

w

uint8_t

白色 LED 的亮度範圍為 0 到 255,其中 0 為關閉,255 為最大亮度。

Return Values

此函數不傳回值。

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#

分別設定訊號塔上所有 LED 的狀態。這些燈可用於追蹤機器人在專案中的位置,或顯示何時滿足特定條件。

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

Parameters

範圍

類型

描述

rs

signaltower::state

The state of the red LED:

  • on – Turns the LED on.
  • off – Turns the LED off.
  • blink – Makes the LED blink.

ys

signaltower::state

The state of the yellow LED:

  • on – Turns the LED on.
  • off – Turns the LED off.
  • blink – Makes the LED blink.

gs

signaltower::state

The state of the green LED:

  • on – Turns the LED on.
  • off – Turns the LED off.
  • blink – Makes the LED blink.

bs

signaltower::state

The state of the blue LED:

  • on – Turns the LED on.
  • off – Turns the LED off.
  • blink – Makes the LED blink.

ws

signaltower::state

The state of the white LED:

  • on – Turns the LED on.
  • off – Turns the LED off.
  • blink – Makes the LED blink.

Return Values

此函數不傳回值。

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

setBlinkTime#

設定訊號塔上 LED 燈的閃爍間隔時間。

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

Parameters

範圍

類型

描述

onTime

uint32_t

LED閃爍時持續亮起的時間(以毫秒為單位)。最大值為2500毫秒。值為0時,預設值為500毫秒。

offTime

uint32_t

LED 閃爍時熄滅的時間(以毫秒為單位)。最大值為 2500 毫秒。值為 0 時使用 onTime 值。預設值為 0。

Return Values

此函數不傳回值。

pressing#

返回信號塔的保險桿目前是否被按下。這可以用作緊急停止裝置。

Available Functions
bool pressing();

Parameters

此函數沒有參數。

Return Values

返回一個布林值,指示信號塔的保險桿目前是否被按下。

  • true — 信號塔的保險桿目前正被按下。

  • false — 信號塔的保險桿沒有被按下。

pressed#

註冊一個在信號塔保險桿被按下時要呼叫的函數。

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

Parameters

範圍

類型

描述

callback

void (*)(void)

指向一個函數的指針,該函數將在按下保險桿時調用。

Return Values

此函數不傳回值。

Examples

定義回呼函數(在 int main()之外)

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

在 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#

註冊一個在信號塔保險桿釋放時要呼叫的函數。

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

Parameters

範圍

類型

描述

callback

void (*)(void)

指向一個函數的指針,該函數將在保險桿釋放時調用。

Return Values

此函數不傳回值。

Examples

定義回呼函數(在 int main()之外)

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

在 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);
}