목차

Ictu()

Ictu()는 입력의 상승 횟수를 세고 설정값에 도달하면 true를 반환합니다.

Ictu 명령어 동작 흐름

bool Ictu(uint8_t counter_id, bool CU, bool RESET, int32_t PV)

명령어

명령어 인수 반환값 동작
Ictu(counter_id, CU, RESET, PV) uint8_t counter_id — 카운터를 구분하는 번호. 같은 작업에는 같은 번호 사용
bool CU — 개수를 셀 입력 신호. LOW에서 HIGH로 바뀔 때 1 증가
bool RESET — true이면 현재 카운트값을 0으로 초기화
int32_t PV — 목표 개수. 현재값이 이 값 이상이면 true 반환
bool 입력의 상승 횟수를 세고 설정값에 도달하면 true를 반환합니다.

처음 사용하는 분을 위한 설명

Ictu()는 센서가 켜져 있는 시간을 재는 명령어가 아니라, 센서가 LOW에서 HIGH로 바뀐 횟수를 세는 명령어입니다. 예를 들어 물건이 센서 앞을 한 번 지나가면 입력이 LOW → HIGH → LOW로 변하고 카운터는 1 증가합니다. 센서가 계속 HIGH인 동안에는 여러 번 세지 않습니다.

호출 형식 Ictu(counter_id, CU, RESET, PV)는 다음과 같이 읽으면 됩니다.

loop()에서 계속 호출해야 입력 변화를 확인할 수 있습니다. 아래 예제에서는 입력 0번 센서로 물건 5개를 세고, 목표에 도달하면 보드의 상태 LED를 켭니다. 입력 1번 리셋 버튼을 누르면 다시 0개부터 셉니다.

예제

const uint8_t COUNTER_ID = 0;
const uint8_t ITEM_SENSOR_PIN = 0;
const uint8_t RESET_BUTTON_PIN = 1;
const uint8_t FULL_LAMP_PIN = LED_BUILTIN;
const int32_t BOX_CAPACITY = 5;
 
void setup() {
  Serial.begin(115200);
}
 
void loop() {
  const bool itemSensor = digitalRead(ITEM_SENSOR_PIN) == HIGH;
  const bool resetButton = digitalRead(RESET_BUTTON_PIN) == HIGH;
  const bool boxFull = Ictu(COUNTER_ID, itemSensor, resetButton, BOX_CAPACITY);  // 입력의 상승 횟수를 세고 설정값에 도달하면 true를 반환합니다.
  digitalWrite(FULL_LAMP_PIN, boxFull ? HIGH : LOW);
 
  static bool previousBoxFull = false;
  if (boxFull && !previousBoxFull) {
    Serial.println(F("5 items counted: box is full"));
  }
  previousBoxFull = boxFull;
}

주의사항

같은 카테고리의 내장 명령어

← 내장 명령어 리스트