단추#

소개#

button 클래스는 controller 클래스의 파생 클래스입니다. 컨트롤러 버튼 상태 및 버튼 이벤트 콜백에 대한 액세스를 제공합니다.

button 객체는 controller 객체를 통해 접근됩니다. 직접 생성되지는 않습니다.

IQ 2세대 컨트롤러의 앞면과 뒷면 모습. 모든 버튼이 노란색으로 강조 표시되어 있다. 컨트롤러 표면에는 왼쪽 위와 오른쪽 위 모서리에 두 개의 조이스틱 버튼이 있으며, 왼쪽 조이스틱 아래에는 E 위/아래 버튼이, 오른쪽 조이스틱 아래에는 F 위/아래 버튼이 있다. 컨트롤러 뒷면에는 왼쪽과 오른쪽에 각각 L 위/아래 버튼과 R 위/아래 버튼이 있다.

입장#

controller 클래스는 다음과 같은 버튼 객체를 제공합니다. 각 객체는 button 클래스의 인스턴스입니다.

물체

사용 예시

설명

ButtonEDown

Controller.ButtonEDown.pressing()

E ▼ 버튼.

ButtonEUp

Controller.ButtonEUp.pressing()

E ▲ 버튼.

ButtonFDown

Controller.ButtonFDown.pressing()

F ▼ 버튼.

ButtonFUp

Controller.ButtonFUp.pressing()

F ▲ 버튼.

ButtonL3

Controller.ButtonL3.pressing()

왼쪽 조이스틱 버튼. IQ(2세대) 컨트롤러에만 해당됩니다.

ButtonLDown

Controller.ButtonLDown.pressing()

L ▼ 버튼.

ButtonLUp

Controller.ButtonLUp.pressing()

L ▲ 버튼.

ButtonR3

Controller.ButtonR3.pressing()

조이스틱 오른쪽 버튼. IQ(2세대) 컨트롤러에만 해당됩니다.

ButtonRDown

Controller.ButtonRDown.pressing()

R ▼ 버튼.

ButtonRUp

Controller.ButtonRUp.pressing()

R ▲ 버튼.

메모#

  • button 멤버 함수를 사용하기 전에 controller 객체를 생성하십시오.

  • ButtonL3 및 ButtonR3 은 IQ(2세대) 컨트롤러에서만 사용할 수 있습니다.

// Create a controller object
controller Controller = controller();

회원 기능#

button 클래스는 다음과 같은 멤버 함수를 포함합니다.

게터 — 버튼 상태를 읽습니다.

콜백 함수 — 버튼 이벤트 발생 시 실행되는 함수입니다.

  • pressed — 버튼이 눌렸을 때 실행될 함수를 등록합니다.

  • released — 버튼이 해제될 때 실행될 함수를 등록합니다.

얻는 사람#

pressing#

pressing 표시되고 버튼이 현재 눌러져 있는지 여부를 반환합니다.

사용 가능한 기능

bool pressing() const;

매개변수

이 함수는 매개변수를 받지 않습니다.

반환 값

불리언 값을 반환합니다.

  • true — 버튼이 눌리고 있습니다.

  • false — 버튼이 눌리지 않았습니다.

예

// Turn right while R Up is pressed
while (true) {
  if (Controller.ButtonRUp.pressing()) {
    Drivetrain.turn(right);
  }
  else {
    Drivetrain.stop();
  }

  wait(20, msec);
}

콜백#

pressed#

pressed 을 눌렀을 때 실행되는 함수를 등록합니다.

사용 가능한 기능

void pressed(void (* callback)(void)) const;

매개변수

유형

설명

callback

void (*)(void)

버튼을 눌렀을 때 실행되는 함수입니다.

반환 값

이 함수는 값을 반환하지 않습니다.

예

콜백 함수를 main 외부에서 정의하십시오.

// Drive forward when F Up is pressed
void driveForward() {
  Drivetrain.driveFor(forward, 100, mm);
}

main 내부에 콜백을 등록합니다.

int main() {
  vexcodeInit();

  // Run driveForward when F Up is pressed
  Controller.ButtonFUp.pressed(driveForward);
}

released#

released 을 놓았을 때 실행되는 함수를 등록합니다.

사용 가능한 기능

void released(void (* callback)(void)) const;

매개변수

유형

설명

callback

void (*)(void)

버튼에서 손을 떼면 실행되는 함수입니다.

반환 값

이 함수는 값을 반환하지 않습니다.

예

콜백 함수를 main 외부에서 정의하십시오.

// Stop the drivetrain when F Up is released
void stopDriving() {
  Drivetrain.stop();
}

main 내부에 콜백을 등록합니다.

int main() {
  vexcodeInit();

  // Run stopDriving when F Up is released
  Controller.ButtonFUp.released(stopDriving);
}