사용자 도구

사이트 도구


commands:reference:ictu

문서의 이전 판입니다!


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)는 다음과 같이 읽으면 됩니다.

  • counter_id: 여러 카운터를 구분하는 번호입니다. 같은 작업에는 항상 같은 번호를 사용합니다.
  • CU: 개수를 셀 입력입니다. LOW → HIGH로 바뀌는 순간에 현재값이 1 증가합니다.
  • RESET: true이면 현재값을 0으로 지웁니다. RESET 중에는 CU가 켜져도 세지 않습니다.
  • PV: 목표 개수입니다. 현재값이 이 값 이상이면 반환값이 true가 됩니다.

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

주의사항

  • CULOW → HIGH 변화만 셉니다. 신호가 계속 HIGH이면 한 번만 증가합니다.
  • RESETtrue인 호출에서는 현재값을 0으로 지우며, 같은 호출의 CU는 세지 않습니다.
  • PV는 1 이상의 목표 개수로 설정하는 것이 좋습니다. PV가 0 이하이면 초기값 0도 목표에 도달한 것으로 판단합니다.
  • 센서 펄스가 loop() 실행보다 빠르면 변화를 놓칠 수 있습니다. 빠른 펄스는 제품의 고속 카운터 기능을 사용하십시오.
  • 서로 다른 작업에는 서로 다른 counter_id를 사용하고, 같은 번호를 CTU·CTD·CTUD에 섞어 쓰지 마십시오.
  • 현재 카운트값이 필요할 때만 같은 counter_idIgetCount()를 사용하십시오.

← 내장 명령어 리스트

commands/reference/ictu.1788794257.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki